こんばんは。
Cを勉強している高校一年生です。学校で数学の研究をしていまして、そこで10進数をN進数に変えるプログラムを書いています。しかしどうにもうまくいきません。下にコードを記します。
lang
1#include "convert.h" 2 3int main(void) 4{ 5 int num,x; 6 while (1) { 7 scanf("%d %d",&num,&x); 8 if(x==0){ 9 return 0; 10 } 11 printf("num=%d\n\n",convert(num,x)); 12 } 13 14} 15
lang
1//convert.h 2#include <stdio.h> 3 4int convert(int num,int x) 5{ 6 7 int a[100]; 8 int i=0; //array counter 9 int j; 10 int sum=0; 11 int k; 12 long po; 13 14 do{ 15 a[i]= num % x; 16 num /= x; 17 i++; 18 }while(num > 0); 19 20 // for(j=0;j<=i;j++){ 21 // printf("arr[%d]=%d\n",j,a[j]); 22 // } 23 24 for(j=0;j<i-1;j++){ 25 po=1; 26 for(k=0;k<j;k++){ 27 po*=10; 28 } 29 30 sum+=a[j]*po; 31 printf("\na[%d]=%d\n",j,a[j] ); 32 printf("po=%d\n",po ); 33 printf("sum=%d\n",sum); 34 } 35 printf("\npo=%d\n",po ); 36 po=po*10; 37 printf("\npo=%d\n",po ); 38 sum+=a[i-1]*po; 39 printf("\na[%d]=%d\n",i-1,a[i-1] ); 40 printf("sum=%d\n",sum); 41 42 return sum; 43 44}
どううまくいかないかというと、配列に割った余りを格納しているのですが、最後のpoに10をかけているだけなのに、ゴミが出力されます。どうしてでしょうか?
ご回答よろしくお願いします。
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。