面向对象程序设计寒假作业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和脚本的!!!

posted @ 2020-02-05 22:55  尼古拉斯宝莉  阅读(121)  评论(0编辑  收藏  举报