#14471: 請問各位高手一個小問題


andy5202andy5202@gmail.com (子恆黃)

學校 : 不指定學校
編號 : 81015
來源 : []
最後登入時間 :
2018-06-25 03:15:20
a034. 二進位制轉換 | From: [140.113.69.172] | 發表日期 : 2018-07-18 20:21

程式碼如下 請問輸出時(粗體字部分)是哪裡有錯 一直想不明白為何會多印出一堆數字 然而用for ( i = i - 1 ; i >= 0 ; i -- ) 來輸出就沒有問題 麻煩大家了
cout << s[i] ;

#include <iostream>

using namespace std ;

int main ()
{
int n , i ;
int s[1000] ;
while ( cin >> n )
{
s[1000] = 0 ;
i = 0 ;
while ( n > 0 )
{
s[i] = n % 2 ;
n /= 2 ;
i ++ ;
}
while ( i >= 0 )
{
cout << s[i-1] ;
i -- ;
}
cout << endl ;

}
}

 
#18107: Re:請問各位高手一個小問題


rexwu1104@gmail.com (黑雪公主 Black Lotus)

學校 : 新北市私立南山高級中學
編號 : 93041
來源 : [118.166.54.130]
最後登入時間 :
2022-06-06 20:48:09
a034. 二進位制轉換 | From: [114.24.4.158] | 發表日期 : 2019-06-17 12:58

程式碼如下 請問輸出時(粗體字部分)是哪裡有錯 一直想不明白為何會多印出一堆數字 然而用for ( i = i - 1 ; i >= 0 ; i -- ) 來輸出就沒有問題 麻煩大家了
cout << s[i] ;

#include

using namespace std ;

int main ()
{
int n , i ;
int s[1000] ;
while ( cin >> n )
{
s[1000] = 0 ;<------------------------------------這邊全都是零
i = 0 ;                                                          ^
while ( n > 0 )                                               |
{                                                                  |
s[i] = n % 2 ;                                               |
n /= 2 ;                                                        |
i ++ ;<----------------------------你最後會多加一次
}
while ( i >= 0 )
{
cout << s[i-1] ;
i -- ;
}
cout << endl ;

}
}

所以會多輸出一個零


 
ZeroJudge Forum