提取正整数的百位数,C语言
时间: 2024-09-27 10:09:14 浏览: 9
在C语言中,提取正整数的百位数通常需要先将数字转换成字符串,然后处理字符串中的字符。以下是一个简单的示例,如何使用`itoa()`函数以及指针操作来实现这个功能:
```c
#include <stdio.h>
#include <string.h>
// 自定义的itoa函数,用于将整数转换为字符串
char* itoa(int num, char* str, int radix) {
if (radix < 2 || radix > 36) return NULL;
if (num == 0) { *str = '0'; return str + 1; }
char negative = num < 0;
num = negative ? -num : num;
char* ptr = str;
do {
*ptr++ = "0123456789ABCDEF"[num % radix];
} while ((num /= radix) != 0);
if (negative) *ptr++ = '-';
*ptr = '\0';
return str;
}
int main() {
int number;
printf("请输入一个正整数: ");
scanf("%d", &number);
char buffer[10]; // 短暂存储字符串
itoa(number, buffer, 10); // 10表示十进制
// 找到并返回百位数字
char* start = buffer;
while (*start != '0' && *start != '1') { // 如果不是0或1(代表千位和个位)
start++;
}
start++; // 向右移动一位到百位位置
printf("百位数是: %c\n", *start);
return 0;
}
```
在这个例子中,`itoa()`函数首先将输入的整数转换成字符串,然后通过遍历字符串找到第一个非零字符的位置,并返回该位置前一位的值,即为百位数。
注意:上述代码中的 `itoa()` 函数并不是标准库的一部分,为了简单起见而自定义的。在实际项目中,可以考虑使用更通用的库函数如`snprintf()`或者第三方库来完成数字转字符串的功能。