c语言程序 输入字符就会溢出,怎么解决? 小弟新手,请各位达人帮忙。

#include <stdio.h>

void main()
{
int a,b,sum;
int i=1;
while(i=1)
{
scanf("%d %d",&a,&b);
sum=a+b;
printf("%d\n",sum);
}
}
恩,要求的就是死循环;
格式是没错的,我是说输入字母的话就会出现溢出,他会无限输出下去。

第1个回答  2010-10-17
输入字符和输入整数不同,用scanf接收a和b时,输入时的空格键和回车键都会作为输入字符,例如输入c,d,不会有事,输出199。但是如果接着输入e,f,就会发现结果不对,而且输出了两个值111和134。这是因为在输入时,空格键和回车键也会作为字符存入缓冲区,当第二次输入ef,scanf会自动提取上一次的回车键作为输入字符,回车键10,e是101,故输出第一个111,接着e后面有一个空格,然后是f,进行的运算时空格32 + f102,结果134。如果一定要这样循环,应该使用getch()系列的函数,不应该用scanf()~
第2个回答  2010-10-17
当然输出字母就会出错,因为你的输入格式是%d,而不是%c

已修改(已调试):

注意输入中间有逗号。

#include <stdio.h>
void main()
{
int a,b,sum;
char ch1,ch2;
while(1)
{
if(scanf("%d,%d",&a,&b))
{
sum=a+b;
printf("%d\n",sum);
}
else if(scanf("%c,%c",&ch1,&ch2))
{
sum=ch1+ch2;
printf("%d\n",sum);
}
}
}
第3个回答  2010-10-17
输入的时候格式要正确,输入的2个整数之间加空格就对了。程序没错误。
另外你这个while是死循环。

程序没错,错在你没对输入的东西进行检查。
第4个回答  2010-10-17
#include <stdio.h>

void main()
{
int a,b;
int sum;
int i=1;
int j;
while(i==1)
{
if ((j = scanf("%d %d",&a,&b)) != 2)
{
printf("输入错误,请重新输入\n");
fflush(stdin);
continue;
}
sum=a+b;
printf("%d\n",sum);
}
}本回答被提问者采纳

c语言程序 输入字符就会溢出,怎么解决? 小弟新手,请各位达人帮忙。
输入字符和输入整数不同,用scanf接收a和b时,输入时的空格键和回车键都会作为输入字符,例如输入c,d,不会有事,输出199。但是如果接着输入e,f,就会发现结果不对,而且输出了两个值111和134。这是因为在输入时,空格键和回车键也会作为字符存入缓冲区,当第二次输入ef,scanf会自动提取上一次的回...

C语言的一个程序运行的问题..为什么反显会出错.请大家赐教
程序很简单,输入数据,输出回车(\\n),循环体是将输入的数据的最高位保存在数据空间j里。对于程序本身没错,编译通过,当你输入数据时,程序对数据进行计算,输入的数据超出-32768~32767时,输入数据错误,也就是说,你输入的数是0~65535时就是正确的数据,再解释,从32767~65535系统认为其为负数,...

c语言程序
printf("请输入c成绩(0~100):"); scanf("%f",&p1->cyuyan);\/*输入c成绩,成绩应在0-100*\/ while(p1->cyuyan<0||p1->cyuyan>100) {getchar(); printf("输入错误,请重新输入c成绩"); scanf("%f",&p1->cyuyan);}\/*输入错误,重新输入c成绩直到正确为止*\/ printf("请输入vb成绩(0~100):");...

[C语言]求大神帮忙看看我这个程序的bug,关于颠倒输入字符顺序的
例如你输入了abc回车 那么你的程序里s[0-2]分别是abc,然后i=3的时候,你读到了回车,跳出循环 然后i++使i=4,你把s[4]设为'\\0'。此时你就会发现s[3]你木有设过值。打印的时候从i-1也就是s[3]开始打印,所以有个奇怪的字符

C语言中的问题不明白为什么 新人麻烦详细解释一下谢谢
这里scanf指定逗号为输入的分隔符号。所以输入时数字和字符之间必须有逗号。scanf不指定分隔符时,默认以空白字符(空格、回车、制表符)为分隔符。PS:如果写%d%c不指定分隔符号。由于第二个变量是字符型,输入时中间不要加空格符,否则会将空白符号做为字符接收。

C语言数组字符串初始化问题
遇0结束输出)为1234 所以你输入的第1个字符串字符数少于5时,存储不会溢出,多于4个时,末尾的0就会被输入的str2所覆盖而失效,且多于5的字符也会被覆盖。scanf并不能保证输入字符的长短不会溢出,你应当在设计程序时考虑到这点,预先定义足够的字符串保存空间或用其他方法来避免这个问题的出现。

c语言手机通讯录程序啊~小弟初来,分数不高,望各位高手给指点指点吧...
,完成将从数据文件address.dat中读出的记录送入结构体数组temp(如果该文件中不存在记录,要求用户输入),以便程序运行过程中由其他函数使用;显示通讯录;返回通讯录含记录的条数;。3、系统中使用的各函数说明。⑴初始化函数int initializtion(void)仅由主函数调用;⑵输入记录函数int enter(void)仅由初始化函数调用;⑶...

...请问这题是如何实现字符串倒序的呀,如何读程序?还有getchar输入时...
这个是利用了递归函数的特点,把“输入字符并递归处理”放在“输出字符”之前,这样输入字符后,如果不是\\n字符,就先进入下一层递归,而不是先输出当前这个字符,等到下一层递归返回后,才输出当前字符,那么下一层递归输入的字符就会在本层字符之前得到显示。所以就实现了字符串倒序。大致的过程是这样:...

编程达人帮忙,急急急!!!高分答谢
1.程序分析:利用while语句,条件为输入的字符不为'\\n'.2.程序源代码:include "stdio.h"main(){char c;int letters=0,space=0,digit=0,others=0;printf("please input some characters\\n");while((c=getchar())!='\\n'){ if(c>='a'&&c<='z'||c>='A'&&c<='Z')letters++;else...

C语言程序代码纠错
无法编译成功是因为int a;的分号为中文状态下的分号,修改后的代码:include <stdio.h>#include <stdlib.h>int main(){ int a; scanf("%d",&a); printf("b=%d\\n",a); char h; scanf("%c",&h); printf("输入字符为%c\\n",h);system("pause");return 0;}随便...

相似回答