C语言的输入输出必须要遵循scanf和printf的格式,就是你是什么格式你就要输入什么。
一、输入问题
#include <stdio.h>
int main()
{ int a,b;
scanf("%d,%d",&a,&b);
printf("a+b=%d",a+b);
return 0;
}
这个程序我们可以看到它运行的结果是错误的!为什么呢,因为我们在scanf中已经指定了输入格式,输入格式是两个数中间用逗号隔开,所以我们输入时也必须在输入的两个数之间加逗号隔开,我们再次输入试一下
这样就对了!哪假如把逗号改成别的字符,还需要输入别的字符吗?
#include <stdio.h>
int main()
{ int a,b;
scanf("%d+%d",&a,&b);
printf("a+b=%d",a+b);
return 0;
}
我们把","改成了"+",我们再试试直接用空格隔开两个数,看看结果对吗?
答案是错的,那我们在输入的两个数之间加入逗号呢?
答案还是错的,最后我们试着也在输入的时候在两个数之间加入"+"
哇哦!答案终于对了!所以我们可以得出一个结论就是scanf中的输入格式是什么样的,我们输入时也就必须和其中格式完全一致,否则就会出现读取错误。
我们平时的输入一般以空格隔开,一般不会以逗号隔开,所以我们将程序改成我们日常习惯的输入然后再试试结果。
#include <stdio.h>
int main()
{ int a,b;
scanf("%d %d",&a,&b);
printf("a+b=%d",a+b);
return 0;
}
我们将程序改成这样,我们再输入试试。
没问题了!那我们要是把scanf中的空格去掉呢?
#include <stdio.h>
int main()
{ int a,b;
scanf("%d%d",&a,&b);
printf("a+b=%d",a+b);
return 0;
}
我们把程序改成这样,按理是不是我们输入的时候不用空格直接连着输入两个数呢?不!如果你输入三位数,这样程序怎么知道你是把前两位赋值给了a,还是把前1位赋值给了a呢?这样会造成歧义,所以如果scanf中两个%d之间什么也不加就是默认空格隔开了,我们再试一下程序看看!
好的!没有问题!这样我们就搞清了输入格式。