为什么会输出这样的结果?
输入10个整数,按升序排列.我打的程序如下: #include<iostream.h> void main() { int i,j,k,n,a[10]; for(n=0;n<10;n++) { cin>>a[n]; } for(k=10;k>=1;k--) for(i=k;i>=1;i--) {j=a[i-1]; if(a[i]<a[i-1]) j=a[i];} cout<<j<<endl; } 结果是只输出一个 1 为什么语句:for(k=10;k>=1;k--) 没有起作用呢? 请各位高手帮帮忙~小第还是新手~ 你的程序实际上输出的是a[0]与a[1]中较小的一个值,你就是在给j赋值输出的当然是一个了。下面的程序可以解决你的问题,其实编程时要是尽量用最少的变量,增加程序的可读性。
#include<iostream.h>
void main()
{
int i,j,temp,a[10];
for(i=0;i<10;i++)
cin>>a[i];
for(i=0;i<9;i++)
for(j=i+1;j<10;j++)
if(a[i]<a[j])
{
temp=a[j];
a[j]=a[i];
a[i]=temp;
}
for(i=0;i<10;i++)
cout<<a[i]<<" ";
}
如果只求最小值的话,一次循环,里面写一个j赋值就可以了。
#include<iostream.h>
void main()
{ int i,j,k,n,a[10];
for(n=0;n<10;n++)
{
cin>>a[n];
}
for(k=10;k>=1;k--)
for(i=k;i>=1;i--)
{
if(a[i-1]>a[k-1])
{
j=a[i-1];
a[i-1]=a[k-1];
a[k-1]=j;
}
}
for(n=0;n<10;n++)
{
cout<<a[n]<<endl;
}
}
参与评论- 相关内容
- 最近更新
- ·求解一道运用C语言的问题
- ·问一道简单的线性链表编程题
- ·数组问题
- ·C++中怎样将char转换成int
- ·C++6.0 编译器下载地址
- ·一道C程序设计题关于字符串连接
- ·我要C++编译器的下载地址~~~
- ·C#语言中的,继承里的get,set访问..
- ·请问C/C++有那些存储区,各自功能..
- ·T-flash卡的问题
添加到百度搜藏