用c语言编写,从键盘输入一个三位正整数,逆序输出
时间: 2024-03-22 20:37:14 浏览: 165
好的,这是一个很基础的 C 语言编程问题。下面是代码实现:
```c
#include <stdio.h>
int main() {
int num, reverse_num = 0;
printf("请输入一个三位正整数:");
scanf("%d", &num);
while (num != 0) {
reverse_num = reverse_num * 10 + num % 10;
num /= 10;
}
printf("逆序输出:%d\n", reverse_num);
return 0;
}
```
这段代码首先从键盘输入一个三位正整数,然后通过循环逆序输出它。在循环中,每次将 reverse_num 的值乘以 10 并加上 num 的个位数,然后将 num 除以 10 向下取整。最后输出逆序后的数字即可。
希望能够帮助到你!
相关问题
编写C语言程序,从键盘输入一个三位正整数,然后按数位的逆序输出该数
在C语言中,编写一个程序来实现这个功能可以利用数组和循环结构。首先,我们需要从用户那里获取输入的三位数,并将其存储在一个数组中。接着,我们将数组中的数字逆序并输出。以下是一个简单的示例:
```c
#include <stdio.h>
#define MAX_DIGITS 4 // 考虑到可能的前导零
int main() {
int num, reversed = 0;
char digits[MAX_DIGITS]; // 用于存放逆序后的每一位
printf("请输入一个三位正整数: ");
scanf("%d", &num);
// 检查输入是否有效
if (num <= 0 || num >= 1000) {
printf("无效输入, 请再试一次.\n");
return 1;
}
// 取出每位数字并将逆序存入digits数组
while (num > 0) {
digits[reversed++] = num % 10; // 最低位先取
num /= 10;
}
// 从数组末尾开始输出逆序的数字
for (int i = reversed - 1; i >= 0; i--) {
printf("%d", digits[i]);
}
printf("\n");
return 0;
}
```
在这个程序中,我们使用了`%d`运算符取得输入数字的每一位,并用`reverse++`来调整数组索引。注意,这里我们多考虑了一个位置来处理可能的前导零。
用C语言编写从键盘输入一个不多于3位的正整数,要求:求出它是几位数;分别输出每一位数字;按逆序输出各位数字。例如:原数为321,应输出123。
在C语言中,你可以通过以下几个步骤来完成这个任务:
1. **获取用户输入**:
使用`scanf()`函数从标准输入(通常是键盘)读取一个正整数,并存储到一个变量中。因为题目限制了输入长度不超过三位,可以假设使用一个只有一位的数组保存每位数字。
```c
int num, digit[4];
```
2. **判断位数**:
遍历输入的数字,直到遇到非零数值。这一步可以用`while`循环和`digit[0] = num % 10; num /= 10;`这样的结构来实现,同时记录下遍历的次数即为位数。
```c
digit[0] = num % 10;
num /= 10;
int digits_count = 1;
// 继续除以10直到num为0
while (num > 0) {
digit[digits_count++] = num % 10;
num /= 10;
}
```
3. **输出各位数字**:
逐个打印每一位数字。
```c
for (int i = 0; i < digits_count; ++i) {
printf("%d", digit[i]);
}
printf("\n");
```
4. **逆序输出**:
可以先将逆序的数组拷贝回原数组,然后按照正常顺序打印。
```c
for (int i = digits_count - 1; i >= 0; --i) {
digit[i] = digit[digits_count - 1 - i]; // 交换位置
}
// 逆序打印
for (int i = 0; i < digits_count; ++i) {
printf("%d", digit[i]);
}
printf("\n");
```
完整代码示例:
```c
#include <stdio.h>
int main() {
int num, digit[4], digits_count = 0;
// 获取用户输入并计算位数
scanf("%d", &num);
while (num > 0) {
digit[digits_count++] = num % 10;
num /= 10;
}
// 正序打印
printf("正序: ");
for (int i = 0; i < digits_count; ++i) {
printf("%d", digit[i]);
}
printf("\n");
// 逆序打印
for (int i = digits_count - 1; i >= 0; --i) {
digit[i] = digit[digits_count - 1 - i];
}
printf("逆序: ");
for (int i = 0; i < digits_count; ++i) {
printf("%d", digit[i]);
}
printf("\n");
return 0;
}
```
阅读全文