面向对象程序设计寒假作业1

作业描述 详情
这个作业属于哪个课程 2020面向对象程序设计
这个作业要求在哪里 面向对象程序设计寒假作业1
这个作业的目标 1.了解c和c++的区别以及各自的缺点和优点
2.了解c/c++的编译过程.
3.查看c++编译器的版本
4.使用命令行编译一份C语言/C++代码。
5.完成一个有关中文的编程题
作业正文 如下
其他参考文献 c语言的缺点
C语言/C++的编译过程

问答题

1.C语言有什么缺陷

一、c语言代码的复用性差。
二、c语言代码的维护性差。
三、c语言代码的扩展性差。
四、c语言代码的可读性差,对于一个新手很难读懂一个项目的所有。内容多,想要看懂一个项目确实很难

2.c/c++编译过程

1.预处理
- 展开宏定义并删除#define语句
- 处理条件编译指令 如#if
- 处理#include
- 输出注释语句
- 添加行号和文件名标识
2.编译阶段
- 编译阶段,编译阶段时整个过程中比较复杂的部分,编译器会将预处理之后的文件的内容,经过词法分析,得到所需要的Tokens,然后作对于的语法解析,语义解析,最后产生 .s结尾的汇编文件。
3.汇编阶段
4.连接阶段

实践题

1.查看自己的c++编译器版本

首先win+r,然后输入cmd命令提示符,就会出现这个

听说之后还要输入g++ -v。但我输入后出现了这个

据说是因为没有安装什么minGW。但是看了下教程,觉得太麻烦,所以这里就不做了。
后来又听说可以在可以在磁盘中看,但好不容易找到了位置,又打不开,真让人头大。

2.使用命令行编译代码

按下win+r后输入cmd,输入相应磁盘,接着输入相应地址,即可运行程序

编程题

中国文化博大精深,从仓颉造字开始,汉字一直流传到了今天。我们在感叹汉字的源远流长时,也不禁感慨,为什么没有一门使用汉字编程的语言?
汉字真的不能编程吗?最近文言文编程火了一把,吾有一數。曰三。名之曰「甲」。这朴实无华的变量定义无疑不是几千年来中华文化的发展中一朵奇葩。
今天小王同学想,文言文能编程那白话文呢?他找到了你,让你帮帮他。
编程要求
编写一个程序,输入满足以下语法要求的一段文字,输出运行后的结果。
变量定义:整数 钱包 等于 零
运算(加法):钱包 增加 四
运算(减法):钱包 减少 四
输出:看看 钱包
样例
输入:
整数 钱包 等于 零
钱包 增加 四
钱包 减少 三
看看 钱包
输出:

注意:
1.输入输出用例均为GBK编码,推荐使用vscode把文本切换为GBK编码。
2.数字只会出现以下 零一二三四五六七八九十 。
编程题要求:
1.读题,提取出题目的要求。
2.分解需求,把需求分解为几个你觉得不太相关的模块。
3.思考每个模块怎么写,可以从简单的模块开始写。
4.对于不会的问题进行查阅资料。
5.对于每一个模块设计测试用例。
6.详细记录下以上每一步,并写在博客中。
7.不要求完全做出来,但要求记录详细。
8.建议博客长度不少于1000字(不包含代码)。

这个题目一眼看上去就有好多知识盲区,首先就是之前从来没有过汉字输入输出,以及用汉字进行判断来执行增加,减少,赋值,输出等操作。
首先抓住一个核心strcmp,可以判断汉字对应数字的值,也可以判断看看之类的汉字对应的操作。先建立一个汉字表,再弄一个将汉字转化为数字的函数。

接着写一个判断函数,判断和执行汉字代表的操作

然后是主函数(意义不大,等会下面有完整代码),先看下输出。因为有十几,几十和几十几。

完整代码

#include<stdio.h>
#include<string.h>
char hz[11][11]={"零","一","二","三","四","五","六","七","八","九","十"};
int trans(char a[]){
int i;
for(i=0;i<11;i++){
if(strcmp(hz[i],a)==0){
return i;
}
 }
}
int judge(int n,char a[],char b[]){
int sum;
sum=trans(b);
if(strcmp(a,"增加")==0) return n+sum;
else if(strcmp(a,"减少")==0) return n-sum;
}
int main()
{
int s;
char a[101],b[101],c[101],d[101];
scanf("%s %s %s %s",a,b,c,d);
s=trans(d);
while(scanf("%s %s",b,c)!=EOF)
{
if(strcmp(b,"看看")!=0)
{
scanf("%s",d);
s=judge(s,c,d);
}
else {
if(s<=10)printf("%s",hz[s]);
else if(s%10==0){printf("%s十",hz[s/10]);
		}
else if(s>10&&s<20)printf("十%s",hz[s-10]);
else printf("%s十%s",hz[s/10],hz[s%10]);
	}
}
return 0;
}

输入输出示例


这个写的代码跟其他人比起来真的很简陋(从长度上就可以看出来),没考虑负数,错误输入,百位之上的输出,加减之外的运算等等等等。但通过这次作业
还是学到了很多,markdown的排版之类的。看看其他人的作业,觉得差距还是好大。

posted @ 2020-01-27 17:17  xtzc  阅读(157)  评论(1)    收藏  举报