c++ 输入用若干空格和换行分隔数字 怎么识别什么时候输出?

完整题目InputTheinputstreamcontainsasetofintegernumbersAi(0≤Ai≤1018).Thenumbersareseparat... 完整题目
Input
The input stream contains a set of integer numbers Ai (0 ≤ Ai ≤ 10 18). The numbers are separated by any number of spaces and line breaks. A size of the input stream does not exceed 256 KB.

Output
For each number Ai from the last one till the first one you should output its square root. Each square root should be printed in a separate line with at least four digits after decimal point.

例如:
输入:
1427 0

876652098643267843
5276538

输出:
2297.0716
936297014.1164
0.0000
37.7757
展开
 我来答
金色潜鸟
2014-01-24 · TA获得超过3.2万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:5571万
展开全部
输入数据,数据与数据 用 空白 分隔 或 换行符 分隔
全部数据输入完毕换行后,拍入组合键 Ctrl-Z (EOF) 结束。
开方后,按输入次序倒序输出。
用 getc(stdin); “窥测” 是否 是 空白,换行,EOF
用 ungetc 放回“窥测”到的数值字符

#include <iostream>
using namespace std;
#include <stdio.h>
#include <math.h>
double v[64000];
int main()
{
int c;
int i,n=0;
printf("input data, press ctrl_Z to finish\n");
while(1){
c=getc(stdin);
if ( c==EOF) break;
while (c==' ' || c=='\n' ) c=getc(stdin);
if ( c==EOF) break;
ungetc(c,stdin);
if ( scanf("%lf",&v[n]) == 1) n++;
}
for (i=n-1;i>=0;i--)
printf("%.4lf\n",sqrt(v[i]));
return 0;
}
追问
用getc一定要ctrl+Z才能结束。结果是对的。但是要求的方法似乎不是这个。。谢谢啦。
追答
getc 不一定要ctrl+Z才能结束。你只要设定 c 等于什么 结束便可。
xoaxa
2014-01-23 · TA获得超过8607个赞
知道大有可为答主
回答量:6415
采纳率:72%
帮助的人:3418万
展开全部

利用scanf()函数自身的功能就能解决多个空格、空行问题。

/*

1270

35.6371

 0

0.0000


  876652

936.2970

5276538

2297.0716



36

6.0000

-1

Press any key to continue

*/

#include <stdio.h>
#include <math.h>

int main() {
double num;
while(scanf("%lf",&num) == 1 && num >= 0.0)
printf("%.4lf\n",sqrt(num));
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kyotrue
2014-01-23 · TA获得超过1.5万个赞
知道大有可为答主
回答量:2.3万
采纳率:75%
帮助的人:6620万
展开全部
文件结束符就是终止输入,按 ctrl-Z。
一般都这样的,检测你程序对不对,都重定向输入输出为文本文件的,不然每次检测都要手输,不是要累死。
更多追问追答
追问
右键粘贴就可以了。不是手输的问题。
EOF用法也知道。但是像这题有空格和空行应该怎么识别输入的数据并且最后输出?
追答
你问的是怎么识别最后输出,当然就是EOF了啊,读到EOF了就读不了了,看你用什么API,scanf的话就是返回0了。

有空格和空行,就需要你自己解析了啊,一个一个字符的处理,遇到数字字符就缓存到临时字符串,遇到' ''\r''\n'就证明这个数字完了,可以把临时字符串转成double放到数组中了。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式