Endians 로컬에서 돌리면 예제 답 다 맞게 나오는데 왜 오답이 나올까요 suzakutheking visual studio로도 돌려보고 혹시나해서 우분투 gcc로도 돌려봤는데 예제 답들은 정확히 나왔어요 근데 오답이 나오네요 제가 놓친 부분이 있을까요? #include<stdio.h> #include<stdlib.h> unsigned long pow_bin(int base, int mul); int main() { int caseNumber; int i,j; unsigned long input; char bin[32]; char bin_trans[32]; unsigned long result; scanf("%d", &caseNumber); for (i=0;i<caseNumber;++i) { scanf("%u", &input); for(j=31;j>=0;j--) { if(input / pow_bin(2, j) == 1) { bin[31-j] = '1'; input = input % pow_bin(2,j); } else { bin[31-j] = '0'; } } for(j=31;j>=0;j--) { if(j>=24 && j<=31) bin_trans[j] = bin[j-24]; else if(j>=16 && j<=23) bin_trans[j] = bin[j-8]; else if(j>=8 && j<=15) bin_trans[j] = bin[j+8]; else if(j>=0 && j<=7) bin_trans[j] = bin[j+24]; } result = strtoul(bin_trans, NULL, 2); printf("%u\n", result); } return 0; } unsigned long pow_bin(int base, int mul) { unsigned long result = 1; unsigned long i; for(i=0;i<mul;++i) { result *= base; } return result; } 8년 전
1개의 댓글이 있습니다. seico75 bin과 bin_trans의 크기가 32인데, strtoul에서 문자열로 다루려면 null 넣을 곳이 있어야 할꺼 같네요.. 크기와 NULL 를 넣는 부분 추가가 필요해 보입니다. 그리고, 꼭 다른 분들 답도 참고해보세요. 8년 전 link 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.
suzakutheking
visual studio로도 돌려보고
혹시나해서 우분투 gcc로도 돌려봤는데
예제 답들은 정확히 나왔어요
근데 오답이 나오네요
제가 놓친 부분이 있을까요?
8년 전