zoukankan      html  css  js  c++  java
  • 面向对象程序设计寒假作业3

    这个作业属于哪个课程 面向对象程序设计2020
    这个作业要求在哪里 面向对象程序设计寒假作业3
    这个作业的目标 1.继续完成作业二的编程题。2.优化架构,思考代码的拓展性,比如我需要增加其他功能,如选择,循环语句怎么办。3.思考:可以参考现有的编程语言,把这些语言的内容加入。如选择、循环语句、函数、或者扩大数字范围,支持负数等。
    作业正文 编程题
    其他参考文献 正文中将会出现

    编程题

    改善编程题的初步思考有以下几方面:
    1.改进该编程可以进行负十到负一的运算和转化(个人感觉这个改进还算比较简单,难的应该在更高位数的运算和转化)。

    if(i>=0) print_numberTransformChinese(i);
        else{
        	printf("负");
    		print_numberTransformChinese(abs(i)) ;
    	 } 
    

    2.增加了关于乘除的部分,然后我用了很笨的方法,如下。

    int sum(int a,int b,int c,char d[],char e[])
    {
        int s;
        if(strcmp(d,"增加")==0)s=a+b;
        else if(strcmp(d,"减少")==0) s=a-b;
        else if(strcmp(d,"乘以")==0) s=a*b;
    	 else if(strcmp(d,"除以")==0) s=a/b; 
        if(strcmp(e,"增加")==0)s=s+c;
        else if(strcmp(e,"减少")==0) s=s-c;
        else if(strcmp(e,"乘以")==0) s=s*c;
        else if(strcmp(e,"除以")==0) s=s/c;
        return s;
    }
    

    3.改进它可以进行两位数的运算和转化,例如:十几,几十或者几十几。
    借鉴了已交作业的同学,我去了解了一下strncpy函数,这对我对该编程的功能进行优化有很大的帮助,并且要特别注意

    如果source的前n个字符不含NULL字符,则结果不会以NULL字符结束。如果n<source的长度,
    只是将source的前n个字符复制到destinin的前n个字符,不自动添加'',也就是结果destinin不包括'',
    需要再手动添加一个''。
    

    新增了两个函数

    int superTransform(char a[]);//将大于十的中文转化为数字
    void print_super(int a);//用中文输出大于十的数字
    

    具体函数如下

    int superTransform(char a[])
    {
    	int number;
    	char a1[3];
    	if(strlen(a)==4){//一个汉字两个字节,当出现两个汉字表示的数字时有一下两种情况
       	strncpy(a1,a,2);
       	a1[2]='';
       	if(strcmp(a1,"十")==0){
       		number=chineseTransformNumber(a1);
       	strncpy(a1,a+2,2);
       	a1[2]='';
       	number=number+chineseTransformNumber(a1);
    		}//当出现十几的情况
       	else number=chineseTransformNumber(a1)*10;
       }//当出现几十的情况
    	else{
    		strncpy(a1,a,2);
       	a1[2]='';
       	number=chineseTransformNumber(a1)*10;
       	strncpy(a1,a+4,2);
       	a1[2]='';
       	number=number+chineseTransformNumber(a1);
    	}//这是出现几十几的情况	
    	return number;
    }
    
    void print_super(int a)
    {
    	if(a<20){
    		 
         if(a%10==1)printf("十一");
        else if(a%10==2)printf("十二");
        else if(a%10==3)printf("十三");
        else if(a%10==4)printf("十四");
        else if(a%10==5)printf("十五");
        else if(a%10==6)printf("十六");
        else if(a%10==7)printf("十七");
        else if(a%10==8)printf("十八");
        else if(a%10==9)printf("十九");
        
    	}	
    	else if(a%10==0){
    	 if(a/10==2)printf("二十");
        else if(a/10==3)printf("三十");
        else if(a/10==4)printf("四十");
        else if(a/10==5)printf("五十");
        else if(a/10==6)printf("六十");
        else if(a/10==7)printf("七十");
        else if(a/10==8)printf("八十");
        else if(a/10==9)printf("九十");
        else if(a/10==10)printf("一百"); 
    	} 
    	else{
    		print_numberTransformChinese(a/10);
    		printf("十");
    		print_numberTransformChinese(a%10);
    	}
    }
    

    我写的代码都太浅显了应该能比较容易懂,两位数的输出我分成了三种情况来转化:十几、几十、几十几。


    接下来就是补充上次没有做成功的脚本

    编译脚本




    最后一张图片一不小心命名错误了,应该是编译脚本。是我粗心了
    将.txt的文本改为后缀为.bat,要设置为ANSI的编码格式,再次点开.bat的文件,我的钱包.cpp就编译为钱包.exe。

    测试脚本

    单元测试

    chineseTransformNumber函数测试

    superTransform函数测试

    sum函数测试

    最终测试


    两位数的运算和转化成功实现。

    出现负数的运算和转化基本成功实现,关于负数部分我只编写到负十到负一的范围。

    加减乘除的运算和转化成功实现。

  • 相关阅读:
    【Jenkins】插件更改国内源
    【Jenkins】参数化引用
    【selenium】各种exception
    利用浏览器的console篡改cookie
    【python】django 分页器 Paginator 基础操作
    centos7 安装php7遇到的问题
    归并排序(自顶向下、原地归并)
    希尔排序
    插入排序
    选择排序
  • 原文地址:https://www.cnblogs.com/ponynice/p/12297209.html
Copyright © 2011-2022 走看看