标签:加法 词语 赋值 pos ret 中文 add operation turn
编程题(请使用C语言或者C++完成以下题目):(基础5分)
中国文化博大精深,从仓颉造字开始,汉字一直流传到了今天。我们在感叹汉字的源远流长时,也不禁感慨,为什么没有一门使用汉字编程的语言?
汉字真的不能编程吗?最近文言文编程火了一把,吾有一數。曰三。名之曰「甲」。这朴实无华的变量定义无疑不是几千年来中华文化的发展中一朵奇葩。
今天小王同学想,文言文能编程那白话文呢?他找到了你,让你帮帮他。
编写一个程序,输入满足以下语法要求的一段文字,输出运行后的结果。
变量定义:整数 钱包 等于 零
运算(加法):钱包 增加 四
运算(减法):钱包 减少 四
输出:看看 钱包
输入:
整数 钱包 等于 零
钱包 增加 四
钱包 减少 三
看看 钱包
输出:
一
#include<iostream>
#include<string.h>
using namespace std;
int sum;//总额
char var[10],ini[10],oper[100];//变量,初始化 operation 运算
int trans(char str[])
{
if(strcmp("零",str)==0)return 0;
if(strcmp("一",str)==0)return 1;
if(strcmp("二",str)==0)return 2;
if(strcmp("三",str)==0)return 3;
if(strcmp("四",str)==0)return 4;
if(strcmp("五",str)==0)return 5;
if(strcmp("六",str)==0)return 6;
if(strcmp("七",str)==0)return 7;
if(strcmp("八",str)==0)return 8;
if(strcmp("九",str)==0)return 9;
if(strcmp("十",str)==0)return 10;
}
void deal_add(char str[])
{
if(strcmp(" 增加 一",str)==0)sum+=1;
if(strcmp(" 增加 二",str)==0)sum+=2;
if(strcmp(" 增加 三",str)==0)sum+=3;
if(strcmp(" 增加 四",str)==0)sum+=4;
if(strcmp(" 增加 五",str)==0)sum+=5;
if(strcmp(" 增加 六",str)==0)sum+=6;
if(strcmp(" 增加 七",str)==0)sum+=7;
if(strcmp(" 增加 八",str)==0)sum+=8;
if(strcmp(" 增加 九",str)==0)sum+=9;
if(strcmp(" 增加 十",str)==0)sum+=10;
}
void deal_minus(char str[])
{
if(strcmp(" 减少 一",str)==0)sum-=1;
if(strcmp(" 减少 二",str)==0)sum-=2;
if(strcmp(" 减少 三",str)==0)sum-=3;
if(strcmp(" 减少 四",str)==0)sum-=4;
if(strcmp(" 减少 五",str)==0)sum-=5;
if(strcmp(" 减少 六",str)==0)sum-=6;
if(strcmp(" 减少 七",str)==0)sum-=7;
if(strcmp(" 减少 八",str)==0)sum-=8;
if(strcmp(" 减少 九",str)==0)sum-=9;
if(strcmp(" 减少 十",str)==0)sum-=10;
}
void output(int x)
{
if(x==0)cout<<"零";
if(x==1)cout<<"一";
if(x==2)cout<<"二";
if(x==3)cout<<"三";
if(x==4)cout<<"四";
if(x==5)cout<<"五";
if(x==6)cout<<"六";
if(x==7)cout<<"七";
if(x==8)cout<<"八";
if(x==9)cout<<"九";
if(x==10)cout<<"十";
}
int main()
{
for(int i=0;i<2;i++)cin>>var;//读入变量名
for(int i=0;i<2;i++)cin>>ini;//读入初始值
sum=trans(ini);//将初始值转换为数字,赋值给总额。
for(;;)
{
cin>>var;//通过cin读入变量名,遇到空格停止
gets(oper);//通过gets读入计算操作,但会读入前面的一个空格,所以上方的加减函数字符串前面有空格
deal_add(oper);//加
deal_minus(oper);//减
if(strcmp("看看",var)==0)break;//当读入“看看”时退出
}
if(sum<=10)output(sum);
if(sum>10)
{
int ten_position=sum/10;
if(ten_position==1)cout<<"十";
else{
output(ten_position);
cout<<"十";
}
output(sum%10);
}
return 0;
}
依题意,读入的第一行的格式分四个词,关键词语为第二个-变量名,和第四个-初始值,因此,通过投机取巧一个词读入两遍,后读入的赋值给变量,读入变量名和初始值。
其他读入方式见注释。
退出后,要计算总额。总额分大于10和小于等于10来考虑。
<=10:直接输出对应中文数字
大于10:如果十位是1的话,直接输出“十”,再输出个位数的数字对应汉字
十位不为1,先输出十位对应汉字,再单独输出一个汉字“十”,最后输出个位对应汉字
整数 钱包 等于 五
钱包 增加 四
钱包 减少 四
看看 钱包
整数 袋子 等于 五
袋子 增加 十
袋子 增加 十
袋子 增加 十
袋子 增加 十
看看 袋子
整数 我 等于 九
我 增加 四
我 减少 五
我 减少 八
看看 我
整数 魔方 等于 十
魔方 增加 五
魔方 减少 三
魔方 增加 六
看看 魔方
有空就再升级一下吧
#include<iostream>
#include<string.h>
using namespace std;
int sum;//总额
char var[10],ini[10],oper[100];//变量,初始化 operation 运算
int trans(char str[])
{
if(strcmp("零",str)==0)return 0;
if(strcmp("一",str)==0)return 1;
if(strcmp("二",str)==0)return 2;
if(strcmp("三",str)==0)return 3;
if(strcmp("四",str)==0)return 4;
if(strcmp("五",str)==0)return 5;
if(strcmp("六",str)==0)return 6;
if(strcmp("七",str)==0)return 7;
if(strcmp("八",str)==0)return 8;
if(strcmp("九",str)==0)return 9;
if(strcmp("十",str)==0)return 10;
}
void deal_add(char str[])
{
if(strcmp(" 增加 一",str)==0)sum+=1;
if(strcmp(" 增加 二",str)==0)sum+=2;
if(strcmp(" 增加 三",str)==0)sum+=3;
if(strcmp(" 增加 四",str)==0)sum+=4;
if(strcmp(" 增加 五",str)==0)sum+=5;
if(strcmp(" 增加 六",str)==0)sum+=6;
if(strcmp(" 增加 七",str)==0)sum+=7;
if(strcmp(" 增加 八",str)==0)sum+=8;
if(strcmp(" 增加 九",str)==0)sum+=9;
if(strcmp(" 增加 十",str)==0)sum+=10;
}
void deal_minus(char str[])
{
if(strcmp(" 减少 一",str)==0)sum-=1;
if(strcmp(" 减少 二",str)==0)sum-=2;
if(strcmp(" 减少 三",str)==0)sum-=3;
if(strcmp(" 减少 四",str)==0)sum-=4;
if(strcmp(" 减少 五",str)==0)sum-=5;
if(strcmp(" 减少 六",str)==0)sum-=6;
if(strcmp(" 减少 七",str)==0)sum-=7;
if(strcmp(" 减少 八",str)==0)sum-=8;
if(strcmp(" 减少 九",str)==0)sum-=9;
if(strcmp(" 减少 十",str)==0)sum-=10;
}
void output(int x)
{
if(x==0)cout<<"零";
if(x==1)cout<<"一";
if(x==2)cout<<"二";
if(x==3)cout<<"三";
if(x==4)cout<<"四";
if(x==5)cout<<"五";
if(x==6)cout<<"六";
if(x==7)cout<<"七";
if(x==8)cout<<"八";
if(x==9)cout<<"九";
if(x==10)cout<<"十";
}
int main()
{
for(int i=0;i<2;i++)cin>>var;//读入变量名
for(int i=0;i<2;i++)cin>>ini;//读入初始值
sum=trans(ini);//将初始值转换为数字,赋值给总额。
for(;;)
{
cin>>var;//通过cin读入变量名,遇到空格停止
gets(oper);//通过gets读入计算操作,但会读入前面的一个空格,所以上方的加减函数字符串前面有空格
deal_add(oper);//加
deal_minus(oper);//减
if(strcmp("看看",var)==0)break;//当读入“看看”时退出
}
if(sum<=10)output(sum);
if(sum>10)
{
int ten_position=sum/10;
if(ten_position==1)cout<<"十";
else{
output(ten_position);
cout<<"十";
}
output(sum%10);
}
return 0;
}
标签:加法 词语 赋值 pos ret 中文 add operation turn
原文地址:https://www.cnblogs.com/LiangYC1021/p/12235959.html