C/C++输入过程中检测回车符作为程序输入结束的若干问题
来源:互联网 发布:工业自动化组态软件 编辑:程序博客网 时间:2024/06/06 10:51
C/C++程序中经常在输入过程中通过判断是否输入回车符来判断程序是否结束。针对此应用,对存在的若干问题进行说明。
1.示例程序1——C语言
1.1 程序源码
输入一系列未知个数的数字,然后输出max ,min和average。
#include <iostream>#include <math.h>#include <time.h>using namespace std;#pragma warning(disable:4996)int main(){int temp,n;int max, min, sum;scanf("%d", &temp);max = min = sum = temp; //Initn = 1;while (scanf("%d", &temp)==1){sum += temp;if (max <= temp) max = temp;if (min >= temp) min = temp;n++;}printf("%d %d %.3lf\n",max,min,(double)(sum/n));system("pause");return 0;}
程序停留在输入阶段,不能执行结果输出语句
1.2 问题分析
(1)scanf()的返回值是输入数据的个数,例如在scanf(“%d”,&temp)中正常情况下返回值为1
(2) scanf在检测输入时候由于scanf(“%d”,&temp)规定了整数输入,所以scanf对空格,回车和制表符号等并不检测。在键盘上输入回车之后,程序并未检测到程序输入结束,依旧停留在while(scanf(“%d”,&temp))这一行中。
1.3 问题解决
(1)方法一:
在程序窗口cmd中输入Ctrl+D(起回车作用),程序会向下继续运行
(2)方法二:
修改代码,用getchar()判断程序是否结束。将原代码中while语句修改为
while((scanf("%d", &temp) == 1)&& (getchar() != '\n'))
#include <iostream>#include <math.h>#include <time.h>using namespace std;#pragma warning(disable:4996)int main(){int temp,n;int max, min, sum;scanf("%d", &temp);max = min = sum = temp; //Initn = 1;while((scanf("%d", &temp) == 1) && (getchar() != '\n')){sum += temp;if (max <= temp) max = temp;if (min >= temp) min = temp;n++;}printf("%d %d %.3lf\n",max,min,(double)(sum/n));system("pause");return 0;}
(3)方法三(不推荐):
人为输入错误信息,如字母或浮点数等
2. 示例程序2——C++语言
2.1 程序源码
上述示例用C++可以表示为:
#include <iostream>#include <math.h>#include <time.h>using namespace std;#pragma warning(disable:4996)int main(){int temp, n;int max, min, sum;cin>>temp;max = min = sum = temp; //Initn = 1;while (cin >> temp){sum += temp;if (max <= temp) max = temp;if (min >= temp) min = temp;n++;if (getchar() == '\n') break;}cout <<max<<' ' <<min<<' '<<(double)sum/n<< endl;system("pause");return 0;}
0 0
- C/C++输入过程中检测回车符作为程序输入结束的若干问题
- c/c++中让输入以回车换行键结束输入
- C语言中scanf函数输入回车符的问题
- C语言中scanf函数输入回车符的问题
- C语言中scanf函数输入回车符的问题
- C语言中scanf函数输入回车符的问题
- C语言中scanf函数输入回车符的问题
- C语言中scanf函数输入回车符的问题
- C语言中输入结束符EOF
- C语言输入一串数据到数组中,用空格隔开回车结束
- C 语言中 scanf 输入回车异常的解决办法
- 输入一个很大的数,然后按下回车结束 c语言实现
- C语言的格式化输入将回车输入的问题
- C#--第2周实验--连续输入字符--直到输入特定的字符才结束程序
- cin 回车结束输入
- C语言,以空格为分割,以回车为结束标记,输入一串数字到一个int数组中
- c语言标准输入结束符
- 输入一个字符,字母输出‘c’,数字输出本身,回车结束(8086汇编)
- SQL建立索引
- hdu 5340 Three Palindromes 【Manacher】
- widows环境下配置NGIX+PHP服务器
- Android-->View.setX()和.setY()的使用(移动布局,设置布局位置,动态添加View)
- Android SDK Tools Platform-tools Build-tools
- C/C++输入过程中检测回车符作为程序输入结束的若干问题
- uva 11524
- JDBC在getConnection之前为什么要调用Class.forName
- centsOs(Linux) memcache 安装教程
- VMWare虚拟机中安装Redhat linux操作系统图解(1)
- 程序员求职简历要点《经典》
- oracle函数
- Linux vi中文乱码处理
- poj2367Genealogical tre