分类：电脑/网络-程序设计-C/C++
问题：为什么会输出这样的结果?输入10个整数,按升序排列.我打的程序如 
输入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 为什么语句:输入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]<<" ";
}