|
조준회 님이 쓰신 글 :
:
: scanf에서 & 를 빼먹었고요.
:
: for 루프에서 0부터 시작하였으니까..
: i <= 10이 아니라 i < 10이 되어야 합니다.
:
: <=로 하게되면.. 11번째 배열을 사용하게됩니다.
: 이렇게 되면..원하지 않는 영역을 사용하게되어..
:
: 잘돌아가는 것 처럼 보이다가.. 알수없는 문제가 발생하기도 합니다.
: C에서는 이런건 프로그래머의 책입니다.
:
: 터보씨 정복이라는 책을 보면.. 프로그래밍의 관례와..
: 디버거 사용법이 나옵니다.
:
: 이 정도는 디버거만 사용할줄 알아도 해결이 가능합니다.
: 디버거를 잘 쓸줄알아야 프로그래밍이 편해집니다. 반드시 익히도록 하세요...
:
:
: 도아주세요 님이 쓰신 글 :
: : 문제)10명의 학생 이름과 C점수를 입력받아 가장 최고점수를 맞은 학생의 이름과 점수를 함께
: : 출력 하시오
: :
: : #include <stido.h>
: : #include <string.h>
: : main()
: : {int i, c, max=0;
: : char na[10];
: : char maxna[10];
: : for (i=1; i<=10; i++)
: : {scanf("%s", na);
: : scanf("%d", &c);
: : if (c>max) {
: : max=c;
: : strcpy(maxna,na);
: : }
: : }
: : printf("이름=%s\n",maxna);
: : printf("최고점수= %d\m", max);
: : }
: :
: : 제가 초보라 들여쓰기를 어떻게 해야되는지 모르거등요
: : 고수님들 알려주세요..
제 생각엔 말이죠...
물론 for루프를 한번 더 돌린것도 문제겠지만...
코딩하는데 철자가 틀렸네요..
stdio.h 인데 stido.h로 쓰셨네요..
그리고 scanf 문에서 &를 빼먹었다고 하셨는데
문자열을 문자열 배열에 읽어드릴려면 &기호를 붙이지 않습니다.
답변해주신 분의 말씀이 좀 틀린거 같네요..
포인터랑 배열에 관계된 부분을 좀더 보시면 이해가 되실듯...
그리고 메인함수를 리턴값이 있는 형태로 선언을 하셨는데..
리턴값이 없네요...
void를 쳐 넣으시고 함 돌려보세요...
제 의견이 틀렸는지도 모르겠는데 어째든 이케하니까 실행이 되던데요...
허접하지만 참고하세요..
#include <stdio.h>
#include <string.h>
void main(void)
{
int i, c, max=0;
char na[10];
char maxna[10];
for (i=1; i<=10; i++) {
scanf("%s", na);
scanf("%d", &c);
if (c>max) {
max=c;
strcpy(maxna,na);
}
}
printf("이름=%s\n",maxna);
printf("최고점수= %d\m", max);
}
|