Fork me on GitHub

第一次编程作业

||这个作业属于哪个课程|软件工程|
|-- |-- |
|这个作业要求在哪里|第一次编程作业|
|这个作业的目标|介绍自己;具备能力;期待课程收获|
|作业正文||
|其他参考文献|无 |
作业要求
发布一篇随笔,使用markdown语法进行编辑。
在随笔前附上github仓库地址。
编程题目
汉字是迄今为止持续使用时间最长的文字,也是上古时期各大文字体系中唯一传承至今者,中国历代皆以汉字为主要的官方文字。我们在感叹汉字的源远流长时,也不禁感慨,为什么没有一门使用汉字编程的语言?
小杨同学想到:用汉字来进行编程一定很有趣,来请你帮帮他。

编程要求
请编写一个程序,制作一个简易的中文语言编译器,即使用中文语法进行编程,输入为逐行输入,每行为一个语句,一个语句代变一个操作,满足以下语法要求(括号内代变格式类型,具体参考样例):

变量定义:整数 (变量名) 等于 (数字)
运算(加法):(变量名) 增加 (数字)
运算(减法):(变量名) 减少 (数字)
输出:看看 (变量名) or 看看 “(字符串内容)”
附加要求:

选择:如果 (判断语句) 则 (操作语句) 否则 (操作语句)
若否则后没有任何操作使用(无)来进行填充(参考样例2)。
样例1
输入:

整数 气温 等于 十
气温 减少 三
气温 增加 二
看看 气温
如果 气温 大于 八 则 看看 “你好,世界” 否则 看看 “冻死我了”
输出:


你好,世界
样例2
输入:

整数 小杨年龄 等于 八
整数 小杨零花钱 等于 二
小杨年龄 增加 一
如果 小杨年龄 大于 八 则 小杨零花钱 增加 一 否则 无
看看 小杨零花钱
输出:


注意事项
输入输出采用utf-8编码,请在编码过程中注意。
数字只会出现:零一二三四五六七八九十。(此条作废,可先完成0-10的情况)
字符串输出的双引号是全角,即中文双引号。
变量类型要求只有整数,如有余力,可以自己实现更多。
测试数据会相较于样例复杂,请考虑充分需求。
不限制编程语言。
不能使用eval函数动态执行代码,或调用系统指令。
数据输入形式为交互式运行,类似于shell。
github要求
创建一个github仓库。
使用git或其他git图形应用程序(Github Desktop,TortoiseGit等)将程序代码传到仓库,commit信息遵守一定的git规范。
加入.gitignore文件和开源license。
随笔要求
要求记录包括但不限于以下内容:

记录自己的代码行数,需求分析时间,编码时间。
分解需求的思路,分解成多个模块,并阐述为什么这么分,优势在哪,可以附上代码片段。
记录不会的知识的学习过程以及修改优化的过程;可以附上资料网站。
自我发挥。
代码如下:

include<stdio.h>

include<string.h>

int main()
{
int point(char num[]);
void change(int a);
int qian,k;
char a[30], b[30], c[30], d[30],x[30],y[30],z[30];
scanf("%s%s%s%s", a, b, c, d);
if (strcmp(a, "整数") != 0 || strcmp(b, "钱包") != 0 || strcmp(c, "等于") != 0) {
printf("格式错误");
return 0;
}
else qian = point(d);
for(;😉 {
scanf("%s%s", x, y);
if (strcmp(x, "看看") == 0 && strcmp(y, "钱包") == 0){
change(qian);
break;
}
if (strcmp(x, "钱包") == 0) {
if (strcmp(y, "增加") == 0) {
scanf("%s", z);
k = point(z);
qian += k;
}
if (strcmp(y, "减少") == 0) {
scanf("%s", z);
k = point(z);
qian -= k;
}
}
else printf("格式错误");
}
return 0;
}
int point(char num[])
{
if (strcmp("零", num) == 0) return 0;
else if (strcmp("一", num) == 0) return 1;
else if (strcmp("二", num) == 0) return 2;
else if (strcmp("三", num) == 0) return 3;
else if (strcmp("四", num) == 0) return 4;
else if (strcmp("五", num) == 0) return 5;
else if (strcmp("六", num) == 0) return 6;
else if (strcmp("七", num) == 0) return 7;
else if (strcmp("八", num) == 0) return 8;
else if (strcmp("九", num) == 0) return 9;
else if (strcmp("十", num) == 0) return 10;
else{
int i, a, b, c;
char x[2], y[2];
for (i = 0; i < 2; i++){
x[i] = num[i];
y[i] = num[i + 2];
}
if (strcmp("十", x) == 0){
a = 10;
b = point(y);
c = a + b;
}
else {
a = point(x);
b = point(y);
c = a * 10 + b;
}
return c;
}
}
void change(int a)
{
void exchange(int b);
int x, y;
if (a <= 10) exchange(a);
else if (a > 10 && a < 20) {
printf("十");
x = a % 10;
exchange(x);
}
else if (a >= 20 && a % 10 == 0) {
y = a / 10;
exchange(y);
printf("十");
}
else {
x = a / 10;
exchange(x);
printf("十");
y = a % 10;
exchange(y);
}
}
void exchange(int b)
{
if (b == 0)printf("零");
if (b == 1)printf("一");
if (b == 2)printf("二");
if (b == 3)printf("三");
if (b == 4)printf("四");
if (b == 5)printf("五");
if (b == 6)printf("六");
if (b == 7)printf("七");
if (b == 8)printf("八");
if (b == 9)printf("九");
if (b == 10)printf("十");
}

posted @ 2020-02-09 20:14  林RR  阅读(204)  评论(0编辑  收藏  举报