c语言版
#include <stdio.h>
void main()
{
int i;
int sum=0;
char ch;
printf("请输入一串整数和任意数目的空格:");
while(scanf("%d",&i)==1)//有输入时返回值为1
{
while((ch=getchar())==' ') ;//屏蔽空格。将字符取出送给ch,如果是空格,就什么也不执行,如果不是空格就执行下面的语句
sum+=i;//求和
if(ch=='\n') //如果ch是enter 则退出循坏
{
break;
}
ungetc(ch,stdin);//将变量ch存放的字符退回给stdin输入流
//如输入22 33 33 44 ch一次只获取一位字符,22 3,当ch=第二个空格时什么也不执行,然后ch=3,会让i=3,而不是33
}
printf("结果是:%d\n",sum);
}
解释语句—调试
ungetc(ch,stdin);//将变量ch存放的字符退回给stdin输入流
如果没有这条语句
会是这样
22+3+3+4=32
因为第一个数会因为判断ch是否为空格吞掉
键盘输入的数据存放在stdin中,所以在把吞掉的数据返还回去就行了
#include<iostream>
using namespace std;
int main()
{
int sum=0;
cout<<"请输入一串整数和任意数目的空格:";
int i;
while(cin>>i)
{
sum+=i;
while(cin.peek()==' ')
{
cin.get();
}
if(cin.peek()=='\n')
{
break;
}
}
cout<<"结果是:"<< sum << endl;
return 0;
}
c++小程序举例:
cin的用法
#include<iostream>
using namespace std;
int main()
{
char buf[20];//只能存储19个字符,最后一个以0填充
cin.ignore(7);//忽略前七个字符
cin.getline(buf,10);//只取9个字符,最后一位是\0
cout<<buf<<endl;
return 0;
}
第二个