C 언어 연습: 두 번째 정수

1465 단어 C 언어
문제 설명
사용자가 0을 입력할 때 입력이 끝났다는 정수 그룹을 읽는 프로그램을 만듭니다.그리고 프로그램은 이 정수에서 두 번째 큰 정수를 찾아내서 그것을 출력할 것이다.설명: (1) 0은 입력이 끝났음을 의미하며 그 자체가 이 정수에 포함되지 않습니다.(2) 이 정수에는 양수도 있고 음수도 있다.(3) 이 정수의 개수는 두 개보다 적지 않다.
입력 형식: 입력은 한 줄만 있고 몇 개의 정수를 포함하며 중간에 빈칸으로 구분되며 마지막 정수는 0이다.
출력 형식: 두 번째로 큰 정수를 출력합니다.
출력 샘플 가져오기
샘플 입력
5 8 -12 7 0
샘플 출력
7
 
소감: 처음에는 생각이 좋지 않았는데 거품 정렬로 두 번째를 출력하려고 했는데 최대치가 중복될 수 있다는 것을 잊어버렸고 두 번째 실험에서 최소치가 중복될 수 있다는 것을 잊어버렸다.마지막으로 최대치를 구하는 방법을 본 다음에 가장 큰 가치가 있는 방법이 나왔다. 가장 큰 값이 항상 최대치를 수반한다는 것을 알 수 있다.자기가 너무 약해.무슨 원인인지 모르겠지만, 아래의 이 코드는 항상 만점을 받지 못하는데, 어느 테스트가 잘못되었는지 모르겠다.열성 네티즌 한 번 써보시면 안 될까요, T.T.
거품을 일으켜 최대와 최소를 구하는 것은 현명한 방법이 아니다.
PS:1, "66,66,66,66"은 두 번째 큰 숫자가 없고 아무것도 출력하지 않습니다.
2.'99,99,88,86,68,66'은 최대수가 88이다.
       3.'0' 은 아무것도 출력하지 않습니다.
 
 
   

#include <stdio.h>
int main(void)
{
int x,y;
int a[20]={0};
int i=-1;
int n;
do
{
i++;
scanf("%d",&a[i]);


}while(a[i]!=0&&i<19);

if(i>=1)
{

x=a[0];y=a[0];
for(n=0;n<i;n++)//将数组里的最大值赋给x
if(x<a[n])
x=a[n];
for(n=0;n<i;n++)//将第二大值赋给y
{
if(a[n]==x)
continue;
else if(a[n]>y)
y=a[n];
}
if(x!=y)
printf("%d",y);}
return 0;
}

 

좋은 웹페이지 즐겨찾기