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

问题描述

大神们,程序错在哪?我的思路是输入数组将其排序然后输出啊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

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

编程-c++ 运算符的重载 运行时出现 debug 请各位大神帮忙找错

问题描述 c++ 运算符的重载 运行时出现 debug 请各位大神帮忙找错 // Chapter 8 of C++ How to Program// doubleScriptedArray.h#ifndef DARRAY_H#define DARRAY_H #include using std::ostream;using std::istream; class DoubleScriptedArray { friend ostream &operator<<(ostream&

c++-请问大神这个程序怎么写,主要是不知道 文件名怎么传

问题描述 请问大神这个程序怎么写,主要是不知道 文件名怎么传 解决方案 #include<iostream>#include<vector>using namespace std;int main(){ vector<double> vec_num; vec_num.push_back(1.1); vec_num.push_back(1.5); vec_num.push_back(1.2); vector<double>::reverse_iterator

请问这段代码为什么输出null,求大神解答程序执行的顺序?

问题描述 请问这段代码为什么输出null,求大神解答程序执行的顺序? public class xieCheng { private String baseName="Base"; public xieCheng(){ this.callName(); } public void callName(){ System.out.println(baseName); } } public class Sub extends xieCheng { private String baseNam

请问通过AD采集电压如转换成STC12C5A60S2单片机中PWM信号恒压跟踪向电池充电求大神C程序

问题描述 请问通过AD采集电压如转换成STC12C5A60S2单片机中PWM信号恒压跟踪向电池充电求大神C程序 解决方案 用 STC12C5A60S2 产生PWM波

数据库问题 大神 求回复 错哪了

问题描述 数据库问题 大神 求回复 错哪了 use studentgoselect stu_idgrade701702703801802803804from stu_grade pivot (count(course_id)for course_idin(701702703801802803804))as pvt 附上数据库 stu-id course-id grade2007070101 701 892007080101 701 NULL2007070101 703 962007080101

据说不知道这些大神的程序员不是真正的程序员

简评:据说不知道这些大神的程序员不是真正的程序员,这些大神有的可以凭借一本未完成的书获得ACM图灵奖,有的微软开出百万年薪盖茨亲自来挖人,更甚者用自己发明的语言重新开发一套操作系统.这些大神不仅极大地促进了计算机行业的发展和软件技术的革新,而且也让我们这些后生的程序员能够在他们的技术铺垫上,利用他们开发的平台工具或是语言更好地开发软件.所以作为程序员的我们在学习技术的同时也应该多去了解这些大神背后的故事,在敬仰之余也去学习下他们不断进取,富有开创性的精神. D.E Knuth(高纳德. 克努特)

单片机-求大神看看程序问题该怎么改

问题描述 求大神看看程序问题该怎么改 请大神帮我看看我到底应该怎么改. 解决方案 delay 10ms 之间有个空格,函数和变量的名称不能有大写字母.小写字母.下划线.数字之外的其他字符, 应该为void delay10ms(); 解决方案二: 命名函数的时候不要以数字开头

C语言初学妹子求大神解决程序错误问题,求正解

问题描述 C语言初学妹子求大神解决程序错误问题,求正解 /*分别用while.do-while和for循环求:1!+2!+...+n!. 设计一个主界面,实现连续读入不同的n值并求解:*/ #include //用while实现 int main() { while(1) { int i=1,j=1,s=0,m=1; int n; printf("请输入n的值:n"); scanf("%dn",&n); if(n<1) break; else { s=

c语言-求助大神c程序的verilog写法

问题描述 求助大神c程序的verilog写法 5C 将下列c程序改为verilog程序#include #include int f0(int int int);int f1(int int int);int f2(int int int);int f3(int int int); int main(int argc char ** argv){ unsigned int s[5]={0X123456780X234567890X3456789A0X456789AB0X56789ABC}; uns