面向对象程序设计寒假第一次作业

面向对象程序设计第一次作业

这个作业属于哪个课程 2020年面向对象程序设计
这个作业要求在哪里 面向对象设计寒假作业1
这个作业的目标 安装c++开发环境,完成问答题,实践题以及编程题,并发布博客。
参考文献 《C程序设计》
----- c语言汉字读取
----- 命令行使用
----- 汉字与Ascii码转换器
----- c语言编译过程
----- c语言指针概念

问答题:
如果你不了解C++请回答以下问题:你认为C语言有什么缺陷(你觉得哪里用的不顺手)。
一.指针,作为一名大学才接触计算机编程练打字都要看键盘的字母的小白,个人觉得c语言指针部分用得比较不太顺手,相对其它章节概念比较抽象,在一次pta平台作业中基本均涉及指针的情况下便运用数组解决问题,在其中相关要求构建螺旋方阵可以直接运用二维数组知识解决实际问题,当然对于代码小白想要运用指针来解决螺旋方阵我自己觉得上机考试要考这玩意首先想到的就是二维数组,还有连连看问题根据题目所述还是二维数组比较方便,虽然指针更便捷还是c语言的特色,运用还是取决于个人,个人觉得指针用来指向二维数组比较麻烦,直接用来取一维指针值而在用于处理二维数组中需要在(f+x)+y(假定f就是指向二维数组的指针,y,x均为常数)此时仅获得该元素的地址需要在加上*获取值,就简洁度而言还是二维数组比较吃香,体现在构建函数时需要输入的形式参数的值是地址(因为自己老是输入值引起运行结果与例子不符合debug半天才发现是地址的锅)总是令我难受地去寻找error(绝大部分原因还是菜(滑稽doge))。
二.递归,联想到这玩意基本就想到汉诺塔的应用,递归用途多可以应用于斐波那契列数列,爬楼梯经典问题。[]

编译:
c程序设计一书提及为解决低级语言不普遍发明高级语言贴近人类语法习惯,由于机器无法直接识别高级语言需要编译软件进行编译,编译就是将高级语言转换成汇编语言在转换为二进制的机器语言符合机器识别的机器指令,过程中涉及字符替换,删除无用注释,添加文件标示和行号,读取C语言源程序,对其中的伪指令(以#开头的指令)和特殊符号进行处理,生成可执行应用程序。

实践题:
实践题中不熟悉win+r的方式输入cmd打开DOS面板,多次在未输入cd的前提条件下输入文件路径导致无法查看gcc版本,以及需要将记事本中写的源程序文件转换为exe格式,以及输入路径后直接访问c程序时出现错误需要访问exe文件,以及64位windows不支持16位条件下的exe文件导致无法运行所属文件,主要问题应该是直接打开与cpp文件伴随生成的exe相关,着实无法解决在64位Windows系统下生成的可执行程序无法在64位Windows环境下运行,以及未在高级环境变量中构建c运行的环境导致源程序在cmd面板中不能转换为相应的exe,应是在此电脑下构建相应的Path环境系统变量插入对应的文件路径,未构建相应的include,lib变量,以及构建完环境后无法执行程序存在无法将源程序转换为exe可执行程序导致无法运行(在未添加Path系统变量,lib,include变量),以及与百度经验上所提到Windows默认生成a.exe相悖仍然生成与c源程序相同名的可执行程序。



编程题:
编程要求:编写一个程序,输入满足以下语法要求的一段文字,输出运行后的结果。
经过查阅知道由汉字可以是两个ascii码组成,而字符仅占一字节与一ascii码所占据空间等价,将汉字转换为字符数组进行储存调取相关有用字符数组中的几个便可知道进行什么操作,先创建4个字符数组针对题目要求,开辟空间足够大容纳汉字,后对第一行字符数组16,17,第二三行字符数组6,7,8,9,11,12重点关注,提取ascii码,与字母,数字对应的acsii码可能进行加减后再进行转换尚且可以有效换算出结果不同此时得到的ascii码并没有太多用处,对于处理汉字的ascii码不大好使,而且经过初步在Devc++上针对汉字“一”的转换得到“-46 -49”后放到网页版ascii码转换器进行转换后得到结果不同。

参考C程序设计数组章节内容strcmp函数用法,字符串比较的规则是将两个字符串自左向右逐个相比,若两字符串相等则函数值为0,其余为正反数,则只需看看输入字符串与“钱包 增加 四”“此类的函数值是否为0即可(总计40种)考虑到一次性判断整个字符串存在不能找到程序停止的指令,故需要对第一行表明钱包的初始钱数单独考虑,后面输入由于涉及何时停止程序,把第一个输入内容独立出来考虑对输入的字符串是否是“看看”是的话终止交易,不是继续运行,针对计算符号和数字单独分析。
代码部分:

include <stdio.h>

include <string.h>

int main(void)
{
int sumcomputer(char num[20]);
int how(char how[20]);
void change(int number);
int sum,witness,first,second;
char a[20],b[20],c[20],d[20];
scanf("%s %s %s %s",a,b,c,d);
sum=sumcomputer(d);
while(1)
{
scanf("%s ",a);
if(strcmp(a,"看看")==0)break;
scanf("%s %s",b,c);
witness=how(b);
if(witness)sum+=sumcomputer(c);
else sum-=sumcomputer(c);
}
if(sum<=10)change(sum);
else if(sum>99)printf("但凡有一粒头孢");
else
{
second=sum%10;
first=(sum/10)%10;
change(first);
printf("十");
change(second);
}
}
int sumcomputer(char num[20])
{
if(strcmp(num,"零")==0)return 0;
else if(strcmp(num,"一")==0)return 1;
else if(strcmp(num,"二")==0)return 2;
else if(strcmp(num,"三")==0)return 3;
else if(strcmp(num,"四")==0)return 4;
else if(strcmp(num,"五")==0)return 5;
else if(strcmp(num,"六")==0)return 6;
else if(strcmp(num,"七")==0)return 7;
else if(strcmp(num,"八")==0)return 8;
else if(strcmp(num,"九")==0)return 9;
else if(strcmp(num,"十")==0)return 10;
}
void change(int number)
{
if(number==0)printf("零");
else if(number==1)printf("一");
else if(number==2)printf("二");
else if(number==3)printf("三");
else if(number==4)printf("四");
else if(number==5)printf("五");
else if(number==6)printf("六");
else if(number==7)printf("七");
else if(number==8)printf("八");
else if(number==9)printf("九");
else if(number==10)printf("十");
}
int how(char how[20])
{
if(strcmp(how,"减少")==0)return 0;
else return 1;
}
其中how函数用于判断所需要进行的操作,change函数用于控制输出,sumcomputer函数用于计算sum的值用于输出结果。
实践结果:


猜你喜欢

转载自www.cnblogs.com/pekkasuper/p/12220589.html
今日推荐