C语言程序:将字符串中的小写字母转换为大写字母

需积分: 24 13 下载量 40 浏览量 更新于2024-07-13 收藏 282KB PPT 举报
"C语言习题,涉及字符串处理、字符编码、逻辑运算、算术运算、数据类型、运算符优先级、循环结构等知识点。" 本文主要探讨的是一个C语言编程习题,要求将字符串中的小写字母转换为大写字母。在C语言中,这种操作可以通过比较字符的ASCII码来实现,因为小写字母和大写字母在ASCII码表中是连续的,两者之间只相差32。 题目给出的代码框架中,有一个while循环用于遍历字符串。在循环中,我们需要判断当前字符是否为小写字母。在ASCII码中,小写字母'a'的码值为97,大写字母'A'的码值为65,它们之间的差值正好是32。因此,如果当前字符是小写字母(即它的ASCII码在'a'和'z'之间),我们可以将字符码减去这个差值,从而将其转换为对应的大写字母。 完整的代码如下: ```c #include <stdio.h> int main() { int i = 0; char str[80]; scanf("%s", str); while (str[i]) { // 循环条件为字符串未结束 if (str[i] >= 'a' && str[i] <= 'z') { // 判断字符是否为小写字母 str[i] -= 'a' - 'A'; // 转换为大写字母 } i++; // 移动到下一个字符 } printf("%s\n", str); return 0; } ``` 此外,题目还包含了一些关于C语言基础的复习题目,例如: 1. 自定义标识符只能包含字母、数字和下划线,且不能以数字开头,因此`num(10)`和`class+2`是非法的。 2. `begin`不是C语言的关键字。 3. `\n`, `\t`, `\b`是转义字符,表示换行、制表和退格。 4. `074`不是一个有效的八进制转义字符。 5. 字符串常量需要用双引号包围,`"ABC"`是正确的。 6. 字符`'\n'`占用1个字节。 7. 字符串`"xyz"`在内存中占用4个字节(包括结束符`\0`)。 8. `0L`是合法的长整型常数。 9. char型数据在内存中存放的是ASCII代码值。 10. `(m = a == b) || (n = c == d)`,如果a等于b,m为1,n的值取决于c是否等于d,但至少有一个为1。 11. `b = a % 2`不会使b的值为2,因为5除以2的余数是1。 12. `x=(a=3,b=a--)`后,x为3,a为2,b为3。 13. `(m=a>b)&&(n=a>b)`,由于a和b都为1,所以m和n都是0。 14. `a+=a-a*a`相当于`a = a + (a - a * a)`,当a为3时,a最终变为0。 15. `%`(取模)运算符的优先级最高。 16. `i---i`相当于`i--; --i;`,如果i为3,最后i为1。 17. `a+++b+++c++`会先执行`a++`,然后是`b++`,最后是`c++`,所以结果是8。 18. 表达式`x=1,y=x+3`是不合法的,因为它试图在一个表达式中同时赋值和返回值,正确的写法应该是`x=1; y=x+3;`。 这些题目涵盖了C语言的基本概念,包括数据类型、运算符、控制结构、输入输出以及字符串处理等方面,对于理解和掌握C语言的基础知识非常有帮助。