C语言 输入一个不多于4位的正整数。求出他是几位数。分别打印每一位数字。按照逆序打印出各位数字
时间: 2024-06-13 15:08:30 浏览: 157
以下是C语言实现输入一个不多于4位的正整数,求出它是几位数,分别打印出每一位数字,按逆序打印出各位数字的代码:
```c
#include <stdio.h>
int main() {
int num, digit, count = 0;
printf("请输入一个不多于4位的正整数:");
scanf("%d", &num);
int temp = num;
// 求出它是几位数
while (temp != 0) {
count++;
temp /= 10;
}
printf("它是%d位数\n", count);
// 分别打印出每一位数字
printf("每一位数字分别是:");
for (int i = count; i > 0; i--) {
digit = num / (int)pow(10, i - 1) % 10;
printf("%d ", digit);
}
printf("\n");
// 按逆序打印出各位数字
printf("按逆序打印出各位数字:");
while (num != 0) {
printf("%d", num % 10);
num /= 10;
}
printf("\n");
return 0;
}
```
相关问题
c语言输入一个不多于5位的正整数, 要求: ①求出它是几位数; 高分别打印出每一位数字; 按逆序打印出各位数字。
在C语言中,你可以通过遍历输入的字符串并处理每个字符来完成这个任务。首先获取输入的字符串,然后确定它的长度(即位数),接着逐个提取每位数字并进行相应的操作。以下是实现该功能的一个示例代码:
```c
#include <stdio.h>
#include <string.h>
void print_digits(int num) {
while (num != 0) {
printf("%d", num % 10); // 打印当前位数字
num /= 10; // 移除最低位数字
}
}
void reverse_print_digits(int num) {
char digits[6]; // 用于存储最多5位数的数组
int i = 0;
while (num > 0) {
digits[i++] = num % 10 + '0'; // 把数字转换成字符并存入数组
num /= 10;
}
digits[i] = '\0'; // 添加终止符
printf("逆序打印: ");
for (i = strlen(digits) - 1; i >= 0; i--) {
printf("%c", digits[i]);
}
printf("\n");
}
int main() {
char input[6];
int number;
printf("请输入一个不超过5位的正整数: ");
fgets(input, sizeof(input), stdin); // 防止读取换行符
input[strcspn(input, "\n")] = '\0'; // 去掉字符串尾部的换行符
number = atoi(input); // 将字符串转为整数
if (number <= 0 || number >= pow(10, 5)) {
printf("输入错误!请输入1到99999之间的正整数。\n");
} else {
printf("位数: %d\n", static_cast<int>(strlen(input) - 1)); // 减去开头的空格
print_digits(number); // 正序打印
reverse_print_digits(number); // 逆序打印
}
return 0;
}
用C语言输入一个不多于五位的正整数,要求:求出他是几位数,分别输出每一位数字,按逆序输出各位数字
在C语言中,你可以通过遍历输入的字符串来获取整数的每一位,同时计算总位数。以下是相应的代码示例:
```c
#include <stdio.h>
#include <string.h>
void reverseDisplay(int num, int digits) {
for (int i = digits - 1; i >= 0; i--) {
printf("%d", num % 10); // 取余数得到最后一位
num /= 10; // 除以10移除最低位
}
}
int main() {
char input[6]; // 存储最多5位数
int num, digits;
printf("请输入一个不超过5位的正整数: ");
fgets(input, sizeof(input), stdin); // 从标准输入读入字符串
input[strcspn(input, "\n")] = '\0'; // 去除换行符
num = atoi(input); // 转换成整数
digits = strlen(input) - 1; // 总位数减1,因为数组索引从0开始
printf("\n输入的数字是%d位数:\n", digits);
reverseDisplay(num, digits); // 逆序打印每一位数字
return 0;
}
```
当运行此程序,它会提示用户输入一个不超过5位的正整数,然后反向输出每一位数字。
阅读全文