我的毕业测试题目(C语言实现英文单词zero~nine的加法)

来源:互联网 发布:淘宝客推广方法有哪些 编辑:程序博客网 时间:2024/05/01 13:36

题目要求:完成如下功能:(C语言实现)
1. 输入两个英文数字(个位数或十位数)并相加,数字与数字,数字与算符之间用空格符分隔如one + two =,one two(12) + three =, 并输出数字结果。
2. 输入zero + zero = 结束程序
例如:one + two =
输出3;并可以继续输入。

代码实现部分:
include “stdio.h”
include “windows.h”
//函数功能:将英文输入的两个数相加并输出结果(如one + one =,显示2);
//对于格式要求较为严格。
int chartoint(char *c)//用于将英文转换成整型数
{
switch(c[0])
{
case ‘o’: return 1;
case ‘t’:if(c[1]==’w’) return 2; else return 3;
case ‘f’:if(c[1]==’o’) return 4; else return 5;
case ‘s’:if(c[1]==’i’) return 6; else return 7;
case ‘e’: return 8;
case ‘n’: return 9;
default: return 0;
}
}

bool match()//功能实现函数
{ int c,i=0,j=0,u=0,sum=0,count=0;
bool q[2]={false,false};//用来作为判断输入的数是十位数还是个位数,初始都为false,每一位对应一个数;
char a[4][5];//存放输入的数的英文
c=getchar();
while(c!=’=’)//判定=号的到来
{ while(c!=’+’&&c!=’\n’&&c!=’=’)//判定+号的到来
{
while(c!=’ ‘&&c!=’\n’&&c!=’=’)//判定空格
{ a[i][j++]=(char)c;
c=getchar();
}
if(c==’ ‘) //舍弃无用空格,得到新字符
{c=getchar();
if(a[i][0]>0&&a[i][0]<123)//判定空格类型,是数字与数字之间还是算符与数字之间
{ i++;//若是字符之间,则单个字母录入完毕,用下一组字符串数组存放下一个字符
j=0;
count++;}//count用于记录=号之前录入了几个数,如果是1则为个位数,如果是2则为十位数
}
}
if(count==2) //判断是个位数还是十位数。若是十位数则更改bool数组的值
{q[u++]=true;
count=0;
}
else u++;

    if(c==(int)'+') //将加号舍去录入下一个字符,并将count计数器清零    {c=getchar();     count=0;}}if(q[0]==true)//根据bool数组的记录来对应算结果{   if(q[1]==true)    {sum=chartoint(a[0])*10+chartoint(a[1])+chartoint(a[2])*10+chartoint(a[3]);    }    else{ sum=chartoint(a[0])*10+chartoint(a[1])+chartoint(a[2]);}}else{if(q[1]==true)    {sum=chartoint(a[0])+chartoint(a[1])*10+chartoint(a[2]);    }    else{ sum=chartoint(a[0])+chartoint(a[1]);}}if(sum==0) //判定是否结束    return false;else    {printf("%d\n",sum);flushall();//清除键盘输入return true;}

}

void main()
{
while(match());
}

0 0
原创粉丝点击