这个作业属于哪个课程 | https://edu.cnblogs.com/campus/fzzcxy/SE/ |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/fzzcxy/SE/homework/10283 |
这个作业的目标 | 制作一个简易的中文语言编译器 |
作业正文 | |
其他参考文献 |
1.编程题目
汉字是迄今为止持续使用时间最长的文字,也是上古时期各大文字体系中唯一传承至今者,中国历代皆以汉字为主要的官方文字。我们在感叹汉字的源远流长时,也不禁感慨,为什么没有一门使用汉字编程的语言?
小杨同学想到:用汉字来进行编程一定很有趣,来请你帮帮他。
2.编程要求
请编写一个程序,制作一个简易的中文语言编译器,即使用中文语法进行编程,输入为逐行输入,每行为一个语句,一个语句代变一个操作,满足以下语法要求(括号内代变格式类型,具体参考样例):
变量定义:整数 (变量名) 等于 (数字)
运算(加法):(变量名) 增加 (数字)
运算(减法):(变量名) 减少 (数字)
输出:看看 (变量名) or 看看 “(字符串内容)”
附加要求:
选择:如果 (判断语句) 则 (操作语句) 否则 (操作语句)
若否则后没有任何操作使用(无)来进行填充(参考样例2)
3.遇到问题:
问题:[Error] 'for' loop initial declarations are only allowed in C99 or C11 mode
参考:https://blog.csdn.net/qq_38316655/article/details/82830565
问题:如何通过 GitHub Desktop 上传代码到 GitHub 远程仓库(暂时未完成)
参考:http://www.bubuko.com/infodetail-2631368.html
4.记录
行数:64
用时:>4天
首次编译时间:2s+
编译时间: 0.33s
5.代码:
include<stdio.h>
include<string.h>
include<malloc.h>
include<math.h>
int num(char n[])
{
if(strcmp(n,"零") == 0) return 0;
else if(strcmp(n,"一") == 0) return 1;
else if(strcmp(n,"二") == 0) return 2;
else if(strcmp(n,"三") == 0) return 3;
else if(strcmp(n,"四") == 0) return 4;
else if(strcmp(n,"五") == 0) return 5;
else if(strcmp(n,"六") == 0) return 6;
else if(strcmp(n,"七") == 0) return 7;
else if(strcmp(n,"八") == 0) return 8;
else if(strcmp(n,"九") == 0) return 9;
else if(strcmp(n,"十") == 0) return 10;
else return -1;
}
void chinese(int x)
{
switch(x)
{
case 0:printf("零");break;
case 1:printf("一");break;
case 2:printf("二");break;
case 3:printf("三");break;
case 4:printf("四");break;
case 5:printf("五");break;
case 6:printf("六");break;
case 7:printf("七");break;
case 8:printf("八");break;
case 9:printf("九");break;
case 10:printf("十");break;
}
}
int main()
{
char zhengshu[100],name[100],is[100],n[100],c[100],v[100],b[100],l[100],z[100],m[100],k[100],p[100],o[100];
char a[10],oper[10],ruguo[10];
int x,i;
scanf("%s %s %s %s",zhengshu,name,is,n);
getchar();
if(strcmp(zhengshu,"整数") == 0)
{
if(strlen(n) == 2)
{
x = num(n);
if(x != -1)
{
for(i = 0 ; i < 2 ; i++)
{
scanf("%s %s %s
",a,oper,is);
if(strcmp(oper,"增加") == 0) x += num(is);
if(strcmp(oper,"减少") == 0) x -= num(is);
}
scanf("%s",ruguo);
}
if(strcmp(ruguo,"如果")==0){//cvblmzkpo
scanf("%s %s %s %s %s %s %s %s ",k,p,is,o,b,c,l,m);
if(x > 8){
chinese(x);
printf("%s",c);
} else{
printf("%s",m);
}
}
}
}
}