一,题目要求
1,题目描述:编写一个程序,要求用户输入一串整数和任意数目的空格,这些整数必须位于同一行中,但允许出现在该行中的任何位置。当用户按下键盘上的“Enter”按键时,数据输入结束。程序自动对所有的整数进行求和并打印结果
2,输入例子:22 2 2 4
3,输出例子:30
二,思路分析
1,C语言实现
(1)方法1
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i;
char ch;
int sum=0;
printf("请输入一串整数和任意数目的空格:\n");
//一直到输入的值是整数的时候进入while循环,当输入字符时,scanf返回0,什么都不读,然后再次调用scanf
while (scanf("%d",&i)==1) //scanf正常结果是为1的
{
sum += i;
while ((ch = getchar()) == ' ')//屏蔽空格
;
if (ch == '\n')
{
break;
}
ungetc(ch,stdin);//将变量ch中存放的字符退回给stdin输入流,获取多的退回
}
printf("结果是:%d\n",sum);
system("pause");
return 0;
}
结果如图1所示
图1 方法一结果图
(2)方法2
#include <stdio.h>
int main() {
int num = 0,sum = 0;
char ch;
while((ch = getchar()) != '\n')
{
if(ch >= '0' && ch <= '9')
num = 10 * num + ch - '0';
if(ch == ' ')
{
sum += num;
num = 0;
}
}
sum = sum +num;
printf("sum = %d\n",sum );
return 0;
}
结果如图2所示
图2 方法二结果图
2,C++语言实现
#include <iostream>
using namespace std;
int main()
{
int sum = 0;
cout << "请输入一串整数和任意数目的空格:" << endl;
int i;
while( cin >> i)
{
sum += i;
while( cin.peek() == ' ')
{
cin.get();
}
if(cin.peek() == '\n')
{
break;
}
}
cout << "结果是:" << sum << endl;
return 0;
}
结果为图3所示
图3 C++实现结果图