2 qq 29754969 qq_29754969 于 2016.02.22 18:18 提问

大神们,程序错在哪?我的思路是输入数组将其排序然后输出啊a[1];
c

问题描述
  编写一个程序,读入一组整数(不超过20个),当用户输入0时,表示输入结束。然后程序将从这组整数中,把第二大的那个整数找出来,并把它打印出来。说明:(1)0表示输入结束,它本身并不计入这组整数中。(2)在这组整数中,既有正数,也可能有负数。(3)这组整数的个数不少于2个。
  输入格式:输入只有一行,包括若干个整数,中间用空格隔开,最后一个整数为0。
  输出格式:输出第二大的那个整数。
  输入输出样例
样例输入
5 8 -12 7 0
样例输出
7
#include
int main()
{
int a[20]={0};
int i=0,j,k,t,m;
do
{
scanf("%d",&a[i]);
i++;
}
while(a[i]!=0&&i if(i>=1)
{
for(k=0;k {
m=k;
for(j=k;j {
if(a[j]>a[m])
m=j;
t=a[m];a[m]=a[k];a[k]=t;
}
}
printf("%d\n",a[1]);
}
return 0;
}

3个回答

caozhy
caozhy   Ds   Rxr 2016.02.22 20:48
#include<stdio.h>
#include<stdlib.h>

int cmp(const void * a, const void * b)
{
    return *(int *)b - *(int *)a;
}

int main()
{
    int a[20]={0};
    int i=-1;
    do
    {
        scanf("%d",&a[++i]);
    }
    while(a[i]!=0&&i<20);
    qsort(a, i, sizeof(int), cmp);
    if(i>=2)
        printf("%d\n",a[1]);
    return 0;
} 

5 8 -12 7 0
7
Press any key to continue

qq_29754969
qq_29754969 来个简单点的吧
接近 2 年之前 回复
qq_29754969
qq_29754969 大神写的比较高级,看不懂啊
接近 2 年之前 回复
zjdnwpu
zjdnwpu   2016.02.24 23:19

读数据那块不对
do
{
}while
语句读入a[0]就结束了(因为a[1] = 0)

qq_29754969
qq_29754969 谢谢啊,已经知道!
接近 2 年之前 回复
isinstance
isinstance   2016.02.22 18:45

程序的错误信息是啥?

qq_29754969
qq_29754969 输入一个数组之后结果总是0
接近 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!