九度-1010 A+B

本文介绍了一个将英文单词形式的数字转换为数值并进行加法运算的C程序。该程序能够读取英文形式的数字,如one、two等,并计算它们的总和。文章还提供了一个实例,帮助理解如何处理输入并给出正确的输出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目描述:
读入两个小于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 =
样例输出:
3
90
96
错误原因:
main函数中用于输入的数组s越界(s用字符指针定义,没有分配空间)导致Runtime Error。
代码:
# include <stdio.h>
# include <string.h>

char* dig[10]={"zero","one","two","three","four","five","six","seven","eight","nine"};
int loc(char *s)
{
  int i;
  for (i=0;i<10;i++)
    if (strcmp(dig[i],s)==0)
      break;
  return i;    
}

int main ()
{
  int a,b,f;
  char s[10];
  do
  {
    a=b=0;
    f=1;
    scanf ("%s",s);
    while (strcmp(s,"=")!=0)
    {
      if (strcmp(s,"+")!=0&&f==1)
        a=a*10+loc(s);
      else if (strcmp(s,"+")!=0&&f==2)      
        b=b*10+loc(s);
      else if (strcmp(s,"+")==0)
        f=2;
      scanf ("%s",s);
    }  
    a=a+b;
    if (a!=0)
      printf ("%d\n",a);
  }while (a!=0);
  return 0;
} 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值