• 2020面向对象寒假作业(二)


    2020面向对象寒假作业(二)

    这个作业属于哪里 2020面向对象程序设计
    这个作业在哪里 2020面向对象寒假作业二
    - 1.继续完成编程题
    这个作业目标 2.新建一个github仓库,并把作业推送到该仓库
    - 3.发布博客
    作业正文 2020面向对象寒假作业(二)
    - python使用ctypes调用C/C++
    - Python实现的调用C语言函数功能简单实例
    - python 调用c语言函数的方法
    参考文献 Python中调用c语言(简单版)
    - 〈详解〉Python3调用C程序
    - 〈详解〉Python3调用C程序
    - Python实例浅谈之三Python与C/C++相互调用
    - Python实现运行其他程序的四种方式实例分析

    作业感想:这次的作业毫无疑问我做的很失败,失败在制作编译版本上,失败在我将Python作为编译语言,也失败在我对知识的模糊不清。

    1.使用github desktop新建一个github仓库

    (1)下载github desktop

    (2)注册信息,进入如下页面

    (3)点在右上角file,点击new repository,填入信息建立新仓库

    (4)进入仓库所在文件夹,把作业相关文件复制到该文件夹,再上传到仓库

    2.编程题

    ·继续完成作业一的编程题。
    ·优化架构,一般要求每个函数长度不超过15行。
    ·优化规范,尤其是命名规范。
    ·制作一个编译脚本,运行该脚本可以编译你的代码,可选的脚本语言,python(2.7),windows批处理,powershell,shell。
    ·进行单元测试,即测试每一个函数,并制作一个测试脚本,运行该脚本可以进行测试,并显示测试结果。
    ·在作业一编程题的基础上添加以下功能
    ·通过命令行读取一个文件

    (1)展示代码优化

    \#include<stdio.h>
    #include<string.h>
    int num(char d[])
    {
    	if(!strcmp(d,"零")) return 0;
    	else if(!strcmp(d,"一")) return 1;
    	else if(!strcmp(d,"二")) return 2;
    	else if(!strcmp(d,"三")) return 3;
    	else if(!strcmp(d,"四")) return 4;
    	else if(!strcmp(d,"五")) return 5;
    	else if(!strcmp(d,"六")) return 6;
    	else if(!strcmp(d,"七")) return 7;
    	else if(!strcmp(d,"八")) return 8;
    	else if(!strcmp(d,"九")) return 9;
    	else if(!strcmp(d,"十")) return 10;
    	else return -1; 
    }
    
    int judge(int n ,char c[],char d[])
    {
    	if(!strcmp(c,"增加")) return n+num(d);
    	else if(!strcmp(c,"减少")) return n-num(d);
    	else printf("输入错误
    "); 
    }
    
    void sum(int n)
    {
    	char nums[10][4]={"零","一","二","三","四","五","六","七","八","九"};
    	if(n<10) printf("%s",nums[n]);
    	else
    	{
    		int m=n%10;
    		n=n/10;
    		printf("%s十%s",nums[n],nums[m]);
    	} 
    }
    
    void calculate(int coin)
    {
    	char b[10],c[10],d[10];
    	while(2)
    	{
    		scanf("%s",b); 
    		if(!strcmp(b,"看看"))
    		{
    			if(coin>99) printf("我真的没那么多钱
    ");
    			else sum(coin);
    			break;
    		}
    		scanf("%s%s",c,d);
    		coin = judge(coin,c,d);
    	}
    } 
    
    int main()
    {
    	char a[10], b[10], c[10], d[10];
    	int coin;
    	scanf("%s%s%s%s",a,b,c,d);
    	getchar();
    	if(!strcmp(a,"整数"))
    	{
    		if(num(d)==-1) printf("数值输入错误
    ");
    		else coin += num(d);
    	}
    	else printf("数据类型输入错误
    "); 
    	if(coin>99||coin<0) printf("计算错误,数值不该为负或者超过九十九
    "); 
    	else calculate(coin);
    }
    

    (2)制作编译脚本

    脚本是一个纯文本的程序
    第一步:我选择了Python作为了脚本语言。
    第二步:资料查找,在几天的搜索资料中,我并没有搜查到能给予我极大帮助的资料。
    搜查Python中可运行C语言程序的方法:
    第一种:使用ctypes模块,建立共享库。资料说需将C程序转化为SO文件或者DLL文件,其中Windows系统需转化成DLL文件,在实际操作中第一次我在Python编译器中尝试运行C语言程序,并修改了C语言程序,但出现了乱码。

    思考:怀疑是因为C语言程序的编码方式为ANSI编码造成
    尝试解决:首先源代码是正确满足编程题的,之后使用Notepad++改变编码方式,继续尝试,仍然出现错误

    第二种:使用os模块中的system函数,但这个函数只可以调用C语言可执行程序,执行形式并不能满足题解。

    大多时间我查找资料并没有解决问题或是知道错误原因,因此选择Python作为脚本语言是我做作业的首要错误。

    总结:我以为我初步了解了Python,应该能很快找到解决方法,但并没有,我甚至找不到出错的原因。

  • 相关阅读:
    Solution -「ARC 101E」「AT 4352」Ribbons on Tree
    Solution -「CF 855G」Harry Vs Voldemort
    Solution -「CF 1119F」Niyaz and Small Degrees
    Solution -「AGC 029E」「AT 4504」Wandering TKHS
    Solution -「CF 840C」On the Bench
    Solution -「AGC 004E」「AT 2045」Salvage Robots
    Solution -「CF 908D」New Year&Arbitrary Arrangement
    IDEA技巧-快速遍历数组
    [LOJ6055]「from CommonAnts」一道数学题 加强版
    LeetCode437路径总和III
  • 原文地址:https://www.cnblogs.com/trainking-star/p/12250435.html
Copyright © 2020-2023  润新知