描述:
输入:一行内输入任意数量的整数,整数之间以任意空格隔开,最后以回车结束。
输出:输出输入整数的和。
方案一:
#include<stdio.h>
void main() {
int a[100],i=0;
do {
scanf("%d",&a[i]);
i++;
} while(getchar()==' ');
int j,sum=0;
for(j=0; j<i; j++) {
sum+=a[j];
}
printf("%d\n",sum);
}
这里,getchar()只接受一个空格,多余的空格会被传入scanf函数里,由于scanf要求输入整数,所以空格会被忽视掉,只提取下一个整数。
方案二:
#include<stdio.h>
#include<stdlib.h>
void main() {
int sum=0,i;
char ch;
while(1) {
scanf("%d",&i);
sum+=i;
while((ch=getchar())==' ')//屏蔽空格
;
if(ch=='\n')
break;
ungetc(ch,stdin);//将变量ch中的一个数退回给输入流
}
printf("%d\n",sum);
}
这里解释一下 ungetc();这个函数,它是把ch里的内容退回到输入流之中。
因为屏蔽掉最后一个空格之后,ch便接受到一个数字,本来这个数字应该由scanf接受,所以要把ch中的一个数字退回。