|
5鱼币
小甲鱼老师在C++第三讲中讲了这个程序的实现,想了两天没想通,请大家指教下,谢谢
源代码如下:
#include <stdio.h>
#include <stdlib.h>
void main()
{
int i;
int sum = 0;
char ch;
printf("请输入一串整数和任意数目的空格: ");
while( scanf("%d", &i) == 1 )
{
sum += i;
while( (ch=getchar()) == ' ' ) // 屏蔽空格
;
if( ch == '\n' )
{
break;
}
ungetc( ch, stdin ); // 将变量ch 中存放的字符退回给stdin输入流。
}
printf("结果是: %d", sum);
printf("\n");
system("pause");
}
代码中:
while( scanf("%d", &i) == 1 )和
while( (ch=getchar()) == ' ' ) // 屏蔽空格
;
这两处没有懂, while( scanf("%d", &i) == 1 )的循环条件是 scanf的返回值是1,scanf函数中输入数据的类型为整型,那在程序运行的时候,能输入空格吗?多个整数用这条语句,一次就输入完成了,感觉有些不可思议,呵呵。
while( (ch=getchar()) == ' ' ) // 屏蔽空格
;
也没懂。
请帮我看一下,谢谢(*^__^*)
|
|