一道关于C++的求中位数题
我的程序是这样的:#include<iostream>usingnamespacestd;intmain(){intn,a[100],mid[10],count;whil...
我的程序是这样的:
#include <iostream>
using namespace std;
int main()
{
int n,a[100],mid[10],count;
while(1)
{
cin>>n;
count++;
if(n==0)
break;
else
{
for(int i=0;i<n;i++)
{
cin>>a[i];
}
for (int i=0;i<n-1;i++)
{
for(int j=1;j<n-i;j++)
{
if(a[j-1]>a[j])
{
int temp=a[j];
a[j]=a[j-1];
a[j-1]=temp;
}
}
if(n%2==0)
mid[i]=(a[n/2]+a[n/2-1])/2;
else
mid[i]=a[n/2];
}
}
while(n==0)
{
for(int i=0;i<count;i++)
cout<<mid[i]<<endl;
}
}
return 0;
}
求问:如果不加while(n==0),就不能保证全部输完再一起输出,加了,貌似就崩溃了,希望高手能帮助新手解答。 展开
#include <iostream>
using namespace std;
int main()
{
int n,a[100],mid[10],count;
while(1)
{
cin>>n;
count++;
if(n==0)
break;
else
{
for(int i=0;i<n;i++)
{
cin>>a[i];
}
for (int i=0;i<n-1;i++)
{
for(int j=1;j<n-i;j++)
{
if(a[j-1]>a[j])
{
int temp=a[j];
a[j]=a[j-1];
a[j-1]=temp;
}
}
if(n%2==0)
mid[i]=(a[n/2]+a[n/2-1])/2;
else
mid[i]=a[n/2];
}
}
while(n==0)
{
for(int i=0;i<count;i++)
cout<<mid[i]<<endl;
}
}
return 0;
}
求问:如果不加while(n==0),就不能保证全部输完再一起输出,加了,貌似就崩溃了,希望高手能帮助新手解答。 展开
2个回答
展开全部
程序有点问题,大部分都是一些语句放置的位置不对,改一下
#include <iostream>
using namespace std;
int main()
{
int n,a[100],mid[10],count = 0;//初始化为0
while(1)
{
cin>>n;
if(n==0)
break;
else
{
for(int i=0;i<n;i++)
{
cin>>a[i];
}
for (int i=0;i<n-1;i++)
{
for(int j=1;j<n-i;j++)
{
if(a[j-1]>a[j])
{
int temp=a[j];
a[j]=a[j-1];
a[j-1]=temp;
}
}
}
//在排序之后求中位数
if(n%2==0)
mid[count]=(a[n/2]+a[n/2-1])/2;//保存位置是count
else
mid[count]=a[n/2];
count++;//这里再计数
}
}
//数据处理完毕后一起输出
for(int i=0;i<count;i++)
cout<<mid[i]<<endl;
return 0;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询