VC++ 排序和循环的问题,在线等

来源:百度知道 编辑:UC知道 时间:2024/09/18 05:37:23
编了一下的东西,不通。
要求是有个最多容纳1000个数的A[i],输入数字0的话结束输入
(我那个if(A[i]=0)break;就一直不好使)
一旦结束输入的话,把输入的数字按照输入的顺序排出来,在按照大小也排一遍。

因为那个循环一直不通,后面的也不知道编对了没有(部分网络摘抄)

#include <iostream>

#include <cctype>

#include <cmath>

using namespace std;

int main(void){

int i=1;
int A[1000]={};

for(;;)
{
cout<<"Please enter an integer (输入数字0结束):"<< endl;
cin>>A[i];
if (A[i]=0) break ;
}
for(i=1;i<10;++i)
{
for(int j=0;j<10-i;++j)

{
int k;
if(A[j+1]>A[j])

{
k=A[j+1];
A[j+1]=A[j];
A[j]=k;
}
}
}
for(int j=1;j<10;++j)
cout<<"Element "<<j<<":"<<A[i]<<'\n';

for(int j=0;j<10;++j)
cout<<"Element "<<j<<":"<<A[j]<&

同意楼上,混淆了赋值“=”和逻辑运算“==”

首先,我明白了你这个程序的目的:先是接受用户输入,并由用户决定输入结束,然后顺序输出用户输入的,然后在再将排序好的输出。

我先说一下我在你这个程序发现的错误,希望对你有所帮助:
1 接受用户输入的循环那里,你将用户输入的存入数组A[i]中,可是你的数组下标i并没有改变(i++),始终是1,这就导致无论用户输入多少,都只存在A[1]里面,其他的均未初始化,这就是你拍出来的都是 0 的原因
2你的break 语句,你虽然跳出了循环,可是用户到底输入进多少,程序并不知道,这就导致你在下面的排序和输出中都是以10作为上限,这就是你的j<几就拍几个,而不是输入几个就拍几个的原因。
下面是我稍稍改了一下的程序,希望对你有用:
#include <iostream>
#include <cctype>
#include <cmath>
using namespace std;

int main(void){

int i = 0;
int j = 0;
int size = 0;// 存储用户到底输入了多少个

int A[1000];

while(1) //死循环,接受用户输入
{
cout<<"Please enter an integer (输入数字0结束):"<< endl;
cin>>A[i];
if (A[i]==0)
{
size = i;
break;
}
i++;
}
//输出未排序的
for (i = 0; i < size; ++i)
{
cout<<"Element "<<i<<":"<&