m0_74374585 2022-10-19 22:48 采纳率: 50%
浏览 19
已结题

问题:求N个数中第二大的数,只要输入的第一个数是最大的数就会输出错误,该怎么修改呀?

#include"stdio.h"
int main()
{
int n,i,max1,max2,a[100];
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
max1=max2=a[0];
for(i=1;i<=n;i++)
{
if(a[i]>max1)
{
max2=max1;
max1=a[i];
}
else if(a[i]>max2)
{
max2=a[i];
}
}
printf("%d\n",max2);
return 0;
}

  • 写回答

1条回答 默认 最新

  • honestman_ 2022-10-19 23:28
    关注
    
    #include "stdio.h"
    
    int main(int argc,char *argv[]){
    
    int N,a,b,m;
    
    printf("Enter N(int 1<N<201)...\nN=");
    
    if(scanf("%d",&N)!=1 || N<2 || N>200){
    
    printf("Input error, exit...\n");
    
    return 0;
    
    }
    
    a=b=-10000000;
    
    while(N--){
    
    if(scanf("%d",&m)!=1 || m<-10000000 || m>10000000){
    
    printf("Input error, redo: ");
    
    fflush(stdin);
    
    N++;
    
    }
    
    else if(m>a)
    
    b=a,a=m;
    
    }
    
    printf("The second MAX is %d\n",b);
    
    return 0;
    
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月6日
  • 已采纳回答 10月29日
  • 创建了问题 10月19日

悬赏问题

  • ¥100 iOS开发关于快捷指令截屏后如何将截屏(或从截屏中提取出的文本)回传给本应用并打开指定页面
  • ¥15 unity连接Sqlserver
  • ¥15 图中这种约束条件lingo该怎么表示出来
  • ¥15 VSCode里的Prettier如何实现等式赋值后的对齐效果?
  • ¥15 流式socket文件传输答疑
  • ¥20 keepalive配置业务服务双机单活的方法。业务服务一定是要双机单活的方式
  • ¥50 关于多次提交POST数据后,无法获取到POST数据参数的问题
  • ¥15 win10,这种情况怎么办
  • ¥15 如何在配置使用Prettier的VSCode中通过Better Align插件来对齐等式?(相关搜索:格式化)
  • ¥100 在连接内网VPN时,如何同时保持互联网连接