#13644:


s16101225@stu.edu.tw (蘇)

學校 : 不指定學校
編號 : 74465
來源 : [110.28.77.16]
最後登入時間 :
2019-05-13 21:51:40
a034. 二進位制轉換 | From: [101.8.177.160] | 發表日期 : 2018-03-31 22:12

#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

哪個地方寫錯了?

 
#13646: Re:求解


mirkat.ee06@g2.nctu.edu.tw (炭烤海苔)

學校 : 不指定學校
編號 : 74539
來源 : [138.246.3.200]
最後登入時間 :
2024-08-14 18:08:26
a034. 二進位制轉換 | From: [140.113.126.70] | 發表日期 : 2018-04-01 13:59

 

感覺你錯的地方挺多的..


說幾個比較需要改的點

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;

 

其餘的部分你自己再嘗試看看吧

 
#13647: Re:求解


s16101225@stu.edu.tw (蘇)

學校 : 不指定學校
編號 : 74465
來源 : [110.28.77.16]
最後登入時間 :
2019-05-13 21:51:40
a034. 二進位制轉換 | From: [101.8.177.160] | 發表日期 : 2018-04-01 17:39

 

感覺你錯的地方挺多的..


說幾個比較需要改的點

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;

 

其餘的部分你自己再嘗試看看吧



過了,謝謝你

 
ZeroJudge Forum