c++程序改错,输出无法显示??

只能输入数据,输出不了

#include <iostream>
using namespace std;
int main()
{
int i=0,j,n;
float a[100],sum=-1.0;
do
{
cin >> a[i];
}
while(a[i++]!=0.00);
for(j=0;j<i-1;j++)
{
for(n=1,sum=-1.0;sum<a[j];n++)
sum=sum+1/n;
cout << n<< endl;
}
return 0;
}

第1个回答  2008-09-04
for(n=1,sum=-1.0;sum<a[j];n++)
sum=sum+1/n;
由于你接收cin >> a[i]是一个整数,又不能等于0,而且sum=sum+1/n循环的结果是<1的,一旦你输入一个大于1的整数,在你的内重循环中,一开始满足sum<a[j],由于之后的a[j]的值并没有改变,所以会一直循环下去,而且又没有输出语句,当然就没有输出了,相当于死循环了。
for(n=1,sum=-1.0;sum<a[j];n++)
{sum=sum+1/n;
cout << n<< endl;
}你自己可以看看结果。自己把算法改一下。
第2个回答  2008-09-04
for(n=1,sum=-1.0;sum<a[j];n++)
sum=sum+1/n;
是这个循环的问题:如果输入的a[0]是小于-1.0刚会输出i遍n的值(也就是1)
但是,如果输入的a[0]是大于-1.0的话,那么该for循环则是一个死循环.因为sum的值永远只能是越加越小,永远也不会有大于a[0]的一天.
第3个回答  2008-09-04
浮点数不能用== 和!= 比较,只能规定一个范围。
比如规定 const float EXACTATION = 1e-3;
do
{
//...
} while ((a[i++] - 0.00) > EXACTATION);
还有就是把n改为float就可以了。
第4个回答  2008-09-04
n是整型,1/n的结果也是整型,因此当n>1时,1/n的结果是0本回答被提问者采纳
第5个回答  2008-09-04
#include <iostream>
using namespace std;
int main()
{
int i=0,j,n;
float a[100],sum=-1.0;
/////////////////////
do
{
cin >> a[i];
i++;
}
while(a[i]!=0 && i<3);// 不加i<3 是死循环
/////////////////////
for(j=0;j<i;j++)
{
for(n=1;sum<a[j]&&j<i;n++)
{
sum=sum+ float(1/n);
cout << n<< endl;
j++;
}
}
return 0;
}

c++程序改错,输出无法显示??
sum=sum+1\/n;由于你接收cin >> a[i]是一个整数,又不能等于0,而且sum=sum+1\/n循环的结果是<1的,一旦你输入一个大于1的整数,在你的内重循环中,一开始满足sum<a[j],由于之后的a[j]的值并没有改变,所以会一直循环下去,而且又没有输出语句,当然就没有输出了,相当于死循环了。for(...

一个C++程序,为什么总是显示无法打开输出文件?(用户可以输入保存路径...
原因:当输入前一个字符串并以#结尾后,回车键仍然在缓冲区里,当输入文件路径时,这个回车也被读进去了。比如原本输入的路径是 c:\\file, 结果path中的第0个字符是0x0A,而不是c。也就是说读进path的文件名错了,所以打不开。把ofstream fout(path,ios::binary);这一行 改为 ofstream fout(...

c++程序没有输出的原因
1)int b=2; for(int b=2;b<=a;b++) 在VC6.0 中会报重复定义。2)e 没有初始化,以后也没有赋值。3)循环中的条件错误,应该是c<b, d<b, e<b 。另外,你的代码写的也不规范,我把他从写了一下,你将 a 的值输为100就能看到输出了。include<iostream> int main(void){ using...

C++程序没错,但不显示结果,我所有的程序都这样
代码有错,当然不显示结果了。已经定义了int a,b,c,后面for语句中又定义int a=1;int b=0;int c=0。修改方法:把3个for语句括号里的int都删掉。

c++ 程序能运行但是输出不了?
这个程序的功能,是读入一行字符以回车符结束,然后调用一个自定义的函数,在这个自定义函数中,删除所有的星号,然后返回在主程序中就输出,没有星号的字符串。

c++ 请帮忙修改一下程序 还有调试的时候 写的程序没显示出来 出现图片...
cin>>a[m][n];改为cin>>a[i][j];

c++程序为什么输出不了我要的结果
void distinct(int alist[]){ cout << alist[0] << " ";for (int count=1; count<10; count++){ int i = 0;for( ; i<count; i++){ if(alist[count]== alist[i]){ break;} } if (i == count)cout<<alist[count]<< " ";} } 以上是正确代码,首先你的第一个错误...

这个程序用C++运行为什么不出结果呢?
L=(LIST)malloc(sizeof(NODE)); \/\/ 不能在这里改变L的值,应该在main函数中申请。\/ if(!L) exit(1);scanf("%d",&L->data); \/\/ 首元素的data在这里输入 L->next=NULL;for(i=2;i<=MAXNODE;i++) \/\/ 下标从2开始循环 { p=(NODE*)malloc(sizeof(NODE));scanf("%d",&p->data...

C++这样写程序,为什么输入后没有结果
第一个,你的循环条件是cin>>n;注意>>操作符返回的是流对象cin的引用,也就是如果流对象状态不出错,那么你的判定条件就会一直逻辑真,也就是一直循环要求你输入,解决办法有很多种,输入字母使得流状态错误,从而退出循环,然后cin.clear();cin.ignore();重置流,方便后面继续使用流;循环体里面可以...

c++编程问题 程序运行正确但是无法显示输出数据
void show(int *a,int num){ cout<<"请输出逆序后的10个数字: ";for(int i=0; i<num; i++)cout<<*(a+i); \/\/\/这里要输出,才能有输出数据啊?、\/\/\/ cout<<endl;}

相似回答
大家正在搜