第三次作业

面向对象程序设计2020第二次作业

这个作业属于哪个课程 2020面向对象程序设计张栋班
这个作业要求在哪里 面向对象程序设计寒假作业3
这个作业的目标 继续完成作业2 对原有代码进行进一步的优化,提升功能
作业正文 第三次作业
其它参考文献

编程题

1.对于原有代码的思考
输入可以输入九十九以内的数,但是通常对于“十一”这样的数的输入还没办法处理
增加钱包贷的功能
进一步考虑输入百以上数字的功能

实现负数功能

这个应该比较简单,对于原来的数字可以直接得相反数,因为我的输出没有单独写函数而是放在主函数里了,所以只要管负号的单独输出问题就可以了。稍微判断一下就好了

if(n<0)
    	{
    		printf("负");
			n=-1*n; 
		}

处理一下输入类似十一这样的数字

下面是我原本的函数,输入十一这种就会出问题

int switch3(char shu[]) 
{
    int i,t=0,j;    char a[50];
    for(i=0;i<=10;i++)
    {
        if(strncmp(hanzi[i],shu,2)==0)
        {
        t=t+i*10;   break;
        }
    }
    for(j=0;j<2;j++)
    {
    if(strlen(shu)>5)   a[j]=shu[j+4];
    else    a[j]=shu[j+2];
    }
    a[2]='';
    for(i=0;i<10;i++)
    {
        if(strcmp(a,hanzi[i])==0)
        t+=i;
    }
    return t;
}

我想了想还是单独判断比较好,也挺容易的,就增加了下面几行就好了

if(strncmp(hanzi[i],"十",2)==0)
    	{
    		t+=10; break;
		}

处理一下输入百位以上千位以下的数字,我的想法还是再开一个函数来判断了,百位正常都是三位以上,除了整百

下面是我的函数,和原来的转换几十的函数差不多,不过多了几个步骤,我的关键还是一个一个的文字判断

int switch4(char shu[])
{
	int i,t=0,j;    char a[50],b[50];
	 for(i=0;i<=10;i++)
    {
        if(strncmp(hanzi[i],shu,2)==0)
        {
        t+=i*100;   break;
        }
    }
    for(j=0;j<2;j++)
    {
    if(strlen(shu)>8)   
    {
	a[j]=shu[j+4];
	b[j]=shu[j+8];
	}
    else    
    {
	a[j]=shu[j+4];
    }
    }
    a[2]=''; b[2]='';
     for(i=0;i<10;i++)
    {
        if(strcmp(a,hanzi[i])==0&&strlen(shu)>8)
        {
        t+=i*10;
        }
        if(strcmp(b,hanzi[i])==0&&strlen(shu)>8)
        {
        t+=i;
        }
        if(strcmp(a,hanzi[i])==0&&strlen(shu)<=8)
        {
        t+=i*10;
        }
    }
    return t;
}

输入样例

原文地址:https://www.cnblogs.com/Misanthropel/p/12312793.html