C语言给一个不多于5位的正整数,要求打印:一、求它是几位数,二、逆序打印出各位数字,三、最大数字在哪一位上 (15分)
时间: 2023-12-01 14:51:35 浏览: 76
```c
#include <stdio.h>
int main()
{
int num, count = 0, rev = 0, max_digit = 0, max_pos = -1;
printf("请输入一个不多于5位的正整数: ");
scanf("%d", &num);
while (num > 0) {
count++; // 统计位数
int digit = num % 10;
rev = rev * 10 + digit; // 计算逆序数
if (digit > max_digit) { // 记录最大数字的位置和大小
max_digit = digit;
max_pos = count;
}
num /= 10;
}
printf("它是%d位数\n", count);
printf("逆序打印出各位数字: %d\n", rev);
printf("最大数字%d在第%d位上\n", max_digit, max_pos);
return 0;
}
```
相关问题
c语言 给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
以下是C语言的代码实现:
```c
#include <stdio.h>
int main()
{
int num, temp, i = 0;
printf("请输入一个不多于5位的正整数:");
scanf("%d", &num);
while (num > 0)
{
temp = num % 10;
printf("%d", temp);
i++;
num = num / 10;
}
printf("\n%d位数", i);
return 0;
}
```
输入一个不多于5位的正整数,程序会先通过循环取出每一位数字并逆序打印出来,同时记录数字的位数并输出。
C语言给一个不多于5位的正整数要求:一求它是几位数 逆序打印出各位数字。
在C语言中,你可以通过以下步骤来实现这个功能:
1. **判断位数**:
- 使用`<stdio.h>`库的`freadline()`函数读取用户输入的字符串,直到遇到换行符或者字符超过5位。
- 初始化一个计数器变量,如`int digit_count = 0`,每读取一个非空字符就加1。
- 当读到第6个字符时(包括),停止读取,并返回计数器值减1作为位数,因为字符串是以'\0'结尾的。
```c
#include <stdio.h>
#define MAX_DIGITS 5
int getDigitCount(char input[]) {
int i;
for (i = 0; input[i] != '\0' && i < MAX_DIGITS; i++) {
if (input[i] != '\n') {
digit_count++;
}
}
return digit_count;
}
```
2. **逆序打印**:
- 定义一个循环,从最后一个字符开始遍历输入的字符串,然后依次打印每个字符。
```c
void printReversed(char input[], int count) {
int i;
for (i = count - 1; i >= 0; i--) {
printf("%d", input[i]);
}
printf("\n");
}
```
**完整示例**:
```c
int main() {
char input[6];
printf("请输入不超过5位的正整数: ");
fgets(input, sizeof(input), stdin);
// 去掉换行符
input[strcspn(input, "\n")] = '\0';
int digit_count = getDigitCount(input);
printf("该数共有%d位:\n", digit_count);
printReversed(input, digit_count);
return 0;
}
```
阅读全文