面向对象程序设计2020第三次作业
这个作业属于哪个课程 | 2020面向对象程序设计张栋班 |
---|---|
这个作业要求在哪里 | 寒假作业3 |
这个作业的目标 | 修改、完善作业二,拓展功能 |
作业正文 | 寒假作业3 |
其它参考文献 |
注: 系统是Mac OS
作业要求
编程题(请使用C语言或者C++完成以下题目):
- 继续完成作业二的编程题。
- 优化架构,思考代码的拓展性,比如我需要增加其他功能,如选择,循环语句怎么办。
- 思考:可以参考现有的编程语言,把这些语言的内容加入。如选择、循环语句、函数、或者扩大数字范围,支持负数等。
- 编程题完成情况:
- 单变量
- 输入输出都支持负数、两位数,即数字范围 -99~99
- 有错误提示,如把关键字作为变量名称、要查看的变量不存在等。
- 在输出变量前,可不断进行增加、减少的操作
- 用“看看”输出变量后,程序结束
支持负数比较简单,于是就先把我的processStringToInt函数作了修改
- 思路很简单,用一个int变量sign来控制正负,初始化为1
- 把第一个中文先分离出来,如果是“负”,则把sign置为-1,并把传进来的字符串,去掉前面这个中文,再进行数字部分的处理
- 如果不是“负”,就不需要去掉前面这个中文
- 去掉前面这个中文的方法就是从第三个字符开始复制(一个中文在GBK下占两个字节)
if(!strcmp("负",str0))
{
strncpy(str,number+2,6); str[6] = '\0';
sign = -1;
}
else
{
strncpy(str,number,6); str[6] = '\0';
}
//str字符数组用来存数字部分
//函数返回值乘一个sign
return sum * sign;
- 同时,输出结果的函数也要修改
if (n < 0) //只需增加这个步骤
{
printf("负");
n = -n;
}
支持负数后,要进行其他拓展需要判断各种指令,不知道从何下手.......
然后是脚本的修改
上次是用命令行运行脚本的,
又理解错意思首先shell文件的默认打开方式修改为终端
然后,双击后要能够运行某脚本,需要在终端修改该脚本文件权限
$ chmod +x fileName.sh //fileName.sh是文件完整名称
- 编译脚本如下
#!/bin/bash
cd /Users/shenhuan/FZU-OOP-homework/baiHuaWen
gcc main.c excute.c convertToInt.c convertToString.c error.c printResult.c processStringToInt.c
if [ $? == 0 ]
then
echo "编译成功......"
else
echo "编译失败......"
fi
- 双击后如下(忽略warning,虽然终端字符编码改GBK了,还是会有对中文的warning,不过代码运行正常)
- 测试脚本修改后,双击运行
关于没能完成的功能
如果要拓展功能,指令的情况很多,应该要根据空格把词语分离出来,再判断这个词是什么,然后选择相应的函数,emmm那样的话我的代码估计得改很多
关于扩大数字范围,中文的位数和阿拉伯数字的位数并不对应,这也是最麻烦的点。比如范围到999的话,就会比范围99多出很多种情况,八百八十八,八百八十等等......暂时还是算了