입력에 주어진 십진수의 이진수를 계산하는 C 프로그램을 작성했지만 입력에 제공된 수를 유지하는 데 사용 된 변수로 인한 큰 문제가 있습니다.int 변수의 이상한 동작
int main() {
// variables declaration
int n,a,i=0;
int vector[i];
float rest;
// acquisition of the input number
printf("enter an integer:...");
scanf("%d",&n);
while(n>0) {
// calculation and comparison of the data acquired to obtain the binary output
rest=n%2;
if (rest!= 0) {
vector[i]=1;
}
else if (rest== 0) {
vector[i]=0;
}
n=n/2;
i++;
}
// representation of the binary value calculated
printf("the binary value of the number entered is: ");
for(a=i-1;a>=0;a--) {
printf("%d",vector[a]);
}
return 0;
}
문제는 I 1024에 입력 한 숫자 크거나 같은 넣을 경우, 이진수가 잘못 될 것입니다 :
이 내 코드입니다. 따라서 디버그 도구를 사용하면 문제가 n 변수에 있음을 알게되었습니다. 정확히 n=n/2
명령에 있습니다.
입력 번호로 1024를 입력하면 n=n/2
은 프로그램이 4 값 n에 도달 할 때까지 작동하며 그 값은 n=n/2
명령이 작동하지 않고 n에 0 값을 부여합니다.
그래서 여기에 붙어서 어떤 종류의 문제인지 몰라요.
'int i = 0; int vettore [i];'빈 배열을 선언합니다. (그건 그렇고 불법입니다) 당신이'int vettore [32]'또는 뭔가를 원했던 것 같아요. – leemes
'vettore '가 얼마나 큰가요? 현재 요소가 없습니다. – sp2danny
최소 테스트 케이스. –