有人可以解释一下 for 循环如何反转数组中的元素吗?
Can someone explain me how the for loop reverses the elements in the array?
程序目的:将十进制数转换成二进制数。
我的问题:这里的 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;
}
变量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]);
}
在第一个循环中,num每一步减半,所以它越来越小,但是索引i越来越大,所以位从高(从索引0开始)到低排序。在第二个循环中,索引从大开始并减少到 0,因此这些位从低(左)到高(右)打印出来。如果要从高位到低位打印出来,第二次循环需要从0开始索引,递增到最后一个位的位置,如下。
for(num = 0; num < i; num++) { /* assume num will not be used again */
printf("%d", BinArray[num]);
}
程序目的:将十进制数转换成二进制数。
我的问题:这里的 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;
}
变量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]);
}
在第一个循环中,num每一步减半,所以它越来越小,但是索引i越来越大,所以位从高(从索引0开始)到低排序。在第二个循环中,索引从大开始并减少到 0,因此这些位从低(左)到高(右)打印出来。如果要从高位到低位打印出来,第二次循环需要从0开始索引,递增到最后一个位的位置,如下。
for(num = 0; num < i; num++) { /* assume num will not be used again */
printf("%d", BinArray[num]);
}