我对通用标题感到抱歉,但没有找到更好的选择。我很抱歉,如果问题很愚蠢,但我是新手,因此找不到任何有用的方法。
我已经编写了这段代码来解决一个简单的问题:您有一个以负号结尾的正整数序列:对于每个整数,您都必须打印相应数量的*
字符并换行。
该代码可以正常工作,但是我无法真正理解为什么。
int main()
{
int d=0,i;
while (d>=0){
scanf("%d",&d);
for (i=0;i<d;i++)
{
printf("*");
}
printf("\n");
}
return 0;
}
我做了一些研究,并且了解到终端scanf
仅在按回车键时才给出整数序列。我认为这样可以工作:
scanf
获取整数序列,它注册第一个整数,而其他整数则被丢弃 *
对应于第一个整数的s的数量相反,似乎scanf
读取第一个整数,然后将printf将其发送到缓冲区,然后循环重新启动并scanf
获取第二个整数,依此类推。当到达最后一个正整数时,printf
将刷新缓冲区。
我错了吗?如果没有,为什么它会这样工作?
scanf()
确实读取第一个整数,然后printf将其发送到缓冲区,然后循环继续,scanf获取第二个整数,依此类推。在达到负整数之后,其余的stdin将被忽略。stdout
与每个冲洗,\n
程序结束。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句