字符型?整型?

题目是:
描述
输入三个字符,按以下规则求其平均值。(1)如果是数字0~9,那么直接参与求值;(2)如果是其他字符,则其ASCII码参与求值。
输入
输入数据有多组。第一行是数据的组数T,接下来由T行,每行有3个字符,没有其他任何多余字符。
输出
对于每组输入,根据规则输出平均值。保留2位小数。
样例输入
2123
1A3
样例输出2.00
23.00

我是这样做的:
#include <stdio.h>
int main()
{ char a[4];
int sum,i,n;
float t;
scanf("%d",&n);
while(n--)
{sum=0;
getchar();
scanf("%s",a);
for(i=0;i<3;i++)
{
if(a[i]>='0'&&a[i]<='9')
sum=sum+a[i]-'0';
else
sum=sum+a[i];
}
t=float(sum)/3.0;
printf("%.2f\n",t);
}

return 0;
}
测试结果正确

提交后wronganswer?why呢?
在相等…

其实问题在于scanf("%s",a)上,您可以输入三个空格(空格也是字符)试试,那么就不能输出结果了。修改后的代码如下:
#include <stdio.h>
int main()
{
char a[4];
int sum,i,n;
float t;
scanf("%d",&n);
getchar();// 读取缓冲中的回车
while(n--)
{
sum=0;
gets(a); // 使用gets函数,最后的回车自动转换为'\0'
for(i=0;i<3;i++)
{
if(a[i]>='0'&&a[i]<='9')
sum=sum+a[i]-'0';
else
sum=sum+a[i];
}
t=float(sum)/3.0;
printf("%.2f\n",t);
}
return 0;
}追问

哦哦,谢谢啦……

追答

不客气的。

温馨提示:答案为网友推荐,仅供参考
相似回答