程式的目的:將十進制數轉換為二進制數。
我的問題:這里的 for 回圈如何在陣列中反向列印元素?是什么for(i=i-1; i>=0; i--)意思?
(我也很感激,如果你給我一些關于我的代碼的反饋,以及如何使它看起來更好更好,謝謝!)
#include <stdio.h>
int main()
{
int i;
int num;
int BinArray[32];
printf("Enter a decimal number: ");
scanf("%d", &num);
for(i=0; num>0; i ){
if(num % 2 == 0)
BinArray[i] = 0;
else
BinArray[i] = 1;
num = num / 2;
}
// I don't understand how it prints the binary numbers in reverse, what happened?
for(i=i-1; i>=0; i--) {
printf("%d", BinArray[i]);
}
return 0;
}
uj5u.com熱心網友回復:
該變數i包含在此回圈中輸入的元素數
for(i=0; num>0; i ){
if(num % 2 == 0)
BinArray[i] = 0;
else
BinArray[i] = 1;
num = num / 2;
}
因為在為陣列BinArray的元素分配新值后,變數 i 在 for 回圈中遞增i 。
所以i - 1指向陣列的最后一個元素BinArray。從最后一個元素開始直到索引等于的元素0(因為變數 i 遞減i--)陣列的所有元素都在這個 for 回圈中輸出
for(i=i-1; i>=0; i--) {
printf("%d", BinArray[i]);
}
uj5u.com熱心網友回復:
在第一個回圈中,num每一步減少一半,所以它變得越來越小,但是索引i變得越來越大,所以位被從高(從索引0開始)排序到低。在第二個回圈中,索引從大開始并減少到 0,因此位從低(左)到高(右)列印出來。如果要從高到低列印出位,則需要從 0 開始第二次回圈的索引并將其增加到最后一位位置,如下所示。
for(num = 0; num < i; num ) { /* assume num will not be used again */
printf("%d", BinArray[num]);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/431173.html
