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币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
从键盘上输入一个数,将其插入到数列{2,5,6,8,12,13,15,17,19,22}中,并保证该数列的有序性。
#include int main() { int i,j,x,k=10,a[11]={2,5,6,8,12,13,15,17,19,22}; scanf("%d",&x); for(i=0;i<k&&a[i]<x;i++) j=i; for(j=k;j>i;j--) a[j]=a[j-1]; a[j]=x; for(i=0;i<=k;i++)
从键盘输入一系列字母,将其存储到文件中,对其进行升序排序后,存到另一个文件中,并显示在屏幕上。
从键盘输入一系列字母,将其存储到文件中,对其进行升序排序后,存到另一个文件中,并显示在屏幕上。
C#--第2周实验--任务12--输入10个数存入数组中,然后实现冒泡排序
/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生  * All rights reserved. * 文件名称:输入10个数存入数组中,然后实现冒泡排序 * 作 者: 雷恒鑫  * 完成日期: 2012 年 09 月 10 日 * 版 本 号: V1.0  * 对任务及求解方法的描述部分 * 输入描述
定义一个int型的一维数组,包含10个元素,分别赋值为1~10, 然后将数组中的元素都向前移一个位置,
<br />public class _2{<br />  public static void main(String[] argv){<br />    int[] array = new int[]{1,2,3,4,5,6,7,8,9,10};<br />    int temp = array[0];<br />    int i = 0;<br />    while(i<9){<br />     array[i] = array[i+1];<br />     i++;<br />    }<
用rand函数生成10个元素的随机数数组;对该数组按从大到小排序;输出该数组;续接下面......
#include #include #include /* * 问题描述 * 用rand生成10个随机数置与数组,对该数组从大到小排序 * 输入一个任意数,插入数组 */ #define SIZE 15 //数组大小 #define INITSIZE 10 //随机生成数字的个数 static int compar_reverse(const void *val1, const void *val2); int main(void) { int array[S
输入10个整数,用函数编程将其中最大数于最小数位置互换,然后输出互换后的数组。
# include <stdio.h> int main() { int i,t,max,min,a[10]; max=min=0; //假定第一个数,既是最大值,又是最小值(maxi、mini是最大、最小值的下标) for(i=0;i<10;i++) { scanf("%d",&a[i]); //读入一个数 if(a[i]>a[max])
P123.3 编写一个程序,要求用户输入一个分数,然后将其约分成最简形式
P123.3 编写一个程序,要求用户输入一个分数,然后将其约分成最简形式
C#--设计一个程序,输入10个数存入数组中,然后实现冒泡排序
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program {//4.设计一个程序,输入10个数存入数组中,然后实现冒泡排序。 static
输入五个数字,将其降序排列。然后插入一个数字,然后再降序排列。(冒泡法排序)
输入五个数字,对其进行降序排列。之后插入一个新的数字,再将新的数组进行降序排列。 首先先对输入的五个数字运用冒泡法进行排序 import java.util.Scanner; public class ChaRushuzu { public static void main(String[] args) { int[] nums=new int[6]; Sca
对一个5位数的任意整数,求出其降序数。例如,整数是82319,则其降序数是98321。算法提示:将整数的各位数分解到一维整型数组a中,再将a数组中的元素按降序排序,最后输出a数组元素值。
对一个5位数的任意整数,求出其降序数。例如,整数是82319,则其降序数是98321。算法提示:将整数的各位数分解到一维整型数组a中,再将a数组中的元素按降序排序,最后输出a数组元素值。 试建立一个类DescendNUM,用于完成该功能。具体要求如下: (1)私有数据成员 int n:存放5位数的整数。 int a[5]:存放其元素的降序排列值。 (2)公有成员函数 DescendNU