C语言习题与答案解析

需积分: 9 3 下载量 173 浏览量 更新于2024-08-01 1 收藏 118KB DOC 举报
"C语言习题集" 这篇资源提供了一组C语言的练习题目,适合C语言初学者进行自我提升。让我们逐一分析这些题目所涵盖的知识点: 1. 关键字:C语言的关键字是预定义的,有特殊含义的标识符,如`switch`、`case`和`default`等。题目中的`swicth`是拼写错误,不是关键字。 2. 字符常量:字符常量用单引号括起,可以是ASCII码对应的字符或者转义序列,如`\0`表示空字符。题目指出`'\084'`是非法的,因为八进制数字不能超过7。 3. 字符串输出:在C语言中,字符串是以`\0`结束的字符数组。如果未指定长度,`printf`会输出直到遇到`\0`为止。因此,题目中的`s="abcd"`会被视为字符串,输出`abcd`。 4. 指针与解引用:指针变量可以指向其他变量的地址。题目中的`pp`是二级指针,`p`是一级指针。`*p`表示解引用`p`,得到`a`的值;`**pp`表示解引用`pp`,再解引用得到`p`指向的值,即`b`的值。所以输出为`20,20`。 5. 数值转换:在C语言中,前缀`0`表示八进制,`0x`表示十六进制。因此,`u=010`是八进制数8,`v=0x10`是十六进制数16,转换为十进制都是10。`w=10`是十进制数10。所以输出为`8,16,10`。 6. 字符运算:字符之间可以做减法,减去ASCII码值。`c2-c1`是`e-b`,等于2;`c2-'a'+'A'`将`e`转换为大写字母`E`。因此,输出为`2,E`。 7. 指针操作:`ps`是指向字符串`s`的指针,`ps+2`和`s[2]`都表示第二个字符`o`,`ps[2]`同样表示`o`。但`ps+=2,*ps`在增加指针后解引用,此时`*ps`指向`r`。 8. 循环次数:外层循环执行5次,内层循环每次执行4次,总共执行次数是`5 * 4 = 20`次。 9. 字符串函数:`strlen`返回字符串的长度,不包括`\0`。`strcpy`将`s2`复制到`s1`,之后`strlen`计算`s1`的长度,即`4`。 10. 数组与指针:数组名`a`实质上是首元素的地址,`*p`表示`a[0]`,`*a`等同于`a[0]`。`a[p-a]`是通过指针偏移获取数组元素,但`a[10]`是错误的,因为它访问了数组的第11个元素,超出范围。 11. 字符串拼接:该程序创建了一个空字符串`""`,但没有显示输出。在实际运行中,应该会有提示输出的语句,否则不会有任何输出。 通过解答这些题目,我们可以回顾和巩固C语言的基础知识,包括数据类型、运算符、指针、字符串处理、循环结构、数组以及函数的使用。