20秋学期《高级语言程序设计基础X》在线平时作业2
试卷总分:100 得分:100
一、单选题 (共 25 道试题,共 100 分)
1.若有语句:int a=4, *p=&a;,下面均代表地址的一组选项是( )。
A.a, p, &*a
B.*&a, &a, *p
C.&a, p, &*p
D.*&p, *p, &a”
2.系统的标准输入文件是指( )。
A.键盘
B.显示器
C.软盘
D.硬盘
3.语句while (!y)中的表达式 !y 等价于( )。
A.y==0
B.y!=1
C.y!=0
D.y==1
4.若有定义:int x[10], *p=x;,则*(p+5)表示( )。
A.数组元素x[5]的地址
B.数组元素x[5]的值
C.数组元素x[6]的地址
D.数组元素x[6]的值
E.选项内容11
F.选项内容11
5.以下运算正确的程序段是( )。
A.char str1[]=”ABCDE”, str2[]=”abcdef”; strcpy(str1, str2);
B.char str[10], *st=”abcde”; strcat(str, st);
C.char *st1=”ABCDS”, *st2=”abcde”; strcat(st1,st2);
D.char str[10]=””, *st=”abcde”; strcat(str, st);”
6.以下能对一维数组a进行正确初始化的语句是( )。
A.int a[10]=(0,0,0,0,0);
B.int a[10]={ };
C.int a[]={0};
D.int a[10]=(10*1);
7.已知学生记录描述如下,下面对结构体成员”computer”的赋值方式正确的是( )。 struct student { int num; char name[8]; struct { float math; float engl; float computer; } mark;} std;
A.student.computer=84;
B.mark.computer=84;
C.std.mark.computer=84;
D.std.computer=84;
8.执行以下程序段后,y的值是( )。 int a[ ]={1, 3, 5, 7, 9} int x=0, y=1, *ptr; ptr=&a[1]; while (!x) { y+=*(ptr+x); x++; }
A.1
B.2
C.4
D.24
9.执行以下程序后,m的值是( )。 #define MIN(x, y) (x)<(y) ? (x) : (y) main( ) { int i=12, j=8, m; m=10*MIN(i, j); printf(“%d\n”, m); }
A.120
B.80
C.12
D.8
10.在C语言中,整数-8在内存中的存储形式是( )。
A.1111 1111 1111 1000
B.1000 0000 0000 1000
C.0000 0000 0000 1000
D.1111 1111 1111 0111
11.若有说明:char *pc[ ]={“aaa”, “bbb”, “ccc”, “ddd”};,则以下叙述正确的是( )。
A.*pc[0]代表的是字符串”aaa
B.*pc[0]代表的是字符’a’
C.pc[0]代表的是字符串”aaa”
D.pc[0]代表的是字符’a’
12.若执行fopen函数时发生错误,则函数的返回值是( )。
A.随机值
B.1
C.NULL
D.EOF
13.以下正确的定义语句是( )。
A.int a[1][4]={1,2,3,4,5};
B.float x[3][]={{1},{2},{3}};
C.long b[2][3]={{1},{1,2},{1,2,3}};
D.double y[][3]={0};
14.以下对指针变量的操作中,不正确的是( )。
A.int p, *q; q=&p;
B.int *p, *q; q=p=NULL;
C.int a=5, *p; *p=a;
D.int a=5, *p=&a, *q=&a; *p=*q;”
15.对以下说明语句的正确理解是( )。 int a[10]={6,7,8,9,10};
A.将5个初值依次赋给a[1]至a[5]
B.将5个初值依次赋给a[0]至a[4]
C.将5个初值依次赋给a[6]至a[10]
D.因为数组与初值的个数不相同,所以此语句不正确
16.若有以下语句,则对x数组元素引用不正确的是( )。 int x[ ]={1, 2, 3, 4, 5, 6}, *ptr;ptr=x;
A.*(–ptr)
B.*(ptr–)
C.*(ptr++)
D.*(++ptr)
17.定义如下变量和数组:int k; int a[3][3]={1,2,3,4,5,6,7,8,9};则下面语句的输出结果是( )。for(k=0;k<3;k++) printf(“%d”,a[k][2-k]);
A.3 5 7
B.3 6 9
C.1 5 9
D.1 4 7
18.下面程序段的输出结果是( )。 int a=023;printf(“%d\n”,–a);
A.23
B.17
C.18
D.24
19.若有定义:int a[2][3];,则以下对a数组元素地址的正确表示为( )。
A.*(a+1)
B.*(a[1]+2)
C.a[1]+3
D.a[0][0]
20.若执行下述程序时从键盘输入3 4,则输出结果是( )。
#include main( ) { int a,b,s;
scanf(“%d%d”,&a,&b);
s=a; if (a<b) printf(“%d\n”,s*s); s=b; }
A.186
B.256
C.324
D.400
21.若有定义:int x[10], *p=x;,则*(p+5)表示( )。
A.数组元素x[5]的地址
B.数组元素x[5]的值
C.数组元素x[6]的地址
D.数组元素x[6]的值
E.选项内容11
F.选项内容11
G.选项内容11
22.以下不正确的定义语句是( )。
A.double x[5]={2.0,4,0,6,0,8,0,10.0};
B.int y[5]={0,1,3,5,7,9};
C.char c1[]={‘1′,’2′,’3′,’4′,’5’};
D.char c2[]={‘\x10′,’\xa’,’\x8′};”
23.下面程序的运行结果是( )。 main() { struct cmplx { int x; int y; } cm[2]={1,2,3,4}; printf(“%d\n”, 2*cm[0].x+ cm[1].y/cm[0].y);}
A.5
B.2
C.3
D.4
24.如果在一个函数中的复合语句中定义了一个变量,则以下正确的说法是( )。
A.该变量只在该复合语句中有效
B.该变量在该函数中有效
C.该变量在本程序范围内有效
D.该变量为非法变量
25.有字符数组a[80]和b[80],则正确的输出语句是( )。
A.puts(a.b);
B.printf(“%s,%s”,a[],b[]);
C.pitchar(a,b);
D.puts(a); puts(b);