南开《C语言程序设计》19秋期末考核[答案]满分答案
《C语言程序设计》19秋期末考核-0001
一、单选题 (共 25 道试题,共 50 分)
1.putchar函数可以向终端输出一个:
A.整型变量表达式值
B.实型变量值
C.字符或字符型变量值
D.字符串
2.以下对C语言中共用体类型数据的叙述正确的是( )
A.可以对共用体变量名直接赋值
B.共用体类型定义中不能出现结构体类型的成员
C.一个共用体变量中可以同时存放其所有成员
D.一个共用体变量中不能同时存放其所有成员
3.在C语言中,char型数据在内存中的存储形式是( )
A.补码
B.反码
C.原码
D.ASCII码
4.从用户使用的角度看,函数有两种,它们是( )
A.用户自定义函数和主函数
B.库函数和用户自定义函数
C.库函数和主函数
D.主函数和子函数
5.若调用fputc函数输出字符成功,则其返回值是( )
A.输出的字符
B.EOF
C.1
D.0
6.变量的指针,其含义是指该变量的( )
A.标识
B.地址
C.名字
D.值
7.main() {int x=2,y=-1,z=2; if(x<y) if(y<0) z=0; else z+=1; printf("%d\n",z); } 以上程序的输出结果为( )。
A.3
B.2
C.1
D.0
8.#include<stdio.h> main() {union { long a; int b; char c;}m; printf("%d\n",sizeof(m));} 以上程序的运行结果是( )。
A.8
B.6
C.4
D.2
9.设有以下说明语句 struct stu {int a;float b;}stutype; 则以下叙述不正确的是( )
A.stutype 是用户定义的结构体类型名
B.struct 是结构体类型的关键字
C.struct stu 是用户定义的结构体类型
D.a 和 b 都是结构体成员名
10.若有以下定义语句:int a[10]={1,2,3,4,5,6,7,8,9,10}; 则下列哪个是对该数组元素的正确引用( )
A.a[a[9]]
B.a[a[4]+4]
C.a[a[3]-5]
D.a[10]
11.以下正确的叙述是( )
A.若a是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整型数
B.在C语言中,每行只能写一条语句
C.在C程序中,%是只能用于整数运算的运算符
D.在C程序中,无论整数还是实数,都能被准确无误的表示
12.关于return语句,下列说法正确的是( )。
A.必须在每个函数中出现
B.可以在同一个函数中出现多次
C.只能在除主函数之外的函数中再出现一次
D.不能在主函数中出现
13.判断字符串a是否大于b,应当使用( )
A.if (strcmp(b,a)>0)
B.if (strcmp(a,b)>0)
C.if (strcmp(a,b))
D.if (a>b)
14.下面程序段 int k=2; while (k==0) {printf(“%d”,k);k--;} 则下面描述中正确的是()。
A.循环是无限循环
B.循环体语句执行一次
C.循环体语句一次也不执行
D.while 循环执行 10 次
15.已有定义 int a=-2;和输出语句:printf("%8lx",a);以下正确的叙述是:
A.整型变量的输出格式符只有%d一种
B.%x 是格式符的一种,它可以适用于任何一种类型的数据
C.%x 是格式符的一种,其变量的值按十六进制输出,但%8lx 是错误的
D.%8lx 不是错误的格式符,其中数字8规定了输出字段的宽度
16.#include “stdio.h” void main() { int sum=0,a=1; while(a<=10) {sum=sum+a; a++; } printf(“sum=%d\n”,sum); } 以上程序段的运行结果是( )
A.sum=55
B.sum=11
C.sum=10
D.sum=0
17.若执行fopen函数时发生错误,则函数的返回值是( )
A.地址值
B.null
C.EOF
D.1
18.C语言结构体类型变量在程序执行期间( )。
A.部分成员驻留在内存中
B.没有成员驻留在内存中
C.所有成员一直驻留在内存中
D.只有一个成员驻留在内存中
19.以下对一维整型数组 a 的正确说明是( )
A.int n=10,a[n];
B.int n;
C.int a(10) ;
D.define SIZE 10 int a[SIZE];
20.struct person {char name[9]; int age;}; struct person class[10]={"John",17,"Paul",19,"Mary"18,"adam",16}; 根据上面的定义,能打印出字母M的语句是( )。
A.printf("%c\n",class[3].name[1]);
B.printf("%c\n",class[3].name);
C.printf("%c\n",class[2].name[1]);
D.printf("%c\n",class[2].name[0])
21.x=-2; y=-1; if(x!=0) if(x>0) y=1; else y=0; 该程序段的输出结果为( )。
A.不确定
B.1
C.0
D.-1
22.若以”a+”方式打开一个已存在的文件,则以下叙述正确的是( )。
A.文件打开时,原有文件内容被删除,只可作写操作。
B.文件打开时,原有文件内容被删除,位置指针移到文件开头,可作重新写和读操作。
C.文件打开时,原有文件内容不被删除,位置指针移到文件末尾,可作添加和读操作。
D.以上各种说法皆不下确。
23.判断字符串a是否大于b,应当使用( )
A.if (strcmp(b,a)>0)
B.if (strcmp(a,b)>0)
C.if (strcmp(a,b))
D.if (a>b)