南开21秋学期《C语言程序设计》在线作业[答案]答案
21秋学期(1709、2103、2109、1903、1909、2003、2009、2103、2109)《C语言程序设计》在线作业
试卷总分:100 得分:100
一、单选题 (共 40 道试题,共 80 分)
1.判断字符串a是否大于b,应当使用( )
A.if (a>b)
B.if (strcmp(a,b))
C.if (strcmp(b,a)>0)
D.if (strcmp(a,b)>0)
正确答案:-----
正确答案:-----
2.在 C 语言中,引用数组元素时,其数组下标的数据类型允许是( )。
A.整型常量
B.整型表达式
C.整型常量或整型表达式
D.任何类型的表达式
正确答案:-----
3.在C语言中,int、char和short三种类型的数据在内存中所占用的字节数( )。
A.由用户自己定义
B.均为2个字节
C.是任意的
D.由所用机器的机器字长决定
正确答案:-----
4.C语言中规定,if语句的嵌套结构中,else总是与( )配对
A.与最近的if 配套
B.与第一个if 配套
C.按缩进位置相同的if配套
D.与最近的且尚未配对的if 配套
正确答案:-----
5.int k=1; while (k<=10); 上述语句执行后,变量k的值是( )。
A.10
B.11
C.9
D.无限循环,值不定
正确答案:-----
6.下列哪个是读写文件出错检测函数( )。
A.ferror
B.clearerr
C.feof
D.fwrite
正确答案:-----
7.struct person {char name[9]; int age;}; struct person class[10]={"John",17,"Paul",19,"Mary"21,"adam",16}; 根据上面的定义,能打印出字母M的语句是( )。
正确答案:-----
A.printf("%c ",class[3].name);
B.printf("%c ",class[3].name[1]);
C.printf("%c ",class[2].name[1]);
D.printf("%c ",class[2].name[0])
正确答案:-----
8.若有定义char str[]= “very good”,则str的长度为( )
正确答案:-----
A.8
B.9
C.10
D.11
正确答案:-----
9.x=-1; do { x=x*x; } while (x); 以上程序段( )
正确答案:-----
A.是死循环
B.循环执行2次
C.循环执行1次
D.有语法错误
正确答案:-----
10.x=-2; y=-1; if(x!=0) if(x>0) y=1; else y=0; 该程序段的输出结果为( )。
A.1
B.0
C.-1
D.不确定
正确答案:-----
11.#include “stdio.h” void main() { int sum=0,a=1; while(a<=10) {sum=sum+a; a++; } printf(“sum=%d ”,sum); } 以上程序段的运行结果是( )
正确答案:-----
A.sum=0
B.sum=55
C.sum=10
D.sum=11
正确答案:-----
12.判断字符串a是否大于b,应当使用( )
A.if (a>b)
B.if (strcmp(a,b))
C.if (strcmp(b,a)>0)
D.if (strcmp(a,b)>0)
13.fgetc函数的作用是从指定文件读入一个字符,该文件的打开方式必须是( )
A.只写
B.追加
C.读或读写
D.答案B和C都正确
正确答案:-----
14.main( ) {int n=4; while(n)printf("%d ",--n); } 以上程序的输出结果是( )。
正确答案:-----
A.2 0
B.3 1
C.3 2 1 0
D.2 1 0
正确答案:-----
15.以下叙述中错误的是:
A.变量的作用域取决于变量定义语句出现的位置
B.同一程序中,全局变量的作用域一定比局部变量的作用域大
C.局部变量的作用域是在定义它的函数体内
D.全局变量的作用域是从定义位置开始至源文件结束
正确答案:-----
16.C程序的执行从哪里开始( )
A.第一条语句
B.第一个函数
C.最后一个函数
D.主函数
正确答案:-----
17.若调用fputc函数输出字符成功,则其返回值是( )
A.EOF
B.1
C.0
D.输出的字符
正确答案:-----
21.下面不正确的字符串常量是( )。
A.abc'
B."12'12"
C."0 "
D." "
正确答案:-----
19.printf函数中用到格式符%5s ,其中数字5表示输出的字符串占用5列。如果字符串长度大于5,则输出按方式( )
A.从左起输出该字串,右补空格
B.按原字符长从左向右全部输出
C.右对齐输出该字串,左补空格
D.输出错误信息
正确答案:-----
20.已知p,p1为指针变量,a为数组名,i为整型变量,下列赋值语句中不正确的是( )
A.p=&i
B.p=p1
C.p=&a[i]
D.p=10
正确答案:-----
21.数组名作为实参传递给形参时,数组名被处理为( )
A.该数组的长度
B.该数组的元素个数
C.该数组的首地址
D.该数组中各元素的值
正确答案:-----
22.当不能正确执行文件关闭操作时,fclose函数的返回值是( )。
A.-1
B.EOF
C.TRUE
D.1
正确答案:-----
23.若有以下定义语句:int a[10]={1,2,3,4,5,6,7,8,9,10}; 则下列哪个是对该数组元素的正确引用( )
A.a[10]
B.a[a[3]-5]
C.a[a[9]]
D.a[a[4]+4]
正确答案:-----
24.设有说明语句:char w;int x;float y;double z;w*x+z-y值的数据类型为( )。
正确答案:-----
A.float
B.char
C.int
D.double
正确答案:-----
25.C语言的函数中,( )。
A.必须有形参
B.形参必须是变量名
C.可以有也可以没有形参
D.数组名不能作形参
正确答案:-----
26.#include<stdio.h> main() {union { long a; int b; char c;}m; printf("%d ",sizeof(m));} 以上程序的运行结果是( )。
正确答案:-----
A.2
B.4
C.6
D.8
正确答案:-----
27.若定义语句:int a=7;float x=2.5;y=4. 7; 则表达式x+a%3*(int)(x+y)%2/4的值是( )
A.2.500000
B.2.750000
C.3.500000
D.0.000000
正确答案:-----
28.若执行fopen函数时发生错误,则函数的返回值是( )
A.地址值
B.null
C.1
D.EOF
正确答案:-----
29.putchar函数可以向终端输出一个:
A.整型变量表达式值
B.实型变量值
C.字符串
D.字符或字符型变量值
正确答案:-----
30.下面4个选项中,均是不合法的用户标识符的选项是( )
A.A P_0 do
正确答案:-----
B.float a0 _A
C.b-a 123 int
D._123 temp INT
正确答案:-----
31.下面正确的字符常量是( )
A."c"
B.""
C.'W'
D.''(中间没有空格)
正确答案:-----
32.已知字母A的ASCII码为十进制数65,且定义c2为字符型变量,则执行语句c2='A'+'6'-'3';后,c2中的值为( )
A.D
B.68
正确答案:-----
C.不确定的值
D.C
正确答案:-----
33.main() {struct date {int year,month,day;}today; printf("%d ",sizeof(struct date));} 以上程序的运行结果是( )
正确答案:-----
A.6
B.8
C.10
D.12
正确答案:-----
34.若已有定义int x;下列说明指针变量p指向x的正确语句是( )
A.int p=&x;
B.int *p=&x;
C.int p=x;
D.int *p=x;
正确答案:-----