用户输入一串整数和任意数目的空格,程序自动对所有的整数进行求和
2016-12-15 21:17
337 查看
要求:编写一个程序,要求用户输入一串整数和任意数目的空格,这些整数必须位于同一行中,但允许出现在该行中的任何位置。当用户按下键盘上的“Enter”键时,数据输入结束。程序自动对所有的整数进行求和并打印出结果。
C语言实现:
注:
1、关于scanf,当一开始输入空格,回车时,scanf不会处理,一直到输入一个数字时,输入回车时,scanf开始从缓冲区读取整数。
2、getchar():每次只能读取一个字符,利用while语句,当读取空格时不做任何操作,来屏蔽空格,注意此时ch多从缓冲区获取了一个字符,虽然不满足while循环的条件,但是此时ch已经获取了一个字符。
3、如果没有这一句:ungetc(ch,stdin);,结果是不对的,如2所述,ch已经多获取了一个字符,例如输入的是22 33 33 44,遇到第一个空格后,ch获取了3,下一次循环,scanf只能获取一个3,最后就导致结果不对。
C++实现:
C语言实现:
#include "stdafx.h" #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) { sum += i; while ((ch = getchar()) == ' ')//屏蔽空格 ; if (ch == '\n') { break; } ungetc(ch,stdin);//将变量ch中存放的字符退回给stdin输入流,获取多的退回 } printf("结果是:%d\n",sum); system("pause"); return 0; }
注:
1、关于scanf,当一开始输入空格,回车时,scanf不会处理,一直到输入一个数字时,输入回车时,scanf开始从缓冲区读取整数。
2、getchar():每次只能读取一个字符,利用while语句,当读取空格时不做任何操作,来屏蔽空格,注意此时ch多从缓冲区获取了一个字符,虽然不满足while循环的条件,但是此时ch已经获取了一个字符。
3、如果没有这一句:ungetc(ch,stdin);,结果是不对的,如2所述,ch已经多获取了一个字符,例如输入的是22 33 33 44,遇到第一个空格后,ch获取了3,下一次循环,scanf只能获取一个3,最后就导致结果不对。
C++实现:
#include "stdafx.h" #include <iostream> using namespace std; int main() { int i; cout<<"请输入一串整数和任意数目的空格:"; int sum = 0; //一直到输入的值是整数的时候进入while循环,当输入字符时,scanf返回0,什么都不读,然后再次调用scanf while (cin>>i) { sum += i; while (cin.peek() == ' ')//屏蔽空格,peek()函数:从输入流中读取一个字符 但该字符并未从输入流中删除 { cin.get();//从指定的输入流中提取一个字符(包括空白字符), } if (cin.peek()== '\n') { break; } } cout<<"结果是:"<<sum<<endl; system("pause"); return 0; }
相关文章推荐
- 输入一串整数和任意数目的空格求和,回车结束
- 写一个程序,输入一个长整型数,输入一任意一个长整数,请用函数一求出长整数所有之和,用函数二求出长整型数的逆序数。
- 输入两个整数n和m, 从数列1,2,...,n中任意选择几个数,使其和等于m, 要求编写程序输出所有的组合
- 写一个程序,输入一个长整型数,输入一任意一个长整数,请用函数一求出长整数所有之和,用函数二求出长整型数的逆序数。
- 写一个程序,输入一个长整型数,输入一任意一个长整数,请用函数一求出长整数所有之和,用函数二求出长整型数的逆序数。
- 编写一个程序,要求用户输入最多10个高尔夫成绩,并将其存储在一个数组中。 程序允许用户提早结束输入,并在一行上显示所有成绩,然后报告平均成绩。 请使用3个数组处理函数来分别进行输入、显示和计算
- <C语言>编写一个程序,该程序读取输入直到遇到#字符,然后报告读取的空格数目、读取的换行数目以及读取的所有其他字符数目。
- 19. 中兴面试题:输入两个整数n和m, 从数列1,2,...,n中任意选择几个数,使其和等于m, 要求编写程序输出所有的组合
- 【任意输入一串整数输出该数的位数】新手每天学写C程序(1)
- 输入两个整数n和m, 从数列1,2,...,n中任意选择几个数,使其和等于m, 要求编写程序输出所有的组合
- 输入两个整数n和m, 从数列1,2,...,n中任意选择几个数,使其和等于m, 要求编写程序输出所有的组合
- 编写程序,判断用户输入的数字是否完全数.所谓“完全数”是指整数n的所有因子(不包括n)之和等于n自身。例如28的因子为1、2、4、7、14,而28=1+2+4+7+14,因此28是“完全数”。
- 写一个程序,输入一个长整型数,输入一任意一个长整数,请用函数一求出长整数所有之和,用函数二求出长整型数的逆序数。
- 串的处理 在实际的开发工作中,对字符串的处理是最常见的编程任务。本题目即是要求程序对用户输入的串进行处理。具体规则如下: 1. 把每个单词的首字母变为大写。 2. 把数字与字母之间用下划线字符(_)分
- 用java写一个用户只能从键盘输入整数,程序输出这些整数的乘积
- Java应用程序,用户从键盘只能输入整数,程序输出这些整数的乘积
- JAVA:用户从键盘只能输入整数,程序输出这些整数的乘积。
- 练习1-20:请编写程序detab,将输入中的制表符替换成适当数目的空格,适空格充满到下一个制表符中止的地方。假设制表符终止位的位置是固定的,比如每隔n列就会出现一个制表符终止位。n应该作为变量还是符号常量呢?
- 2013-03-07:编写一个JAVA程序,用户用键盘只能输入整数,程序输出这些整数的乘积
- 编些程序detaba,将输入中的制表符替换为适当数目的空格,使空格充满到下一个制表符终止位的地方