Python代码转换成c语言代码

1.卡牌 把下面的python代码转换成C语言代码


try:
    z=1
    while True:
        a,b=map(int,input().split(" "))
        list1=list()
        list1=list(map(int,input().split(" ")))
        list2=list()
        list2=list(map(int,input().split(" ")))
        list1.sort()
        list3=list()
        for i in range(len(list2)):
            for j in range(len(list1)):
                if list2[i]==list1[j]:
                    list3.append(j+1)
                    break
            else:
                list3.append(0)
        print("Case #{}:".format(z))
        for i in range(len(list3)):
            if list3[i]==0:
                print("{} not found".format(list2[i]))
                continue
            print("{} found at {}".format(list2[i],list3[i]))
        z+=1
except:
    pass

img

2.卡牌二
按照此题的具体要求,根据上述代码改编,写出完整的c语言代码

img

将你的关于实现卡牌效果的python代码转为C语言代码如下:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int z=1;
    while (1) {
        int a, b, i, j;
        if (scanf("%d %d", &a, &b) != 2) {
            break;
        }
        int* list1 = malloc(sizeof(int) * a);
        int* list2 = malloc(sizeof(int) * b);
        int* list3 = malloc(sizeof(int) * b);
        for (i = 0; i < a; i++) {
            if (scanf("%d", &list1[i]) != 1) {
                free(list1);
                free(list2);
                free(list3);
                exit(0);
            }
        }
        for (i = 0; i < b; i++) {
            if (scanf("%d", &list2[i]) != 1) {
                free(list1);
                free(list2);
                free(list3);
                exit(0);
            }
        }
        for (i = 0; i < a; i++) {
            for (j = i + 1; j < a; j++){
                if (list1[i] > list1[j]) {
                    int temp = list1[i];
                    list1[i] = list1[j];
                    list1[j] = temp;
                }
            }
        }
        for (i = 0; i < b; i++) {
            int flag = 0;
            for (j = 0; j < a; j++) {
                if (list2[i] == list1[j]) {
                    list3[i] = j+1;
                    flag = 1;
                    break;
                }
            }
            if (!flag) {
                list3[i] = 0;
            }
        }
        printf("Case #%d:\n", z);
        for (i = 0; i < b; i++) {
            if (list3[i] == 0) {
                printf("%d not found\n", list2[i]);
            }
            else {
                printf("%d found at %d\n", list2[i], list3[i]);
            }
        }
        z+=1;
        free(list1);
        free(list2);
        free(list3);
    }
    return 0;
}

  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7440770
  • 这篇博客也不错, 你可以看下将c、c++代码包装成python代码
  • 除此之外, 这篇博客: 将python代码转化为c语言代码,提高运行效率中的 将python代码转化为c语言代码,提高运行效率 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 首先,需要安装cpython库:

    pip install cython
    

    安装完成之后,写一段简单的代码,例如下面这个利用递归求斐波那契数列的函数,然后保存为.pyx文件:

    def fib(n):
        return 1 if n ==1 or n == 2 else fib(n - 1) + fib(n - 2)
    

    我将它保存为fib.pyx文件
    然后再创建一个文件,文件的内容如下:

    from setuptools import setup
    from Cython.Build import cythonize
    
    setup(ext_modules=cythonize('fib.pyx'))
    

    我将它重命名为translate.py文件。这个文件的作用是调用 Cython 的cythonize函数把 Python 代码转换为 C 代码。
    还有一个要提醒的地方是里面的文件路径,这里是将他们放在同一个目录下。
    接下来编译代码:
    进入命令行,cd转入那两个文件所在的文件目录,然后输入如下指令

    python translate.py build_ext --inplace
    

    如果你的命令行出现如下错误:
    1
    就需要安装visual studio c++ 14.0
    安装好了之后继续执行上面给的命令,就会成功:
    1

    成功之后再创建一个测试文件test.py:

    import time
    from fib import fib
    
    start = time.time()
    result = fib(20)
    end = time.time()
    print('斐波那契数列第20项为'+ str(result)+'耗时:'+str(end - start)+'秒')
    

    现在我的文件目录是这样的:
    1

    下面运行test.py文件:

    斐波那契数列第40项为102334155耗时:5.765635251998901

    运行如下代码耗时为:

    import time
    
    def fib(n):
        return 1 if n ==1 or n == 2 else fib(n - 1) + fib(n - 2)
    
    start = time.time()
    result = fib(40)
    end = time.time()
    print('斐波那契数列第20项为'+ str(result)+'耗时:'+str(end - start)+'秒')
    
    斐波那契数列第40项为102334155耗时:27.247100830078125
  • 您还可以看一下 CSDN就业班老师的Python全栈工程师特训班第十四期-直播回放课程中的 Python全栈工程师特训班第十四期-第七周-3小节, 巩固相关知识点
python代码转化为c语言代码,提高运行效率
首先,需要安装cpython库:

pip install cython
安装完成之后,写一段简单的代码,例如下面这个利用递归求斐波那契数列的函数,然后保存为.pyx文件:

def fib(n):return 1 if n ==1 or n == 2 else fib(n - 1) + fib(n - 2)
我将它保存为fib.pyx文件
然后再创建一个文件,文件的内容如下:

from setuptools import setup
from Cython.Build import cythonizesetup(ext_modules=cythonize('fib.pyx'))
我将它重命名为translate.py文件。这个文件的作用是调用 Cythoncythonize函数把 Python 代码转换为 C 代码。
还有一个要提醒的地方是里面的文件路径,这里是将他们放在同一个目录下。
接下来编译代码:
进入命令行,cd转入那两个文件所在的文件目录,然后输入如下指令

python translate.py build_ext --inplace

成功之后再创建一个测试文件test.py:

import time
from fib import fibstart = time.time()
result = fib(20)
end = time.time()
print('斐波那契数列第20项为'+ str(result)+'耗时:'+str(end - start)+'秒')

以下答案由GPT-4.5Plus大模型(语音)与博主A努力中.......共同编写:
这里是将Python代码转换成等价的C语言代码:
Python代码:

python
# 定义学生类
class Student:
    def __init__(self, name, age):
        self.name = name
        self.age = age
    
    # 显示学生信息
    def show_info(self):
        print(f"姓名:{self.name},年龄:{self.age}")

# 创建学生对象
stu1 = Student("张三", 20)
stu2 = Student("李四", 21)

# 显示学生信息 
stu1.show_info()
stu2.show_info()

等价的C语言代码:

c
// 定义学生结构体 
struct Student {
    char name[20];  // 姓名
    int age;        // 年龄
};

// 显示学生信息的函数
void show_info(struct Student stu) {
    printf("姓名:%s,年龄:%d\n", stu.name, stu.age); 
}

int main() {
    // 创建学生结构体变量 
    struct Student stu1;
    strcpy(stu1.name, "张三");
    stu1.age = 20;
    
    struct Student stu2; 
    strcpy(stu2.name, "李四");
    stu2.age = 21;
    
    // 显示学生信息
    show_info(stu1);
    show_info(stu2); 
}

主要的区别有:

  1. Python使用类和对象,C使用结构体和结构体变量
  2. Python使用self关键字,C直接使用结构体变量名
  3. Python使用.访问属性,C使用.访问结构体成员
  4. Python使用__init__构造方法,C在定义结构体变量时直接初始化
  5. Python使用f-string字符串格式化,C使用printf格式化字符串

以上就是Python和C语言在面向对象和其他方面一些基本的语法区别。