C语言基础练习:涵盖数组、函数、循环与条件判断

需积分: 3 2 下载量 88 浏览量 更新于2024-09-17 收藏 39KB DOC 举报
该资源是一个C语言的自测练习,主要涵盖数组、字符串、函数调用、循环控制、条件判断、数组初始化等方面的基础知识。 1. C语言中,初始化多维数组时,可以默认省略最后一个下标的边界。这意味着你可以只指定前面维度的大小,最后一个维度的大小可以根据已知数据自动推断。例如,`int arr[2][3] = {...}`,这里第二个维度的大小3可以省略,编译器会根据初始化的数据自动计算。 2. 判断字符串长度应使用`strlen`函数。这个函数接受一个字符串(字符数组)作为参数,并返回字符串的长度,不包括结束符'\0'。 3. 函数返回值的类型是在定义函数时指定的,不是由return语句中的表达式类型、调用函数的主调函数类型或临时类型决定。例如,`int func() {...}` 定义了一个返回整数的函数。 4. 当用数组名作为函数调用的实参时,实际传递给形参的是数组的首地址,而不是数组的第一个元素值或所有元素值。这允许函数通过指针操作数组。 5. `while(i++<4)` 这个循环在i等于1时开始,每次循环后i递增1,因此在满足条件`i++<4`时,循环结束,i的值会变为5。 6. 选项B `char b[10]; b="Hello!";` 是错误的,因为C语言中不能直接将字符串常量赋值给未初始化的字符数组,需要使用`strcpy`函数。 7. `!a` 表达式等价于 `a == 0`,在布尔逻辑中,非零值被认为是真,零值被认为是假。所以`!a`意味着"a"不为真,即"a"为零。 8. 循环 `for(k=16; k>0; k-=3) putchar('*')` 会输出五颗星,因为k从16递减到13,每次减3,共执行两次循环。 9. 给定的程序段是一个累加器,将变量`s`初始值设为`a`,然后从1累加到`c`,因此等价的赋值语句是 `s = s + c;`。 10. 选项C `inta[2][2]={{1},2,3}` 是错误的,因为它在初始化二维数组时,第二行的元素数量与声明不符。 11. 以下程序会输出7641,因为当`x`是3的倍数时,它会打印`x-1`的值并递减`x`,直到`x`不再满足条件。 ```c main() { int x=8; for(;x>0;x--) { if(x%3==0) { printf("%d",--x); continue; } } } ``` 这个练习涵盖了C语言的基础概念,对于初学者巩固基础知识非常有帮助。