while(scanf( %d ,&a[i])!=EOF)的用法

#include "iostream.h"
#include "stdlib.h"
#include "stdio.h"
void f(int *,int );
void main()
{
int a[100],i=0,*p,b[100];
p=new int[100];
while(scanf("%d",&a[i])!=EOF)
{
i++;
}
cout<<"yunxing";//为什么感觉 它不运行啊 我再这里敲了运行 但是后面没输出啊
p=a;
f(p,i);
}
void f(int *p,int n)
{
int i,j,b[100],max=0;
int k=0;
for(i=0;i<n;i++)
{
b[0]=*(p+i);
for(j=i+1;j<n-i;j++)
{
if(b[k]>*(p+j))
{
k++;
}
}
if(k>max)
max=k;
}
cout<<max;
}
就是这个题目 求最大的降序序列是多少

输入整数赋值给a数组,直到到达EOF为止,EOF 意思就是 end of file。

    scanf的返回值由后面的参数决定

    scanf("%d%d", &a, &b);

    如果a和b都被成功读入,那么scanf的返回值就是2

    如果只有a被成功读入,返回值为1

    如果a和b都未被成功读入,返回值为0

    如果遇到错误或遇到end of file,返回值为EOF。

    Linux中,在新的一行的开头,按下Ctrl+D,就代表EOF;

    Windows中,Ctrl+Z表示EOF。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-12-22
while(scanf("%d",&a[i])!=EOF)
你这个是不行的,因为每次你读下一个数字都要空格,所以这个没用一直循环
你改成while(scanf("%d",&a[i]))
当你输入不是int 型的时候结束
第2个回答  推荐于2018-03-07
Ctrl+Z可以使scanf返回EOF

楼上胡扯,楼上的楼上胡扯。

cout<<"输出个字符串有什么问题??"<<endl;

scanf函数只有在无法读取到更多数据的情况下才会返回EOF,至于输入的东西不是int,程序会卡死在这.......

如果是Windows下的命令提示符或者纯DOS, Ctrl+Z,回车是正确的终止输入的方式。
就是说程序运行后输入数字->回车继续输入数字->按Ctrl+Z,回车结束输入
Unix之类则是Ctrl+D(应该没记错)。

至于这个程序还有几处错误, 而且看了半天不知所谓, 这坨代码究竟是干什么用的?本回答被提问者采纳
第3个回答  2010-12-22
cout<<"yunxing"; << 后面接的 变量 你搞个字符串什么意思本回答被网友采纳
相似回答