當前位置:編程學習大全網 - 編程語言 - 求C語言編程高手幫忙!!!

求C語言編程高手幫忙!!!

初看,程序應先聲明壹個包含20個整型數元素的數組,但從程序目標來看,根本不需要所有的數,而只需找出次大的數而已,所以只要聲明三個整型變量:輸入(input)、最大數(Max)、次大數(Sec) 即可。而且從內存利用率來看,這樣也更節省內存空間。

以下程序妳的所有要求都滿足了,僅供參考:

#include <stdio.h>

const int N = 20;

int main()

{

int input, Max, Sec, i = 2;

printf("請輸入至少2個且不多於20個整數(退出請輸入0,多於2個時): \n");

while(i)

{

while(!scanf("%d", &input)) //阻止妳不配合地輸入字符,而不是數字

{

printf("輸入非法,請重新輸入...\n");

while(getchar() != '\n')

; //註意這個分號,為空操作

}

if(0 == input)

continue; //保證這組數至少有2兩個,且不為0

if(2 == i)

Max = Sec = input;

else if(Max < input) //此時其實Max = Sec

Max = input;

else

Sec = input;

i--;

}

if(Max == Sec)

printf("您已經有效輸入了2次,但沒有找到次大數,繼續...\n\n");

while(input && i++ < N - 2)

{

while(!scanf("%d", &input))

{

printf("輸入非法,請重新輸入...\n");

while(getchar() != '\n')

;

}

if(0 == input)

break; //輸入0結束

if(Max != Sec) //1Max與Sec不相等時(意味著 Max > Sec)

{

if(Max < input)

{

Sec = Max;

Max =input;

}

else if(Max == input)

; //Max = input 時不作任何處理,註意這個分號

else if(Sec < input)

Sec = input;

}

else if(Max < input) //2Max = Sec 時

Max = input;

else

Sec = input;

}

if(Max == Sec) //如果從壹開始就壹直輸入重復數

printf("很遺憾!最終還是沒有找到次大數,盡管您輸入了%d個有效數。Bye!\n\n", i + 1);

else

printf("您輸入了 %d 個有效數,其中次大數是:%d\n\n", i + 1, Sec);

return 0;

}

  • 上一篇:熱敏打印機怎樣設置
  • 下一篇:配置cache是為了解決什麽
  • copyright 2024編程學習大全網