1. C 语言中,用于输入数据的函数是( )
B. scanf()
D. putchar()
2. 以下哪个是合法的 C 语言标识符( )
B. int
D. ab
3. 若有定义 int a = 5; 则执行语句 a += 3; 后,a 的值为( )
B. 5
D. 15
4. 下面哪种循环结构在执行循环体之前先判断条件( )
B. do - while 循环
D. 以上都是
5. 函数调用时,实参和形参之间的数据传递是( )
B. 值传递
D. 无传递
6. 若有定义 char str[] = "hello"; 则数组 str 的长度为( )
B. 6
D. 不确定
7. 以下关于指针的说法,错误的是( )
B. 指针可以进行算术运算
D. 指针不能指向数组
8. 若有定义 int a[3][4]; 则对数组元素 a[1][2] 的正确引用是( )
B. (a[1] + 2)
D. 以上都是
9. 在 C 语言中,文件操作时,以只读方式打开文本文件的模式是( )
B. "w"
D. "rb"
10. 以下哪个预处理指令用于包含头文件( )
B. ifdef
D. endif
二、多项选择题
A. int
C. char
答案:ABC
A. &&
C. !
答案:ABC
A. 数组元素必须是相同类型
C. 数组可以在定义时初始化
答案:ABC
A. strlen()
C. strcmp()
答案:ABCD
A. 函数可以有返回值
C. 函数可以嵌套调用
答案:ABCD
A. 访问数组元素
C. 动态内存分配
答案:ABCD
A. 结构体可以包含不同类型的数据成员
C. 结构体可以嵌套定义
答案:ABCD
A. 打开文件
C. 关闭文件
答案:ABC
A. ifdef
C. endif
答案:ABCD
A. 一个 C 语言程序可以包含多个函数
C. 程序可以有多个 main 函数
答案:ABD
1. C 语言区分大小写。( )
2. 变量在使用前可以不定义。( )
3. 逗号运算符的优先级是所有运算符中最低的。( )
4. for 循环和 while 循环可以相互转换。( )
5. 函数的返回值类型可以和函数体中实际返回的值类型不一致。( )
6. 数组名就是数组首元素的地址。( )
7. 指针变量中存储的是变量的值。( )
8. 结构体变量不能作为函数返回值。( )
9. 文件操作时,以写模式打开文件,如果文件不存在会自动创建。( )
10. 预处理指令是在编译前进行处理的。( )
四、简答题
变量定义是为变量分配内存空间,而声明只是告诉编译器变量的类型和名称,不分配内存。定义只能有一次,声明可以有多次。例如,“int a;” 是定义,“extern int a;” 是声明。
C 语言中函数的参数传递方式主要是值传递。在值传递中,实参的值被复制给形参,函数对形参的修改不会影响实参。还有地址传递,通过传递变量的地址,函数可以修改实参的值。
数组名可以看作是指向数组首元素的常量指针。可以使用指针来访问数组元素,通过指针的算术运算可以遍历数组。例如,“(a + i)” 等价于 “a[i]”,其中 a 是数组名。
首先使用 fopen 函数以指定的模式打开文件,若打开成功会返回文件指针。然后使用 fread、fwrite、fgets 等函数进行读写操作。最后使用 fclose 函数关闭文件,释放相关资源。
1. 讨论 C 语言中不同数据类型在内存中的存储方式。
2. 讨论 C 语言中递归函数的优缺点。
3. 讨论 C 语言中动态内存分配的作用和使用场景。
4. 讨论 C 语言中结构体和联合体的区别。
结构体的每个成员都有独立的内存空间,所有成员可以同时存在并被使用。而联合体的所有成员共享同一块内存空间,同一时间只能使用一个成员。结构体适用于存储不同类型的数据,联合体适用于节省内存,在不同时刻使用不同类型的数据。
