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

这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzu/2020OOP
这个作业要求在哪里 https://edu.cnblogs.com/campus/fzu/2020OOP/homework/10224
这个作业的目标 1.安装C++开发环境(见附录) 2.完成问答题、实践题及编程题 3.发布博客
作业正文 问答题、实践题、编程题
其他参考文献 C++程序设计(第三版)(谭浩强 编箸)

问答题:

1.如果你不了解C++请回答以下问题:你认为C语言有什么缺陷(你觉得哪里用的不顺手)。如果你已经了解C++请回答以下问题:你觉得C++和C语言比有什么优点。

答:C语言的缺陷:1.对数据的封装性差。所有未加static前缀的全局变量和函数都具有全局可见性,其它的源文件也能访问。 2.难以开发大型软件和图形界面的应用软件。 3.对数组下标越界不做检查。 4.输入输出语句过于复杂。c++只要cin和cout,c语言则要通过scanf、printf、gets、puts等,不同输入输出有差异,缓冲区残留导致数据的输入输出可能与预想中有差异。

2.查阅相关资料,简述一下C语言/c++的编译过程。

1.预处理。展开头文件/宏替换/去掉注释/条件编译。 2.编译。检查语法,生成汇编。 3.汇编。汇编代码转换机器码。 4.链接。链接到一起生成可执行程序。

实践题:

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

1.直接打开桌面开始菜单栏中的x64 Native Tools Command Prompt for VS 2019 2.输入cl.exe

面向对象程序设计寒假作业1_第1张图片

2.使用命令行编译一份C语言/C++代码

打开桌面开始菜单栏中的x64 Native Tools Command Prompt for VS 2019,输入exe文件所在位置。

面向对象程序设计寒假作业1_第2张图片

这是一个将a=1,b=2。 a*b输出的代码。输出结果为2.

编程题

中国文化博大精深,从仓颉造字开始,汉字一直流传到了今天。我们在感叹汉字的源远流长时,也不禁感慨,为什么没有一门使用汉字编程的语言?

汉字真的不能编程吗?最近文言文编程火了一把,吾有一數。曰三。名之曰「甲」。这朴实无华的变量定义无疑不是几千年来中华文化的发展中一朵奇葩。

今天小王同学想,文言文能编程那白话文呢?他找到了你,让你帮帮他。

编程要求

编写一个程序,输入满足以下语法要求的一段文字,输出运行后的结果。

变量定义:整数 钱包 等于 零

运算(加法):钱包 增加 四

运算(减法):钱包 减少 四

输出:看看 钱包

样例

输入:

整数 钱包 等于 零

钱包 增加 四

钱包 减少 三

看看 钱包

输出:

注意:

输入输出用例均为GBK编码,推荐使用vscode把文本切换为GBK编码。

数字只会出现以下 零一二三四五六七八九十 。

解答

GBK编码,每个汉字字符占两个字节。因此char数组就可以存汉字。

1.输入错误的报错模块。

if(strcmp(s1,"整数")||strcmp(s2,"钱包")||strcmp(s3,"等于")){
        printf("Input Error!\n");
        return 0;
}

2.函数conv1将汉字零至十转换为数字0-10;

int conv1(char s[]){
    if (!strcmp(s, "零"))    return 0;
    if (!strcmp(s, "一"))    return 1;
    if (!strcmp(s, "二"))    return 2;
    if (!strcmp(s, "三"))    return 3;
    if (!strcmp(s, "四"))    return 4;
    if (!strcmp(s, "五"))    return 5;
    if (!strcmp(s, "六"))    return 6;
    if (!strcmp(s, "七"))    return 7;
    if (!strcmp(s, "八"))    return 8;
    if (!strcmp(s, "九"))    return 9;
    if (!strcmp(s, "十"))    return 10;
}

3.函数conv2将数字0-10转换为汉字零至十;

void conv2(int n)
{
    if(n==0) printf("零");
    if(n==1) printf("一");
    if(n==2) printf("二");
    if(n==3) printf("三");
    if(n==4) printf("四");
    if(n==5) printf("五");
    if(n==6) printf("六");
    if(n==7) printf("=七");
    if(n==8) printf("八");
    if(n==9) printf("九");
    if(n==10) printf("十");
}

4.输出模块,将输出的数字进行分类,分为小于等于十的数,整十的数,非整十的两位数,这三类分三种格式输出。

if(n<=10) 
    conv2(n);
else if(n%10==0){
    conv2(n/10);
    printf("十"); 
            }
else{
    conv2(n/10);
    printf("十");
    conv2(n%10);
            }

5.测试样例

情况一:报错

面向对象程序设计寒假作业1_第3张图片

情况二:一位数

面向对象程序设计寒假作业1_第4张图片

情况三:十

面向对象程序设计寒假作业1_第5张图片

情况四:整十

面向对象程序设计寒假作业1_第6张图片

情况五:非整十两位数

面向对象程序设计寒假作业1_第7张图片

6.总结

代码可输出的数据范围为0-99,有一定的模块化封装,报错的情况讨论不多,用户交互不够友好。

你可能感兴趣的:(面向对象程序设计寒假作业1)