这个作业属于哪个课程 | <2020年面向对象程序设计> |
---|---|
这个作业要求在哪里 | <面向对象程序设计寒假作业1> |
这个作业的目标 | <1.说说c语言的不足2.简述C语言/C++的编译过程。3.查看自己的C++编译器版本。4.使用命令行编译一份C语言/C++代码。5、编程题 > |
作业正文 | 1.问答题 2.实践题 3.编程题 |
其他参考文献 | C/C++程序编译过程详解 |
问答题
你认为C语言有什么缺陷(你觉得哪里用的不顺手):
1.数组常常越界,无法用变量来定义数组长度
2.输入字符的时候经常需要吃掉换行符
3.用函数传送字符串的时候,传送的是地址,比较抽象
查阅相关资料,简述一下C语言/C++的编译过程:
1) 编译预处理
读取c源程序,对其中的伪指令(以#开头的指令)和特殊符号进行处理
2) 编译、优化阶段
进行语法检查,如没有错误,将生成汇编代码,文件从.c变为汇编代码文件.s。
3) 汇编过程
汇编过程实际上指把汇编语言代码翻译成目标机器指令的过程。对于被翻译系统处理的每一个C语言源程序,
都将最终经过这一处理而得到相应的目标文件。
4) 链接程序
链接程序的主要工作就是将有关的目标文件彼此相连接,也即将在一个文件中引用的符号同该符号在另外一个文件中的定义连接起来,
使得所有的这些目标文件成为一个能够诶操作系统装入执行的统一整体。
实践题:1.查看自己的C++编译器版本。2.使用命令行编译一份C语言/C++代码。
我按照网上查到的资料,搭建了cmd命令行c语言的编译环境。用记事本写了一个c程序,并更改拓展名为.c,然后在cmd对其进行编译,编译过程中无法找到头文件stdio.h,但是可以看到版本号,这个问题一直卡着我
然后我看了下环境变量,include跟lib都有设置进去,后面看了下include文件夹,发现没有stdio.h文件,于是我想自己做一个stdio.h丢进去,后来发现我压根不知道那文件是什么格式的文件,我就用笔记本做了个丢进去,发现没啥用。我以为是vs下载的时候有问题,又卸载重新下了好几遍,每个Windows10的SDK都试了一遍,还是没用,果断放弃
编程题
题目理解
1.数字只会出现一到十。则钱包里的总额范围为一到九十九
2.目的是实现汉字的输入,并对输入的金钱进行相加减以及得出最后的金额
思考过程
1.先输入“整数”,存放金钱的途径(钱包),“等于”,起始金额
2.进入金额的运算(循环),当输入为看看的时候跳出循环。
3.输出总金额。
实现过程
要实现四个基本功能:
1.将输入的汉字转化为阿拉伯数字计算机才能进行计算。
2.对钱包内的金额进行加运算
3.对钱包内的金额进行减运算
4.将最后的总金额转化为汉字输出
完整代码
···
include
include
int main()
{
char a[20],b[5],c[5],d[5],e[5],f[5];
int t,t1,t2,n,i;
scanf("%s%s%s%s",e,a,f,b);
{if(strcmp(b,"零")==0)
t=0;
else if(strcmp(b,"一")==0)
t=1;
else if(strcmp(b,"二")==0)
t=2;
else if(strcmp(b,"三")==0)
t=3;
else if(strcmp(b,"四")==0)
t=4;
else if(strcmp(b,"五")==0)
t=5;
else if(strcmp(b,"六")==0)
t=6;
else if(strcmp(b,"七")==0)
t=7;
else if(strcmp(b,"八")==0)
t=8;
else if(strcmp(b,"九")==0)
t=9;
else if(strcmp(b,"十")==0)
t=10;
}
for(i=0;;i++)
{scanf("%s",b);
if(strcmp(b,"看看")==0)
{scanf("%s",c);
break;
}
else{
scanf("%s",c);
if(strcmp(c,"增加")==0)
{scanf("%s",d);
if(strcmp(d,"零")==0)
t=t+0;
else if(strcmp(d,"一")==0)
t=t+1;
else if(strcmp(d,"二")==0)
t=t+2;
else if(strcmp(d,"三")==0)
t=t+3;
else if(strcmp(d,"四")==0)
t=t+4;
else if(strcmp(d,"五")==0)
t=t+5;
else if(strcmp(d,"六")==0)
t=t+6;
else if(strcmp(d,"七")==0)
t=t+7;
else if(strcmp(d,"八")==0)
t=t+8;
else if(strcmp(d,"九")==0)
t=t+9;
else if(strcmp(d,"十")==0)
t=t+10;
}
else
{scanf("%s",d);
if(strcmp(d,"零")==0)
t=t-0;
else if(strcmp(d,"一")==0)
t=t-1;
else if(strcmp(d,"二")==0)
t=t-2;
else if(strcmp(d,"三")==0)
t=t-3;
else if(strcmp(d,"四")==0)
t=t-4;
else if(strcmp(d,"五")==0)
t=t-5;
else if(strcmp(d,"六")==0)
t=t-6;
else if(strcmp(d,"七")==0)
t=t-7;
else if(strcmp(d,"八")==0)
t=t-8;
else if(strcmp(d,"九")==0)
t=t-9;
else if(strcmp(d,"十")==0)
t=t-10;
}}}
if(t/10==0)
{if(t==0)
printf("零");
if(t==1)
printf("一");
if(t==2)
printf("二");
if(t==3)
printf("三");
if(t==4)
printf("四");
if(t==5)
printf("五");
if(t==6)
printf("六");
if(t==7)
printf("七");
if(t==8)
printf("八");
if(t==9)
printf("九");
}
else
{t2=t%10;
t1=t/10;
if(t1==1)
{printf("十");
if(t2==0)
printf("零");
if(t2==1)
printf("一");
if(t2==2)
printf("二");
if(t2==3)
printf("三");
if(t2==4)
printf("四");
if(t2==5)
printf("五");
if(t2==6)
printf("六");
if(t2==7)
printf("七");
if(t2==8)
printf("八");
if(t2==9)
printf("九");
}
else if(t2==0)
{if(t1==0)
printf("零");
if(t1==1)
printf("一");
if(t1==2)
printf("二");
if(t1==3)
printf("三");
if(t1==4)
printf("四");
if(t1==5)
printf("五");
if(t1==6)
printf("六");
if(t1==7)
printf("七");
if(t1==8)
printf("八");
if(t1==9)
printf("九");
printf("十");
}
else
{if(t1==0)
printf("零");
if(t1==1)
printf("一");
if(t1==2)
printf("二");
if(t1==3)
printf("三");
if(t1==4)
printf("四");
if(t1==5)
printf("五");
if(t1==6)
printf("六");
if(t1==7)
printf("七");
if(t1==8)
printf("八");
if(t1==9)
printf("九");
printf("十");
if(t2==0)
printf("零");
if(t2==1)
printf("一");
if(t2==2)
printf("二");
if(t2==3)
printf("三");
if(t2==4)
printf("四");
if(t2==5)
printf("五");
if(t2==6)
printf("六");
if(t2==7)
printf("七");
if(t2==8)
printf("八");
if(t2==9)
printf("九");
}
}
return 0;
} ···
最终程序
功能
1.可输入其他的存钱途径,输入的不一定是钱包
2.总金额在0-99范围都可正确输出