这个作业属于哪个课程 | 2020面向对象程序设计-张栋班 |
---|---|
这个作业要求在哪里 | 寒假作业1 |
这个作业的目标 | 1.了解c语言的缺点与c++的优点 2.了解c/c++的编译过程 3.查看c++编译器的版本 4.用命令行编译一份c/c++代码 5.编写一个程序,实现简单的中文编程 |
作业正文 | 1-问答题 2-实践题 3-编程题 |
其他参考文献 | 详见问答题和实践题 |
编程题
题目描述
中国文化博大精深,从仓颉造字开始,汉字一直流传到了今天。我们在感叹汉字的源远流长时,也不禁感慨,为什么没有一门使用汉字编程的语言?
汉字真的不能编程吗?最近文言文编程火了一把,吾有一數。曰三。名之曰「甲」。
这朴实无华的变量定义无疑不是几千年来中华文化的发展中一朵奇葩。
今天小王同学想,文言文能编程那白话文呢?他找到了你,让你帮帮他。编程要求
编写一个程序,输入满足以下语法要求的一段文字,输出运行后的结果。
变量定义:整数 钱包 等于 零
运算(加法):钱包 增加 四
运算(减法):钱包 减少 四
输出:看看 钱包样例
输入:
整数 钱包 等于 零
钱包 增加 四
钱包 减少 三
看看 钱包
输出:
一
思路
题目要求
通过白话文编程,实现三位数以下的加减法
分解需求
- 语法定义:遇到“整数”,定义变量“钱包”,把“等于”、“增加”“减少”后面中文所代表的大小转化为数值,进行相应的运算,最后遇到“看看”输出最终结果
- 习惯化处理:输出“零”而不是“零零”,输出“十”而不是“一零”,输出“二十”而不是“二十零”
- 异常处理:输入与语法要求不一致时,输出异常指示
完整代码(orz 一点都不完整的编译不成功的没写完的代码)
#include<stdio.h> #include<string.h> int transform_num(char str[]); int main() { int i, value; char flag[10], name[10], operate[10], num[10],var[10]; scanf("%s %s %s %s", flag, name, operate, num); value = transform_num(num); scanf("%s", var); while (strcmp(var, name) == 0) { scanf("%s %s",operate,num); if (strcmp(operate, "增加") == 0) { scanf("%s", num); value += transform_num(num); } else if (strcmp(operate, "减少") == 0) { scanf("%s", num); value -= transform_num(num); } scanf("%s", var); } scanf("%s %s", operate, name); printf("%s",value ); return 0; } int transform_num(char str[]) { int input; if (strlen(str) == 2) { if (!strcmp(str, "零")) input=0; else if (!strcmp(str, "一")) input = 1; else if (!strcmp(str, "二")) input = 2; else if (!strcmp(str, "三")) input = 3; else if (!strcmp(str, "四")) input = 4; else if (!strcmp(str, "五")) input = 5; else if (!strcmp(str, "六")) input = 6; else if (!strcmp(str, "七")) input = 7; else if (!strcmp(str, "八")) input = 8; else if (!strcmp(str, "九")) input = 9; } else{ if (str[0] == '一')input = 10; else if (str[0] == '二')input = 20; else if (str[0] == '三')input = 30; else if (str[0] == '四')input = 40; else if (str[0] == '五')input = 50; else if (str[0] == '六')input = 60; else if (str[0] == '七')input = 70; else if (str[0] == '八')input = 80; else if (str[0] == '九')input = 90; if (str[1] == '一')input += 1; else if (str[1] == '二')input += 2; else if (str[1] == '三')input += 3; else if (str[1] == '四')input += 4; else if (str[1] == '五')input += 5; else if (str[1] == '六')input += 6; else if (str[1] == '七')input += 7; else if (str[1] == '八')input += 8; else if (str[1] == '九')input += 9; } return input; }