C语言, 获取程序输入的一个非负整数,并输出它的八进制、十进制以及十六进制数。
时间: 2025-01-01 20:35:51 浏览: 69
在C语言中,获取用户输入的非负整数并转换为八进制、十进制和十六进制可以使用标准库函数如scanf()来读取输入,然后利用itoa()(已弃用,推荐strtol())或者sprintf()来进行字符串表示。以下是一个简单的示例:
```c
#include <stdio.h>
#include <stdlib.h> // 引入 strtol 函数
int main() {
int num;
printf("请输入一个非负整数: ");
if (scanf("%d", &num) == 1 && num >= 0) { // 检查输入是否有效
char octal[10], decimal[20], hex[20]; // 存储转换后的字符串
// 转换为八进制
sprintf(octal, "0%o", num);
// 转换为十进制
sprintf(decimal, "%d", num);
// 转换为十六进制
char* endptr;
long long hex_num = strtol(&num, &endptr, 10);
if (*endptr == '\0') {
sprintf(hex, "%llx", hex_num); // 使用long long防止溢出
} else {
printf("无效输入!\n");
return 1; // 输入不是纯数字
}
printf("八进制: %s\n", octal);
printf("十进制: %s\n", decimal);
printf("十六进制: %s\n", hex);
} else {
printf("输入无效!\n");
}
return 0;
}
```
阅读全文
相关推荐


















