【发布时间】:2020-09-21 01:22:08
【问题描述】:
我知道scanf()的基础;需要转换说明符 % 和变量地址来存储输入值 &。
在进行分配时,有一项任务涉及输入任意数量的值,例如: 5 4 3 2 1
进入scanf,然后打印出输入的整数对应的符号个数(例如'?'),所以终端会显示为:
5 4 3 2 1
?????
????
???
??
?
在这种情况下,我将 scanf 置于 while 循环中:
int i, num;
while(scanf("%d",&num)==1){
printf("%d",num);
for (i=0; i<num; i++){
printf("?");
}
printf("/n");
}
当许多来源指定 scanf 只接受一个整数直到它读取一个空格时,我完全困惑 scanf 如何在一个输入行 (5 4 3 2 1) 中读取多个整数。从这个角度来看,我的理解是分隔整数的空格表示前一个整数之后的新迭代? 当我试图追踪打印的工作原理时,它打印为:
5 4 3 2 1
5?????
4????
3???
2??
1?
...所以我的问题是 scanf 如何将所有这些整数在一行中“保存”到“num”并将相应符号的每个打印到输入后给定的值?如果没有数组,整数不会替换变量中的前一个吗?
对不起,如果这个问题没有意义 - 对编码来说还是很陌生。谢谢!
【问题讨论】: