菜鸟询问简单的C语言问题

来源:百度知道 编辑:UC知道 时间:2024/06/04 17:15:21
同一样的程序,
#include "stdio.h"
main()
{
int a,n,count=1;
long sum=0,tn=0;
printf("请输入a和n的值:\n");
scanf("%d,%d",&a,&n);
while (count<=n)
{
tn=tn*10+a;
sum=sum+tn;
count++;
}
printf("%ld\n",sum);
getch();
在VC++ 6.0上面执行的结果为0(此时的时候没有语句 (getch),但是在WIN-TC却可以执行处正确的结果,
但是如果程序在VC++ 6.0中的语句
scanf("%d,%d",&a,&n);
修改为
scanf("%d %d",&a,&n);则可以执行处,正确的结果,这个是为什么?

scanf中""的内容必须完全与输入对应,其中有“,”则它会等待stdin中的“,”。
scanf中的\n表示跳过后面的任意空格而不表示换行。

scanf中""中的格式字符必须与可变参数列表中的变量类型一致。

不遵守以上规则程序就会发生缓冲区溢出或者你的虚拟内存被用完。
请参见我的另一篇回答:
http://zhidao.baidu.com/question/112010412.html

最后要注意:别将scanf与gets同用

如果是scanf("%d,%d",&a,&n);
则输入数据时应为: x,y
要多个逗号

应该是你输入的时候,两个数据间忘记加逗号了

前面解释很清楚了

#include "stdio.h"
#include "conio.h"
main()
{
int a,n,count=1;
long sum=0,tn=0;
printf("请输入a和n的值:\n");
scanf("%d,%d",&a,&n);//在输入时应该附带逗号输入,才会有正确的显示。
while (count<=n)
{
tn=tn*10+a;
sum=sum+tn;
count++;
}
printf("%ld\n",sum);
getch();