您的位置 电脑知识爱好者 >> 编程知识 >> 为什么会输出这样的结果?

为什么会输出这样的结果?

电脑知识爱好者互联网本站整理2007-8-26 14:06:14
知识重点:输入10个整数,按升序排列.我打的程序如下: #includeiostream.h void main() { int i,j,k,n,a; for(n=0;n10;n++) { cina; } for(k=10;k=1;k--) for(i=k;i=1;i--) {j=a; if(a..

输入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赋值。

    如果只求最小值的话,一次循环,里面写一个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;

    }

    }

    参与评论
    相关内容
  • 关于我们 | 隐私政策 | 站点地图 | 站长博客|京ICP备07025396号
    添加到百度搜藏 添加到百度搜藏 电脑知识爱好者Copyright ?2006-2008版权所有 我要啦免费统计