新手的每日一问
#include <stdio.h>
int main()
{
int ch,sum=0;
while(1)
{
printf("请输入合法的数字(输入为q的时候退出):");
scanf("%d",&ch);//单个输入输入一个数字或者字符
if (ch == 'q' )
{
break;
}
else
{
if (ch<='0'|| ch>='9')//当输入非单个数字的时候
{
printf("您输入有误!请重新输入:\n");
}
else
{
ch = ch - '0';//得到数字
sum = sum + ch;
}
}
}
printf("结果是:%d",sum);
return 0;
}
}
当我输入数字的时候显示输入错误,当输入字母的时就。。。如图所示:
本帖最后由 910201513 于 2019-2-25 17:34 编辑
第七行,你的ch定义的是int型,不可以传入char字符,‘0’的ASCII值为48,单个数字一定小于48,所以。。。
而且单个数字判断应该是小于0或大于9,不能加等于,要不然就是1~8 本帖最后由 910201513 于 2019-2-25 17:35 编辑
我不明白你字符的用意{:10_312:} {:10_312:} {:10_312:} #include <stdio.h>
int main()
{
int sum = 0,ch;
while (1)
{
printf("请输入合法的数字(输入为666的时候退出):");
scanf("%d", &ch);//单个输入输入一个数字或者字符
if (ch == 666)
{
break;
}
else
{
if (ch < 0 || ch > 9)//当输入非单个数字的时候
{
printf("您输入有误!请重新输入:\n");
}
else
{
sum = sum + ch;
}
}
}
printf("结果是:%d", sum);
return 0;
} 如果你觉得一定要添加进char请跟帖 910201513 发表于 2019-2-25 17:26
如果你觉得一定要添加进char请跟帖
1 GumpYu 发表于 2019-2-25 17:45
1
那麻烦你字符的用意还是说就纯粹想用一个p退出循环
代码我重新写可以吧
还是改你的代码 910201513 发表于 2019-2-25 17:47
那麻烦你字符的用意还是说就纯粹想用一个p退出循环
代码我重新写可以吧
还是改你的代码
能麻烦改一下可以嘛,刚刚出去了一下不好意思没能及时回您 #include <stdio.h>
int main(void)
{
int s = 0;
char ch,emmm;
while (1)
{
printf("请输入:");
ch = getchar(); /*获取输入字符*/
emmm = getchar(); /*吸收输入完字符的回车键*/
if (ch<'0' || ch>'9') /*判断是否为数字*/
{
if (ch == 'p') /*判断是否为p*/
{
printf("--------分割线--------\n");
printf("和为:%d\n", s);
return 0;
}
else /*不为p时输出Error!!!*/
printf("Error!!!\n");
}
else /*为数字时求和*/
s = s + ch - '0';
}
} 910201513 发表于 2019-2-25 20:16
谢谢!{:10_277:}
页:
[1]