寒假作业1_编程题

编程要求:
编写一个程序,输入满足以下语法要求的一段文字,输出运行后的结果。
变量定义:整数 钱包 等于 零
运算(加法):钱包 增加 四
运算(减法):钱包 减少 四
输出:看看 钱包

这道题需要实现中文输入以及中文输出,进行加减运算(我只能进行很少次的运算,更深一步的还没有弄懂,作业截止日期要到了,我就先把我能搞出来的提交啦~),我使用的是c++;
我的思路是这样的:
1、首先需要把输入的中文数字转化成阿拉伯数字保存为整型,定义函数num():

int num(string character)
{
int a;
if(character"零")a=0;
else if(character
"一")a=1;
else if(character"二")a=2;
else if(character
"三")a=3;
else if(character"四")a=4;
else if(character
"五")a=5;
else if(character"六")a=6;
else if(character
"七")a=7;
else if(character"八")a=8;
else if(character
"九")a=9;
else if(character"十")a=10;
return a;
}

2、对汉字“增加”、“减少”、“看看”分别对应到运算符+、-、=,定义函数plus():

int plus(int sum1,int num2,string symbol)
{
int sum;
if(symbol"增加")
sum=sum1+num2;
else if(symbol"减少")
sum=sum1-num2;
else if(symbol
"看看")
sum=sum1;
return sum;
}

3、判断前后出现的变量名是否一致,定义函数check_variable(),如果后面出现的变量名与第一行定义的变量名不一致,则终止函数,并输出“***未被定义”:

int check_variable(string s1,string s2,string s3,string s4)
{
int flag=0;
if(s1!=s2)
{
cout<<'\n'<<s2<<"\nwas not declared in this scope\n";
flag=1;
}
if(s1!=s3)
{
cout<<'\n'<<s3<<" was not declared in this scope\n";
flag=1;
}
if(s1!=s4)
{
cout<<'\n'<<s4<<"\nwas not declared in this scope\n";
flag=1;
}
return flag;
}

4、对输出格式进行处理,我的代码需要注意一些较特殊的数据(如20、10):

//输出大于10的数的十位数
void num1(int num)
{
if(num1)
cout<<"十";
else if(num
2)
cout<<"二十";
}


//输出大于10的数的个位数、以及小于等于10的数
void num2(int num)
{
if(num0)
cout<<"零"<<endl;
else if(num
1)
cout<<"一"<<endl;
else if(num2)
cout<<"二"<<endl;
else if(num
3)
cout<<"三"<<endl;
else if(num4)
cout<<"四"<<endl;
else if(num
5)
cout<<"五"<<endl;
else if(num6)
cout<<"六"<<endl;
else if(num
7)
cout<<"七"<<endl;
else if(num8)
cout<<"八"<<endl;
else if(num
9)
cout<<"九"<<endl;
else
cout<<"十"<<endl;
}

最后把以各函数用于主函数:

include

using namespace std;
int main()
{
int num(string character);
int check_variable(string s1,string s2,string s3,string s4);
int plus(int sum1,int num2,string symbol);
void num1(int sum);
void num2(int sum);
string s11,s12,s13,s14,s21,s22,s23,s31,s32,s33,s41,s42;int a1,a2,a3,sum,sum1,sum2;
cin>>s11>>s12>>s13>>s14;
cin>>s21>>s22>>s23;
cin>>s31>>s32>>s33;
cin>>s41>>s42;
//把各个汉字数值变化量转化成阿拉伯数字
a1=num(s14);
a2=num(s23);
a3=num(s33);
//求出最终数值
sum=a1;
sum=plus(sum,a2,s22);
sum=plus(sum,a3,s32);
sum=plus(sum,1,s42);
//判断各变量是否是第一行定义的变量,如果有一个不是,终止,如果都是,输出最终结果
if(check_variable(s12,s21,s31,s42))
return 0;
else
{
if(sum>=0&&sum<=10)
{
num2(sum);
}
else
{
sum1=sum/10;
num1(sum1);
sum2=sum%10;
if(sum2==0)
;
else
num2(sum2);
}
return 0;
}
}

我本来打算用vscode完成这次的编程题的,但是c++配置出了点问题,中文输出一直是乱码,到现在还没有弄好,所以最后只能用Devc++;
如果使用vscode进行c/c++程序的编写,可能会出现输出弹窗闪退的问题,可以在代码里面加上#include<windows.h>头文件+system(“pause”);也可以用cin.get(),这样小黑窗就会等待输入不会闪退啦;

实例 输入: 整数 钱包 等于 零 钱包 增加 四 钱包 减少 三 看看 钱包 输出: 一
![](https://img2018.cnblogs.com/blog/1926297/202001/1926297-20200127001241212-1849688706.png)
posted @ 2020-01-26 20:40  sl0805  阅读(178)  评论(0编辑  收藏  举报