我写的代码-浙大上机题目

haizzz 免费考研论坛/2008-07-22

原文内容来自免费考研论坛,请点击查看全文
http://bbs.freekaoyan.com/viewthread.php?tid=288804
题目要求:
读入两个小于100的正整数A和B,计算A B。需要注意的是:A和B的每一位数字由对应的英文
单词给出。
具体的输入输出格式规定如下:
输入格式:测试输入包含若干测试用例,每个测试用例占一行,格式为"A B =",相邻两
字符串有一个空格间隔。当A和B同时为0时输入结束,相应的结果不要输出。
输出格式:对每个测试用例输出1行,即A B的值。

输入样例:

one two
three four five six
zero seven eight nine
zero zero

输出样例:

The result is 3
The result is 90
The result is 96
附加要求:
(1)不能用string.h及其相关库函数
(2)出错检测机制

下面的程序是我自己写的,还请大家指教!
/*在VC 6.0 下调试通过*/ #include <stdio.h>
#define ERROR 300

char *num[10]={"zero\n","one\n","two\n","three\n","four\n","five\n","six\n","seven\n","eight\n","nine\n"};
char a[15],b[15];

int Compare(char *a,char *b,int length);
int GetNumber(char *s);
int GetStringLength(char *s);
int GetFinger(char *s);

void main()
{
char temp;
int i=0,j=0,num1=0,num2=0;
int flag=0;
do
{
printf("Please input your commend like this: (three four five six)\n ");
scanf("%c",&temp);
while(temp!='\n')
{
if(temp==' ')
{
flag=1;
}
if(flag==0)
{
a=temp;
i ;
}
else
{
b[j]=temp;
j ;
}
scanf("%c",&temp);
}
b[j]='\n';
a[i-1]='\n';
i=0;
j=0;
/*去掉b[]中前面的一个加号和一个空格*/ while(b!='\n')
{
b=b[i 2];
i ;
}
i=0;j=0;
flag=0;
num1=GetFinger (a);
num2=GetFinger (b);
if(num1==0 && num2==0)
break;
if(num1==ERROR || num2==ERROR)
break;
printf("\nThe reuslt is: %d %d=%d\n",num1,num2,num1 num2);
}while(1);
}

/*从num[]数组中找到与输入的s相应的数字*/ int GetNumber(char *s)
{
int i=0;
for(i=0;i<10;i )
{
if(Compare(s,num,GetStringLength(s)))
return i;
}

return 10;
}
/*比较两个字符串是否相等*/ int Compare(char *a,char *b,int length)
{
for(int i=0;i<=length;i )
{
if(a!=b)
break;
}
if(i-1==length)
return 1;
else
return 0;
}

int GetStringLength(char *s)
{
int i=0;
while(s!='\n')
{
i ;
}
return i;
}
/*将形如three one的字符串转换成31这样的数字*/ int GetFinger(char *s)
{
char a1[10],a2[10];
int i=0,j=0,k=0,temp,a;
while(s!=' ' && s!='\n')
{
a1[j]=s;
i ;
j ;
}
a1[j]='\n';
temp=GetNumber (a1);
if(temp==10)
{
printf("\nyou have a error number:");
while(a1[k]!='\n')
{
printf("%c",a1[k]);
k ;
}
return ERROR;
}
a=temp;
j=0;
if(s==' ')
{
i ;
while(s!='\n')
{
a2[j]=s;
j ;
i ;
}
a2[j]='\n';
temp=GetNumber (a2);
if(GetNumber (a2)==10)
{
k=0;
printf("\nyou have a error number:");
while(a2[k]!='\n')
{
printf("%c",a2[k]);
k ;
}
return ERROR;
}

a=a*10 temp;
}
return a;
}

相关话题/

  • 领限时大额优惠券,享本站正版考研考试资料!
    大额优惠券
    优惠券领取后72小时内有效,10万种最新考研考试考证类电子打印资料任你选。涵盖全国500余所院校考研专业课、200多种职业资格考试、1100多种经典教材,产品类型包含电子书、题库、全套资料以及视频,无论您是考研复习、考证刷题,还是考前冲刺等,不同类型的产品可满足您学习上的不同需求。 ...
    本站小编 Free壹佰分学习网 2022-09-19