面向对象程序设计寒假作业2
这个作业属于哪个课程 | 面向对象程序设计2020 |
---|---|
这个作业要求在哪里 | 面向对象程序设计寒假作业2 |
这个作业的目标 | 1.继续完成编程题。2.新建一个github仓库,并把作业推送到该仓库。3.发布博客。 |
作业正文 | 1.实践题 2.编程题 |
其他参考文献 | 正文中将会出现 |
1.实践题
根据GitHub的初学指南我完成了在网站上建立一个新的仓库,并且下载了git和github desktop,参考的网站有安装git和[傻瓜都会用的Github Desktop](https://www.jianshu.com/p/06a960d991aa"傻瓜都会用的Github Desktop")
自己研究了一下并且参考了https://oop.jihuayu.site/works/work1ex.html#提issues这个网址
1.先点黄色部分,将会出现一个文件夹,将要传输的文件放入这个文件夹。
2.再点红色部分,这个步骤是参考上面附上的网站,不知道是什么原理。
3.最后就是点击白色部分,它会变成push,点击后再打开你的github主页,就可以看到已经被推送上去的文件了。
脚本简单地说就是一条条的文字命令,这些文字命令是可以看到的(如可以用记事本打开查看、编辑),脚本程序在执行时,是由系统的一个解释器,将其一条条的翻译成机器可识别的指令,并按程序顺序执行。因为脚本在执行时多了一道翻译的过程,所以它比二进制程序执行效率要稍低一些。
通过脚本编写学习明白的脚本编写的最初过程。还了解了bat批处理脚本的语法
但是搞了很久还是搞不出来编译脚本和测试脚本,我太菜了......
虽然没有搞出来脚本,但是了解到了gcc中-c和-o参数
2.编程题
参考了其他同学的作业,这次加入了判断输入对错的一步
scanf("%s %s %s %s",a,b,c,d);
if(strcmp(a,"整数")){
printf("输入错误。");
return 0;
}
scanf("%s %s %s",x1,x2,x3);
if(strcmp(b,x1)){
printf("输入错误。");
return 0;
}
scanf("%s %s %s",y1,y2,y3);
if(strcmp(x1,y1)){
printf("输入错误。");
return 0;
}
scanf("%s %s",e,f);
if(strcmp(y1,f)){
printf("输入错误。");
return 0;
}
这次还规范命名,我查阅了一些资料,感觉这篇C语言编程规范—命名规则总结得不错,
举个例子:驼峰命令法printEmployeePaychecks();print_employee_paychecks();它第一个单词的第一个字母小写,后面的单词首字母大写,看起来像一个骆驼。
匈牙利命名法m_lpszStr;标识符的名字以一个或者多个小写字母开头作为前缀;前缀之后的是首字母大写的一个单词或多个单词组合,该单词要指明变量的用途。
帕斯卡(pascal)命名法DisplayInfo();string UserName;与驼峰命名法类似但它是首字母大写。
我的代码命名如下
int chineseTransformNumber(char a[]); //中文转化为数字
void print_numberTransformChinese(int a);//将数字转化为中文并输出
int sum(int a,int b,int c,char d[],char e[]);//将转化过的数字进行加减法运算
这次改了一些小地方,总算编译出来了,哈哈哈
下面是每一个自己编写的函数的代码,本来想用for来实现简化代码的效果,但是又遇到了[Warning] deprecated conversion from string constant to 'char*' [-Wwrite-string]的问题,所以还是用了比较笨的办法来实现这个代码。
void print_numberTransformChinese(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("十");
}
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 chineseTransformNumber(char a[])
{
if(strcmp(a,"一")==0)return 1;
else if(strcmp(a,"二")==0)return 2;
else if(strcmp(a,"三")==0)return 3;
else if(strcmp(a,"四")==0)return 4;
else if(strcmp(a,"五")==0)return 5;
else if(strcmp(a,"六")==0)return 6;
else if(strcmp(a,"七")==0)return 7;
else if(strcmp(a,"八")==0)return 8;
else if(strcmp(a,"九")==0)return 9;
else if(strcmp(a,"十")==0)return 10;
else return 0;
}
以下是主函数,上次忘记把变量定义成字符数组,仅仅以字符的形式定义,然后一直编译不出来,幸好这次发现了,哈哈
#include<stdio.h>
#include<string.h>
int main()
{
int chineseTransformNumber(char a[]);
void print_numberTransformChinese(int a);
int sum(int a,int b,int c,char d[],char e[]);
char a[5],b[5],c[5],d[5],x1[5],x2[5],x3[5],y1[5],y2[5],y3[5],e[5],f[5];
int z1,z2,z3,i;
scanf("%s %s %s %s",a,b,c,d);
if(strcmp(a,"整数")){
printf("输入错误。");
return 0;
}
scanf("%s %s %s",x1,x2,x3);
if(strcmp(b,x1)){
printf("输入错误。");
return 0;
}
scanf("%s %s %s",y1,y2,y3);
if(strcmp(x1,y1)){
printf("输入错误。");
return 0;
}
scanf("%s %s",e,f);
if(strcmp(y1,f)){
printf("输入错误。");
return 0;
}
z1=chineseTransformNumber(d);
z2=chineseTransformNumber(x3);
z3=chineseTransformNumber(y3);
i=sum(z1,z2,z3,x2,y2);
print_numberTransformChinese(i);
return 0;
}
参考同学们的作业,知道编程题所要添加的功能需要通过freopen()函数的使用来完成,可惜还是没有使用成功添加的内容......
最终只能完成到这样了
我将会在之后继续钻研.gitignore和脚本的!!!