죄송하지만 가장 기본적인 것 질문드립니다.. ( C - scanf() ) jss 알고 스팟에서 문제를 풀다가 생긴 문제입니다. 문제는 입력받은 숫자를 scanf 함수가 인트형 변수에 넣질 못합니다. 계속 1이라는 숫자가 들어가네요. ( gdb 로 확인 해봄 ) 진짜 부끄러운데 제 소스도 같이 올립니다.. 리눅스에서 컴파일해서 실행해도 똑같이 나오네요.. cnt 라는 변수에 값이 안들어가고 있습니다.. #include <stdio.h> #include <string.h> #define false 0 #define true 1 int toNumConvert(char *str); void toStringConvert(int n,char *str); int operation(int n1,int n2,char op); int checkAnswer(char *ans,int rs); int main(void){ char num1[10]; char num2[10]; char op; char equal; char answer[10]; int cnt; int rs; cnt = scanf("%d",&cnt); printf("cnt = %d\n",cnt); while(cnt>0){ scanf("%s %c %s %c %s",num1,&op,num2,&equal,answer); rs=operation(toNumConvert(num1),toNumConvert(num2),op); printf("cehck answer : %d\n",checkAnswer(answer,rs)); cnt--; } return 0; } int checkAnswer(char *ans,int rs){ char corrAns[10]; int i,j; int cursor=0; int len=0; toStringConvert(rs,corrAns); len = strlen(corrAns); // printf("correct Answer : %s \n",corrAns); for(i = 0 ; i <len ; i++ ){ for(j=0;j<len;j++){ if(corrAns[i]==ans[j]){ ans[j]='!'; break; } } } for(i=0;i<len;i++){ if(ans[i]=='!'){ cursor++; } } return cursor==len?1:-1; } int operation(int n1,int n2,char op){ int rs=0; switch(op){ case '+': rs= n1+n2; break; case '-': rs=n1-n2; break; case '*': rs=n1*n2; break; default : break; } return rs; } void toStringConvert(int n,char *str){ // char answ[10]; switch(n){ case 0 : strcpy(str,"zero"); break; case 1 : strcpy(str,"one"); break; case 2 : strcpy(str,"two"); break; case 3 : strcpy(str,"three"); break; case 4 : strcpy(str,"four"); break; case 5 : strcpy(str,"five"); break; case 6 : strcpy(str,"six"); break; case 7 : strcpy(str,"seven"); break; case 8 : strcpy(str,"eight"); break; case 9 : strcpy(str,"nine"); break; case 10 :strcpy(str,"ten"); break; default : break; } // strcpy(str,answ); } int toNumConvert(char *str){ if(strcmp(str,"zero")==0){ return 0; }else if(strcmp(str,"one")==0){ return 1; }else if(strcmp(str,"two")==0){ return 2; }else if(strcmp(str,"three")==0){ return 3; }else if(strcmp(str,"four")==0){ return 4; }else if(strcmp(str,"five")==0){ return 5; }else if(strcmp(str,"six")==0){ return 6; }else if(strcmp(str,"seven")==0){ return 7; }else if(strcmp(str,"eight")==0){ return 8; }else if(strcmp(str,"nine")==0){ return 9; }else if(strcmp(str,"ten")==0){ return 10; }else{ printf("numConever error!! \n"); return -1; } } 9년 전
2개의 댓글이 있습니다. Being cnt = scanf("%d",&cnt); 라고 하시면 1이 들어가는 것이 정상입니다. scanf()가 계산되고 난 뒤 그 되돌려진 값이 cnt 변수에 들어가겠죠. 9년 전 link jss 정말 바보같은 실수를..-_-;; 감사합니다. 9년 전 link 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.
jss
알고 스팟에서 문제를 풀다가 생긴 문제입니다.
문제는 입력받은 숫자를 scanf 함수가 인트형 변수에 넣질 못합니다.
계속 1이라는 숫자가 들어가네요. ( gdb 로 확인 해봄 )
진짜 부끄러운데 제 소스도 같이 올립니다..
리눅스에서 컴파일해서 실행해도 똑같이 나오네요..
cnt 라는 변수에 값이 안들어가고 있습니다..
9년 전