使用 scanf()函数读取用户输入的十进制、十六进制和八进制的整型数据。 使用 printf 语句分别将其输出。
时间: 2024-12-08 20:18:24 浏览: 13
在C语言中,`scanf()`函数用于从标准输入设备(通常是键盘)读取用户输入,并存储到相应的变量中。如果你想让用户输入十进制、十六进制和八进制的整数,可以使用以下步骤:
1. 首先,你需要定义一个变量来储存用户的输入,比如 `int decimal`, `unsigned int hex`, 和 `long octal` 分别代表十进制、十六进制和八进制。
```c
#include <stdio.h>
#include <string.h>
int main() {
int decimal;
unsigned int hex;
long octal;
// 读取十进制输入
printf("请输入十进制整数: ");
if (scanf("%d", &decimal) == 1) { // 检查是否成功读取
printf("您输入的十进制数是: %d\n", decimal);
} else {
printf("无法读取十进制数。\n");
}
// 读取十六进制输入并转换
printf("请输入十六进制整数(前缀 '0x'): ");
char hex_str[64]; // 预留空间以防过长
fgets(hex_str, sizeof(hex_str), stdin); // 读取一行
hex_str[strcspn(hex_str, "\n")] = '\0'; // 删除换行符
if (sscanf(hex_str, "0x%x", &hex) == 1) { // 将十六进制字符串转换成无符号整数
printf("您输入的十六进制数是: 0x%04X\n", hex); // 格式化输出以便观察
} else {
printf("无法解析十六进制数。\n");
}
// 读取八进制输入并转换
printf("请输入八进制整数(前缀 '0o'): ");
fgets(octal_str, sizeof(octal_str), stdin);
octal_str[strcspn(octal_str, "\n")] = '\0';
if (sscanf(octal_str, "0o%ld", &octal) == 1) { // 转换为长整型
printf("您输入的八进制数是: 0o%lo\n", octal);
} else {
printf("无法解析八进制数。\n");
}
return 0;
}
```
在这个例子中,我们首先提示用户输入,并检查`scanf()`是否成功。对于十六进制和八进制,我们先读取用户输入的一行,然后使用`sscanf()`函数尝试识别和转换。
阅读全文