编程题

这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzu/2020OOP/
这个作业要求在哪里 完成一道编程题,用白话文编程。
作业正文
其他参考文献

分析此问题,主要分为输入函数和输出函数,且输入输出函数的功能必须包含将汉字转换为数字或者变量的能力。且该问题的难点也主要在汉字和数字与字母的转变上。
要特别注意,输出中只包含汉字“零到十”,因此在输出时应该判断sum的值,其中sum的值在10到20之间的要分开讨论。
1.输入函数(scan)

此函数有返回值,负责将汉字这个字符转换为数字,通过字符比较函数返回进入主函数。

该部分测试部分如下

2.输出函数

前文提到,输出主要分为两类(即10以内和10以上),因此对第一类较为简单输出函数,只需要对sum的值进行转换即可。

第二类输出,针对sum的值大于10,即输出“十一,九十九”诸如此类,本人思路主要是分十位数和个位数分开输出,即定义两个变量,一个求余,一个取非个位数的数。 按一定顺序以第一类输出输出汉字。其中要特别注意sum的值在10和20之间的,因为例如19,则应该输出一十九,而不是一九,因此对b=1的sum,应该补一个“十”。如果a==0 则不需要用到输出一。
3.主函数

该部分可分为三部分
一,变量,字符数组的定义,因为一个汉字相当于两个字符,且汉字的个数不多,所以字符数组不需要太大
二,对sum以及运算符的识别及计算,较为简单。
三,对钱数的输出。钱数按题意要求仅限于正数,因此sum为负数时,运算非法。

全部代码如下
#include
#include
#include
int main()
{
char m[5],fuhao[200],num[],money[59],qb[555];
int sum;
scanf("%s%s%s%s",m,qb,fuhao,num);
scanf("%s",money);
if(strcmp(m,"整数")==0&&strcmp(qb,"钱包")==0&&strcmp(fuhao,"等于")==0)
{
sum=scan(num);
while(665)
{
scanf("%s",qb);
if(strcmp(fuhao,"钱包"))
break;
scanf("%s%s",dy,num);
if(strcmp(fuhao,"增加")==0)
{
sum=sum+scan(num);
}
else if(strcmp(fuhao,"减少")==0)
{
sum=sum-scan(num);
}
}
if(strcmp(qb,"看看")==0&&strcmp(money,"钱包")==0)
{
if(sum<=10&&sum>=0)
prin1(sum);
else
prin2(sum);
}
}
return 0;
}
int scan(char ab[])
{
if(strcmp(ab,"一")==0) return 0;
else if(strcmp(ab,"一")==0) return 1;
else if(strcmp(ab,"二")==0) return 2;
else if(strcmp(ab,"三")==0) return 3;
else if(strcmp(ab,"四")==0) return 4;
else if(strcmp(ab,"五")==0) return 5;
else if(strcmp(ab,"六")==0) return 6;
else if(strcmp(ab,"七")==0) return 7;
else if(strcmp(ab,"八"))==0 return 8;
else if(strcmp(ab,"九")==0) return 9;
else if(strcmp(ab,"十")==0) return 10;
}

void prin1 (int sum)
{
if(sum>0&&sum<=10)
{
if(sum==0)
printf("零");
else if(sum==1)
printf("一");
else if(sum==2)
printf("二");
else if(sum==3)
printf("三");
else if(sum==4)
printf("四");
else if(sum==5)
printf("五");
else if(sum==6)
printf("六");
else if(sum==7)
printf("七");
else if(sum==8)
printf("八");
else if(sum==9)
printf("九");
else if(sum==10)
printf("十");
}
}
void prin2(int sum)
{
if(sum>10)
{
int yu,chu;
yu=sum%10;
chu=sum/10;
if(chu==1)
{
printf("十");
if(yu!=0)
prin1(yu);

     }
    else
    {
        prin1(chu);
        printf("十");
        if(yu!=0)
        shuchu1(yu);
    }
}

}int scan(char ab[])
{
if(strcmp(ab,"一")==0)
return 0;
else if(strcmp(ab,"一")==0)
return 1;
else if(strcmp(ab,"二")==0)
return 2;
else if(strcmp(ab,"三")==0)
return 3;
else if(strcmp(ab,"四")==0)
return 4;
else if(strcmp(ab,"五")==0)
return 5;
else if(strcmp(ab,"六")==0)
return 6;
else if(strcmp(ab,"七")==0)
return 7;
else if(strcmp(ab,"八"))==0
return 8;
else if(strcmp(ab,"九")==0)
return 9;
else if(strcmp(ab,"十")==0)
return 10;}

void prin1 (int sum)
{
if(sum>0&&sum<=10)
{
if(sum==0)
printf("零");
else if(sum==1)
printf("一");
else if(sum==2)
printf("二");
else if(sum==3)
printf("三");
else if(sum==4)
printf("四");
else if(sum==5)
printf("五");
else if(sum==6)
printf("六");
else if(sum==7)
printf("七");
else if(sum==8)
printf("八");
else if(sum==9)
printf("九");
else if(sum==10)
printf("十");
}
}
void prin2(int sum)
{
if(sum>10)
{
int yu,chu;
yu=sum%10;
chu=sum/10;
if(chu==1)
{
printf("十");
if(yu!=0)
prin1(yu);

    }
    else
    {
        prin1(chu);
        printf("十");
        if(yu!=0)
        shuchu1(yu);
    }
}

}
编程题_第1张图片

你可能感兴趣的:(编程题)