第三次作业
面向对象程序设计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]='\0';
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]='\0'; b[2]='\0';
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;
}
输入样例