题目:顺序输出一个整数的各个位数字
#include <stdio.h>
#include <stdlib.h> // 用于动态分配内存(如果需要处理未知长度的数)
int main() {
int num, temp = 0, digits = 0;
// 假设不知道数字有多少位,可以动态分配数组(但这里为了简单起见,我们假设数字不会太大)
int arr[100]; // 假设数字最多有100位
printf("请输入一个整数:");
scanf("%d", &num);
temp = num;
// 首先,计算数字的位数
while (temp != 0) {
digits++;
temp /= 10;
}
// 从高位到低位填充数组
temp = num;
for (int i = digits - 1; i >= 0; i--) {
arr[i] = temp % 10;//依次把数字的低位存在数组的高位
temp /= 10;
}
//顺序打印数组中的每个元素
for (int i = 0; i < digits; i++) {
printf("%d", arr[i]);
if (i < digits - 1) { // 除非在最后一个数字后,否则打印一个空格
printf(" ");
}
}
printf("\n");
return 0;
}
采用动态分配数组:
#include <stdio.h>
#include <stdlib.h> // 引入stdlib.h以使用malloc和free
int main() {
int num, temp = 0, digits = 0;
int *arr; // 声明一个指向整数的指针,用于动态分配数组
printf("请输入一个整数:");
scanf("%d", &num);
temp = num;
// 首先,计算数字的位数
while (temp != 0) {
digits++;
temp /= 10;
}
// 动态分配数组以存储数字的每一位
arr = (int *)malloc(digits * sizeof(int));
if (arr == NULL) {
printf("内存分配失败!\n");
return 1; // 如果内存分配失败,则返回错误代码
}
// 从高位到低位填充数组
temp = num;
for (int i = digits - 1; i >= 0; i--) {
arr[i] = temp % 10;
temp /= 10;
}
//顺序打印数组中的每个元素
for (int i = 0; i < digits; i++) {
printf("%d", arr[i]);
if (i < digits - 1) {
printf(" ");
}
}
printf("\n");
// 释放动态分配的内存
free(arr);
return 0;
}