问题描述
- 大神们,程序错在哪?我的思路是输入数组将其排序然后输出啊a[1];
-
问题描述
编写一个程序,读入一组整数(不超过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("%dn",a[1]);
}
return 0;
}
解决方案
#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("%dn",a[1]);
return 0;
}
5 8 -12 7 0
7
Press any key to continue
解决方案二:
读数据那块不对
do
{
}while
语句读入a[0]就结束了(因为a[1] = 0)
解决方案三:
程序的错误信息是啥?
时间: 2024-10-01 09:06:42