#include <stdio.h>
#include <stdlib.h>
int main()
{
int a;
int b[30];
int c = 0;
int d;
int i;
while(scanf ("%d",&a)!=EOF)
if(a == 1)
{
d = a % 2;
b[c] = d;
c++;
a = a / 2;
b[c] = a;
for (i = c-1; i >=0; i--)
{
printf ("%d",b[i]);
}
}
while(a>0)
{
d = a % 2;
b[c] = d;
c++;
a = a / 2;
}
for (i = c-1 ; i >=0; i--)
{
printf ("%d",b[i]);
}
}
我輸出的答案是110
正確答案為11
哪個地方寫錯了?
感覺你錯的地方挺多的..
說幾個比較需要改的點
1. while迴圈後面也要向if或是for迴圈一樣,也要加上大括號{}才能將後面所有的動作包括進去,不然compiler預設只有一行。
也就是說,以你這份程式碼來看,你的while迴圈只包括if( a==1 ){..}這一段程式碼,下面的while( a>0 ){...}和for( i=c-1... ){...}都不再你的while迴圈當中
2. 每次的輸出後都要換行喔~~ 換行很重要的
3. 對於每次的輸入a,你的c要記得重新回歸成0,不然程式會接續上一個測資繼續儲存下去。你執行程式一直輸入1看看就知道我的意思了
4. 程式結尾最好還是加一行return 0;
其餘的部分你自己再嘗試看看吧
感覺你錯的地方挺多的..
說幾個比較需要改的點
1. while迴圈後面也要向if或是for迴圈一樣,也要加上大括號{}才能將後面所有的動作包括進去,不然compiler預設只有一行。
也就是說,以你這份程式碼來看,你的while迴圈只包括if( a==1 ){..}這一段程式碼,下面的while( a>0 ){...}和for( i=c-1... ){...}都不再你的while迴圈當中
2. 每次的輸出後都要換行喔~~ 換行很重要的
3. 對於每次的輸入a,你的c要記得重新回歸成0,不然程式會接續上一個測資繼續儲存下去。你執行程式一直輸入1看看就知道我的意思了
4. 程式結尾最好還是加一行return 0;
其餘的部分你自己再嘗試看看吧
過了,謝謝你