面向对象程序设计寒假作业1
这个作业属于哪个课程 | 面向对象程序设计2020 |
---|---|
这个作业要求在哪里 | 面向对象程序设计寒假作业1 |
这个作业的目标 | 1.安装C++开发环境(见附录)。2.完成问答题、实践题及编程题。3.发布博客。 |
作业正文 | 1.问答题 2.实践题 3.编程题 |
其他参考文献 | 正文中将会出现 |
(一)问答题:
回答以下问题:
1、如果你不了解C++请回答以下问题:你认为C语言有什么缺陷(你觉得哪里用的不顺手)。
答:有些数组或数字太大会溢出,就需要各种切换类型的操作,这让我感觉有点晕,会记不住。对于现在的我还没有完全地掌握C语言。
还有一些运算符的优先级比较难以记忆,运用时仍需要翻阅书本查询。
2、查阅相关资料,简述一下C语言/C++的编译过程。
(二)实践题:
自己动手,完成以下任务:
1、查看自己的C++编译器版本。
百度+群里讨论,终于勉勉强强把第一小题给完成了。刚开始还不是很懂得这个题目的意思,虽然一句很简单的话,但对我这样的菜鸟感觉文字都不能联系到一起了。好在结果还是好的,出来的页面是这个亚子
借鉴的链接是这个https://blog.csdn.net/faithzzf/article/details/52328353(虽然查阅了很多资料,但比较看得懂的是这一个)
一直不知道cl到底是什么意思,因为在层层目录中根本找不到cl,后来百度百科救我于苦海之中。附上链接https://baike.baidu.com/item/CL/7319305?fr=aladdin
后来还想试试查询dv c++的版本,奈何一直成功不了,还通过命令行直接打开了dv c++,我是通过层层目录来找到它的
如果输入devcpp.exe就会直接打开那个软件,有疑问的是,在后面的步骤中输入cl我不清楚查询的是vs的版本还是dv c++的版本。
2、使用命令行编译一份C语言/C++代码。
每次弄到这就进行不下去了,实在不知道什么原因呀
(三)编程题(请使用C语言或者C++完成以下题目):
这道题涉及了加减法,先从简单的入手,就是编写一个计算的函数。
int sum(int a,int b,int c,char d,char e)
{
int s;
if(strcmp(d,"增加")==0)s=a+b;
else s=a-b;
if(strcmp(e,"增加")==0)s=s+c;
else s=s-c;
return s;
}
考虑到输入输出都是汉字,对于计算比较不好处理,所以编写了一个函数将汉字转化为数字来计算。
int number(char a)
{
int b;
if(strcmp(a,"一")==0)b=1;
else if(strcmp(a,"二")==0)b=2;
else if(strcmp(a,"三")==0)b=3;
else if(strcmp(a,"四")==0)b=4;
else if(strcmp(a,"五")==0)b=5;
else if(strcmp(a,"六")==0)b=6;
else if(strcmp(a,"七")==0)b=7;
else if(strcmp(a,"八")==0)b=8;
else if(strcmp(a,"九")==0)b=9;
else if(strcmp(a,"十")==0)b=10;
else b=0;
return b;
}
但每次将某个字符赋值给一个自己设置的变量总是会出错,以前就经常出现这个问题,奈何太菜鸡,一直不知道是什么原因,如下图
于是我将它改成直接输出,这样又省得再编写一个将数字转换为汉字的函数输出
void print(int a)
{
if(a==0)printf("零");
else if(a==1)printf("一");
else if(a==2)printf("二");
else if(a==3)printf("三");
else if(a==4)printf("四");
else if(a==5)printf("五");
else if(a==6)printf("六");
else if(a==7)printf("七");
else if(a==8)printf("八");
else if(a==9)printf("九");
else printf("十");
}
主函数这这样的,我设置的变量比较多
#include<stdio.h>
#include<string.h>
int main()
{
int number(char a);
void print(int a);
int sum(int a,int b,int c,char d,char e);
char a,b,c,d,x1,x2,x3,y1,y2,y3,e,f;
int z1,z2,z3,i;
scanf("%s %s %s %s",a,b,c,d);
scanf("%s %s %s",x1,x2,x3);
scanf("%s %s %s",y1,y2,y3);
scanf("%s %s",e,f);
z1=number(d);
z2=number(x3);
z3=number(y3);
i=sum(z1,z2,z3,x2,y2);
print(i);
return 0;
}
这是我对这题的大致思路,对于那个gbk编码我实在不知道怎么搞了。
以上代码也因为出现了一些问题运行不了