zoukankan      html  css  js  c++  java
  • 编程题

    编程题

    • 继续完成作业二的编程题。
    • 优化架构,思考代码的拓展性,比如我需要增加其他功能,如选择,循环语句怎么办。
    • 思考:可以参考现有的编程语言,把这些语言的内容加入。如选择、循环语句、函数、或者扩大数字范围,支持负数等。
      增加负数的计算,将负数转化为数字,接着又将负数变为正数计算,往下如果是增加则变为减少,反之为增加。
    int fu_change(char num[])
     {
     	int h;
     	if(strcmp("负一",num)==0)
     	h=-1;
     	if(strcmp("负二",num)==0)
     	h=-2;
    	if(strcmp("负三",num)==0) 
    	h=-3;
    	if(strcmp("负四",num)==0) 
    	h=-4;
    	if(strcmp("负五",num)==0) 
    	h=-5;
    	if(strcmp("负六",num)==0) 
    	h=-6;
    	if(strcmp("负七",num)==0) 
    	h=-7;
    	if(strcmp("负八",num)==0) 
    	h=-8;
    	if(strcmp("负九",num)==0) 
    	h=-9;
    	if(strcmp("负十",num)==0) 
    	h=-10;
    	return h; 
     }
    

    测试如下


    完整的代码
    #include <stdio.h>
    #include <string.h>
    #include <math.h>
    int change(char num[]);
    int fu_change(char num[]);
    void out(int shu);
    int main()
    {
    	char place[100];
    	printf("请输入地址:
    ");
        scanf("%s",&place);
        freopen(place,"r",stdin); 
    	int n,v=0,i=1,l,f,g;
    	char a[50],b[50],c[50],d[50];
    	printf("输入的汉字数字在负十-十之间:
    ");
    	scanf("%s %s %s %s",&a,&b,&c,&d);
    	if(strcmp("整数",a)==0)
    	{
    		if(strcmp("等于",c)==0)
    		{
    		//
    			l=strlen(d);
    			if(l==2)	
    			n=change(d);
    			else
    			n=fu_change(d);
    			while(1)
    			{
    			scanf("%s",&a);
    			 if(strcmp("看看",a)==0)
            	break;
            	scanf("%s %s",&b,&c);
    			l=strlen(c);
    			if(strcmp("增加",b)==0)
    			{
    				
    				if(l==2)
    				n+=change(c);//加 
    				else
    				{
    					f=abs(fu_change(c));
    					n-=f;
    				}
    			}
    			if(strcmp("减少",b)==0)
    			{
    				if(l==2)
    				n-=change(c);	//减 
    				else
    				{
    					f=abs(fu_change(c));
    					n+=f;
    				}
    			}
    			
    			if(strcmp("增加",b)!=0&&strcmp("减少",b)!=0)
    			{
    				printf("输入的增加或减少错误,请重输
    "); 
    			}
    	}
    	scanf("%s",&b);
    	if(strcmp("看看", a)==0)
    	{
    		g=abs(n);
    		if(n<0)
    		printf("负");
    		if(g<=10)//和<=10 
    		out(g);
    		if(g>10&&g<20)//10-20
    		{
    			printf("十");
    			out(g%10); 
    		}
    		if(g>=20&&g<100)//20-99 
    		{
    			int q=0;
    			if(g%10==0)//整十 
    			{
    				out(g/10);
    				printf("十");
    			}
    			else
    			{
    				out(g/10);
    				printf("十"); 
    				out(g%10);
    			}
    		}
    		if(g==100)
    		printf("一百"); 
    		if(g>100)
    		{
    		printf("超出运算范围"); 
    		}	
    	}
    	}
    	else
    	printf("ERROR");
    	}
    	else
    	printf("ERROR");
    	return 0;
    }
    int change(char num[])
    {
    	int h=0;
    	if(strcmp("一",num)==0)
    	h=1;
    	if(strcmp("二",num)==0)
    	h=2;
    	if(strcmp("三",num)==0)
    	h=3;
    	if(strcmp("四",num)==0)
    	h=4;
    	if(strcmp("五",num)==0)
    	h=5;
    	if(strcmp("六",num)==0)
    	h=6;
    	if(strcmp("七",num)==0)
    	h=7;
    	if(strcmp("八",num)==0)
    	h=8;
    	if(strcmp("九",num)==0)
    	h=9;
    	if(strcmp("十",num)==0)
    	h=10;
    	return h;
     } 
     void out(int shu)
     {
     	switch(shu)
    	{
     	case 0:	printf("零");break;
     	case 1: printf("一");break;
    	case 2:	printf("二");break;
    	case 3:	printf("三");break;
    	case 4:	printf("四");break;
    	case 5:	printf("五");break;
    	case 6:	printf("六");break;
    	case 7:	printf("七"); break;
    	case 8:	printf("八"); break;
    	case 9:	printf("九"); break;
    	case 10: printf("十"); break;
    	}
     }
     int fu_change(char num[])
     {
     	int h;
     	if(strcmp("负一",num)==0)
     	h=-1;
     	if(strcmp("负二",num)==0)
     	h=-2;
    	if(strcmp("负三",num)==0) 
    	h=-3;
    	if(strcmp("负四",num)==0) 
    	h=-4;
    	if(strcmp("负五",num)==0) 
    	h=-5;
    	if(strcmp("负六",num)==0) 
    	h=-6;
    	if(strcmp("负七",num)==0) 
    	h=-7;
    	if(strcmp("负八",num)==0) 
    	h=-8;
    	if(strcmp("负九",num)==0) 
    	h=-9;
    	if(strcmp("负十",num)==0) 
    	h=-10;
    	return h; 
     }
    

    思考:
    将负数与正数区分开,使用了‘strlen’函数,刚开始以为负数的长度为2,正数为1,结果运行之后答案错误,之后才发现原来负数的长度为4,正数为2。还用了‘abs’函数,因为有了负数的存在,我想着是将负数变成正数,之后再进行计算,因为如果是负数的话那增加就会变成n+=fu_change(c),即n+-一个数,那样是没法计算的叭,所以就统一将其全变成正数计算。

  • 相关阅读:
    deque-pop_back
    deque-max_size
    deque-insert
    deque-insert
    deque-front
    deque-front
    deque-erase
    deque-erase
    deque-end
    Angular2入门教程-1
  • 原文地址:https://www.cnblogs.com/clt1120/p/12317347.html
Copyright © 2011-2022 走看看