C语言
#include<stdio.h>int main()
{
int i;
int num;
char ch,ch1;
printf("您要输入的单词个数:");
scanf("%d",&num);
for(i = 0; i < num; i++)
{
scanf("%c",&ch);
ch1 = ch % 10;
printf("%d",ch1);
}
}
为什么一输入单词个数就自己输出零?? #include<stdio.h>
int main()
{
int i;
int num;
char ch,ch1;
printf("您要输入的单词个数:");
scanf("%d",&num);
getchar();
for(i = 0; i < num; i++)
{
scanf("%c",&ch);
ch1 = ch % 10;
printf("%d",ch1);
}
}
人造人 发表于 2020-3-31 22:30
想问一下为什么会这样,整个的执行过程时怎样的呢 第一次scanf()读取你输入的数值后在缓存区还留了一个\n字符,
然后循环里第一次scanf()把留在那里的\n读取了
你在循环中改成printf("%d %c", ch1, ch) 就发现是先循环了一次,
在第一次scanf()后加一个getchar();把留在缓存的\n抛弃了就行了
你下个断点,然后跟一下你就会发现
原来当你在 scanf("%d",&num);输入操作的时候,比如你输入了5,然后你紧接着按了回车,那么系统会在下一步跟进,认为你在scanf("%c",&ch);这个步骤输入了回车键,换行的"\n"ascii码为10
页:
[1]