2.从键盘输入- -个字符,如果该字符为小写字母,则转换为大写字母输出;如果该字符为大写字母则转换为小写字母,否则照原样输出。C语言新手
时间: 2025-03-12 15:16:56 浏览: 54
这是一个非常基础的 C 语言练习题,目的是帮助初学者理解字符输入、条件判断以及大小写字母之间的转换规则。下面是完整的解决方案和解释:
### 程序代码
```c
#include <stdio.h>
int main() {
char ch;
// 提示用户输入一个字符
printf("请输入一个字符: ");
scanf("%c", &ch); // 输入单个字符
if (ch >= 'a' && ch <= 'z') { // 判断是否为小写字母
ch = ch - ('a' - 'A'); // 转换为对应的大写字母
printf("转换后的字符: %c\n", ch);
}
else if (ch >= 'A' && ch <= 'Z') { // 判断是否为大写字母
ch = ch + ('a' - 'A'); // 转换为对应的小写字母
printf("转换后的字符: %c\n", ch);
}
else {
printf("原始字符保持不变: %c\n", ch); // 非字母直接输出
}
return 0;
}
```
---
### 解释
1. **`scanf()` 的使用**
我们用 `scanf("%c", &ch)` 来接收来自用户的单个字符输入。注意 `%c` 格式符用于读取单个字符。
2. **ASCII 值的关系**
在 ASCII 编码表中,每个字符都有对应的数值编码:
- 小写字母 `'a'` ~ `'z'` 对应的 ASCII 数值是连续的 (`97~122`)。
- 大写字母 `'A'` ~ `'Z'` 对应的 ASCII 数值也是连续的 (`65~90`)。
因此,两个相对应的大小写字母之间相差固定的偏移量 `('a' - 'A') == 32`。
3. **条件分支**
- 第一种情况:如果是小写字母 (`if(ch >= 'a' && ch <= 'z')`),我们将其减去偏移量转化为大写字母。
- 第二种情况:如果是大写字母 (`else if(ch >= 'A' && ch <= 'Z')`),我们加上偏移量转化为小写字母。
- 其他情况:既不是小写也不是大写的字符,直接原样输出。
4. **输出结果**
使用 `printf()` 打印最终的结果。
---
### 示例运行
假设程序名为 `char_converter.exe`,以下是几个测试案例及其运行效果:
#### 测试用例 1
输入:`m`
输出:`M`
#### 测试用例 2
输入:`K`
输出:`k`
#### 测试用例 3
输入:`&`
输出:`&` (非字母,保持不变)
---
###
阅读全文
相关推荐













