用C语言输入一个正整数,分离出各位数字,并保存在一维数组中,逆序输出数组中所有数字
时间: 2024-12-22 15:18:10 浏览: 91
在C语言中,你可以通过以下步骤来输入一个正整数,将其分解成各个位数并存储在一个一维数组中,最后逆序输出这些数字:
1. 首先,创建一个足够大的一维数组来存放每一位数字,因为整数的位数可能是任意的,所以可以预先设定一个足够大的容量,如100,然后动态分配内存。
```c
int num;
int digits[100];
int digit_count = 0;
```
2. 输入正整数,可以用`scanf`函数获取用户输入:
```c
scanf("%d", &num);
```
3. 接下来,将输入的整数转换成字符串,方便后续处理:
```c
char str[100];
itoa(num, str, 10); // 使用itoa函数,注意需要包含stdlib.h库
```
4. 然后遍历字符串,提取每一位数字并存入数组:
```c
for (int i = strlen(str) - 1; i >= 0; i--) {
digits[digit_count++] = str[i] - '0'; // 注意减去字符'0'得到数字
}
```
5. 最后,逆序输出数组中的数字:
```c
for (int i = digit_count - 1; i >= 0; i--) {
printf("%d ", digits[i]);
}
printf("\n");
```
相关问题
C语言程序输入一个正整数,分离出各位数字,并保存在一维数组中,逆序输出数组中所有数字。
以下是C语言程序的代码:
```c
#include <stdio.h>
int main() {
int num;
printf("请输入一个正整数:");
scanf("%d", &num);
int digits[20]; // 保存数字的数组,最多20位
int i = 0;
while (num > 0) {
digits[i] = num % 10; // 取出最后一位数字
num /= 10; // 去掉最后一位数字
i++;
}
printf("逆序输出数字:");
for (int j = i - 1; j >= 0; j--) { // 从最高位开始输出
printf("%d", digits[j]);
}
printf("\n");
return 0;
}
```
首先,程序提示用户输入一个正整数,并通过`scanf`函数读入该数字。然后,程序定义了一个长度为20的整型数组`digits`来保存分离出的数字,数组的每个元素表示数字的一位(最后一位存在`digits[0]`中)。接下来,程序使用循环将输入的数字分离出每一位,并保存在`digits`数组中。最后,程序使用另一个循环逆序输出`digits`数组中的所有数字。
C语言对n个整数组成的一维数组按逆序重新存储并输出(n<10)。 输入格式: 第一行给出一个不超过10的正整数n。第二行给出n个整数,其间以空格分隔。 输出格式: 在一行中输出n个逆序的整数。每个数输出占4列。
好的,下面是一个用C语言实现的程序,它能够对n个整数组成的一维数组按逆序重新存储并输出。
```c
#include <stdio.h>
int main() {
int n;
scanf("%d", &n); // 读取整数n
int arr[10]; // 定义一个长度为10的数组
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]); // 读取n个整数到数组中
}
// 逆序输出数组中的整数
for (int i = n - 1; i >= 0; i--) {
printf("%4d", arr[i]); // 每个数输出占4列
}
return 0;
}
```
### 输入格式:
第一行给出一个不超过10的正整数n。
第二行给出n个整数,其间以空格分隔。
### 输出格式:
在一行中输出n个逆序的整数。每个数输出占4列。
### 示例:
#### 输入:
```
5
1 2 3 4 5
```
#### 输出:
```
5 4 3 2 1
```
这个程序首先读取一个整数n,然后读取n个整数存入数组中。接着,通过逆序遍历数组,将每个元素按照指定格式输出。
阅读全文
相关推荐
















