用户输入的整数假定以不同的转换方式扫描每个数字(%d, %i, %o, %u, %x),然后在%d中打印。这是我得到的输出:437 437 287 437 1079我应该得到:437 437 665 437 1b5
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define LENGTH 5
int main()
{
int array[LENGTH];
printf("Enter the value 437 five times: ");
scanf("%d", &array[0]);
scanf("%i", &array[1]);
scanf("%o", &array[2]);
scanf("%u", &array[3]);
scanf("%x", &array[4]);
printf("nRead with %%d:");
printf("n%d", array[0]);
printf(" %d", array[1]);
printf(" %d", array[2]);
printf(" %d", array[3]);
printf(" %d", array[4]);
}
例如,十进制的八进制值437
等于4 * 8^2 + 3 * 8^2 + 7 * 8^0 = 256 + 24 + 7 = 287
。
也就是说,如果您使用转换说明符%o
,那么输入的数字将被解释为八进制数字。对于将输入的数字解释为十六进制数字的转换说明符%x
也是如此。