帮忙看一下这个C语言的题目 高手来帮忙解答一下

内容:简体中文今天我们如果将a=1,b=2,c=3....以此类推下去,将单字裏的每个文字依照上面规则转换成数字再相加起来的话。知识(KNOWLEDGE)只有96分,努力... 内容: 简体中文

今天我们如果将a=1,b=2,c=3....以此类推下去,
将单字裏的每个文字依照上面规则转换成数字再相加起来的话。
知识(KNOWLEDGE)只有96分,
努力(HARDWORK)只有98分,
但态度(ATTITUDE)却是100分。

风台高中的Norton看到了上面的文章后并不相信,
他想把它们真的加起来看看,
以找到一个字可以反驳这个「态度最重要」的理论
但却讨厌换来换去的过程,
请帮他写个程式方便他去做运算。

输入说明:

输入英文单字,大小写不限,当输入0的时候就结束程式。
长度最长为200个字。
请参照Sample Input。

输出说明:

输出将英文单字依照题目的规则转换成数字后相加的结果,如果中间参杂怪异的符号,请输出Fail;但是英文字母的大小写并不会影响结果,也就是说A和a所代表的值是相同
的。请参照Sample Output。

范例输入:
若题目没有特别说明,则应该以多测资的方式读取,若不知如何读取请参考 a001 的范例程式。hardwork
KNOWLEDGE
aTtitUdE
C++
0
范例输出 :

98
96
100
Fail

#include<stdio.h>
#include<math.h>
int main()
{

char i,a[500],number=0;
while(scanf("%s",a)!=EOF)
{
if(a[0]=='0') break;
else
{
for(i=0;i<strlen(a);i++)
{
if (a[i]<=122&&a[i]>=97) number=number+a[i]-96;
else if(a[i]<=90 &&a[i]>=65) number=number+a[i]-64;
else {
printf("Fail\n");
break;
}
}
if( i==strlen(a))
{
printf("%d\n",number);
}
}
number=0;

}

return 0;
}

题目并不难 就是字符转化成数字的和
我觉得我的程序似乎并没有问题啊
可是如果字符多了之后 结果就不对了
还会出现负数
但是所有结果的绝对值都小于等于120
有哪位高手可以解释一下这是个什么情况 谢谢了!!!帮忙看下!!!
我知道到问题源头了
我用来计数的number用的是 char定义
虽然char定义的变量也可以存数字
但是最大也不过是120
所以益初了之后就会出现错误!!!
展开
 我来答
yanhe0116
2009-06-07 · TA获得超过4759个赞
知道大有可为答主
回答量:3218
采纳率:0%
帮助的人:3528万
展开全部
首先,你的程序就有问题,你没有加string.h的头文件,其他问题我再看看
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式