c언어 문제를 푸는데 막힙니다..
창의적
질문 제목 : c언어 문제질문 요약 :틀린부분 좀 바르게 알려주세요.질문 내용 :
20 개의 수가 입력으로 주어진다. 이 수에서 두 수를 뽑은 합의 최대 값을 출력하는 문제이다.
입력20 개의 수가 입력으로 주어진다. 각 수는 -30 이상 30 이하의 수이다.
출력첫 줄에는 최대 합을 출력하고 다음 줄에는 두 수를 출력한다. 출력 순서는 관계가 없다. 여러개의 답이 존재하는 경우 만족하는 답 중 하나를 출력한다.
입출력 예입력28 -28 27 3 -22 29 2 1 -2 16 -8 5 -7 21 -25 -14 26 -20 15 21출력5729 28이게 문제인데요,.. 제가짠건#includestdio.h
int main()
{
int a[20];
int y,x=0,c=-31;
int min=-31; for(y=0;y20;y++){
scanf(%d,&a[y]);
if(mina[y]) min=a[y];
}
for(y=0;y20;y++){
if(min == a[y]) y=x;
}
for(y=0;y20;y++){
if(x == y) y++;
else if(c=a[y]) c=a[y];
}
printf(%d\n,min+c);
printf(%d %d,min,c);
return 0; } 이렇습니다.. 수 20개를 받고 그중 최댓값이 min에 담겨서 ( 최댓값이 29라고 치면요 )min == a[y] 에서 29 == a[y] 이니 a[y] 에는 저 20개 입력수중 29가 잇을테니 같게되면x값에 y의 열의 값 을 넣으면그밑에 최댓값의 a[y]가 되면 그수는 그냥 바로 다음수로되게 y++로 해놧는데..근데 실행시키면 오류가 뜹니다.. 왜이럴까요?
-
해까닥
#includestdio.h
int main() {
int a[20];
int y
int max2,max1=-31;
for(y=0;y20;y++){
scanf(\%d\ -
지지않는
큰 실수를 했네요;;
죄송ㅠ -
꼬꼬마
배열의 이름 자체가 주소의 시작을 말하기 때문에, 배열의 위치를 명시해야 할 경우에는 붙여야 합니다 ㅋㅋ
-
튼싹
그것은 문자열을 입력받는 경우에만 그렇습니다.
-
꽃내
배열은 배열의 이름 자체가 주소의 시작을 말하기 때문에 붙이면 안되는 것으로 알고 있어요
-
하늘이
scanf 에선 문자열을 제외한 모든거엔 &를 붙여야하지 않나요??
-
핫블루
우선 scanf줄에서 배열 앞에 &을 빼셔야 할 것 같은데..