|
电子科技大学
电子科大11春学期《C语言》在线作业一
单选题
18.凡是函数中未指定存储类别的局部变量,其隐含的存储类别为( )
A. 自动(auto)
B. 静态(static)
C. 外部(extern)
D. 寄存器(register)
资料:A
19.下面函数调用语句含有实参的个数为( ) func((expl,exp2), (exp3,exp4,exp5));
A. 1
B. 2
C. 4
D. 5
资料:B
20.以下程序的运行结果是 ( ) main() {int m=5; if(m++> 5) printf(" %d\n",m); e1se printf("%d\n",m-- );}
A. 4
B. 5
C. 6
D. 7
资料:C
21.变量的指针,其含义是指该变量的 ( )
A. 值
B. 地址
C. 名
D. 一个标志
资料:B
22.当把以下四个表达式用做if语句的控制表达式时,有一个选项与其它三个选项含义不同,这个选项是( )
A. K%2
B. K%2==1
C. (K%2)!=0
D. !K%2==1
资料:D
23.表达式18/4*sqrt(4.0)/8值的数据类型为( )
A. int
B. float
C. double
D. 不确定
资料:C
24.己有变量定义和函数调用语句:int a=25 ;print_vaue(&a);下面函数的正确输出结果是( ) void print_value(int *x) {printf("%d\n",++*x);}
A. 23
B. 24
C. 25
D. 26
资料:D
25.以下叙述中不正确的是( )
A. 表达式a&=b等价于a=a&b
B. 表达式a|=b等价于a=a|b
C. 表达式a!=b等价于a=a!b
D. 表达式a^=b等价于a=a^b
资料:C
26.enum color{red,green,yellow=5,white,black}定义了一枚举类型。编译程序为值表中各标识符分配的枚举值依次为( )
A. 1、2、3、4、5
B. 0、1、5、2、3
C. 0、1、5、6、7
D. 3、4、5、6、7
资料:C
27.以下不能对二维数组a进行正确初始化的语句是( )
A. int a[2][3]={0};
B. int a[][3」={{1,2},{0}};
C. int a[2][4]={{1,2},{3,4},{5,6}};
D. int a[][3]={1,2,3,4,5,6};
资料:C
28.下列程序执行后的输出结果是( ) void func(int *a,int b[]) { b[0]=*a+6; } main() { int a,b[5]={0}; a=0; b[0]=3; func(&a,b); printf("%d\n",b[0]); }
A. 6
B. 7
C. 8
D. 9
资料:A
29.下面程序的运行结果是( ) #include<stdio. h> main() {int a=1,b=10; do {b-=a;a++;}while(b--<0); printf("a=%d,b=%d\n",a,b); }
A. a=3,b=11
B. a=2,b=8
C. )a=1, b=-1
D. a=4,b=9
资料:B
30.下面程序的功能是用递归法将一个整数存放到一个字符数组中。存放时按逆序存放。如483存放成"384",请选择填空( ) #include<stdio.h> void convert(char *a,int n) {int i; if((i=n/10)!=0) convert(a+1,i); *a=【2】; } main() {int number; char str[10]=" "; scanf("%d",&number); convert(str,number);
A. n/10
B. n%10
C. n/10+"0"
D. n%10+"0"
资料:D
31.下面描述正确的是( )
A. 两个字符串所包含的字符个数相同时,才能比较字符串
B. 字符个数多的字符串比字符个数少的字符串大
C. 字符串"STOP- "与"STOP"相等(-表示空格)
D. 字符串"That"小于字符串"the"
资料:D
32.有以下程序: union pw { int i; char ch[2];}a; main() {a.ch[0]=13;a.ch[1]=0;printf("%d\n",a.i);} 程序的输出结果是( )
A. 13
B. 14
C. 208
D. 209
资料:A
33.有以下程序段:int x=0,s=0; while (!x!= 0) s+=++x; printf("%d",s); 则有以下程序段( )
A. 运行程序段后输出0
B. 运行程序段后输出1
C. 程序段中的控制表达式是非法的
D. 程序段执行无限次
资料:B
34.下面程序应能对两个整型变量的值进行交换。以下正确的说法是( ) main( ) {int a=10,b=20; printf("(1)a=%d,b=%d\n",a,b); swap(&a,&b); prinif("(2)a=%d,b=%d\n",a,b);} swap(int p,int q) {int t; t=p;p=q;q=t;}
A. 该程序完全正确
B. 该程序有错,只要将语句swap(&a,&b);中的参数改为a,b即可
C. 该程序有错,只要将swap()函数中的形参p和q以及t均定义为指针(执行语句不变)即可
D. 以上说法都不正确
资料:D
35.下面四个选项中,均是非法常量的选项是( )
A. as" -0fff "\0xa"
B. "\\" "\01" 12,456
C. -0xl8 01177 0xf
D. 0xabc "\0" "a"
资料:A
1.若要求从键盘读入含有空格字符的字符串,应使用函数( )
A. gets()
B. scanf()
C. getchar()
D. getch()
资料:A
2.若有说明:char *language[]={"FORTRAN","BASIC","PASCAL","JAVA","C"}; 则表达式 *language[1]>*language[3] 比较的是( )
A. 字符F和字符P
B. 字符串BAS1C和字符串JAVA
C. 字符B和字符J
D. 字符串FORTRAN和字符串PASCAL
资料:C
3.已知各变量的类型说明如下: int i=8,k,a,b; unsigned long w=5; double x=1.42,y=5.2; 则以下符合C语言语法的表达式是( )
A. a+=a-=(b= 4)*(a=3)
B. a=a*3=2
C. x%(-3)
D. y=f1oat(i)
资料:A
4.设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是( )
A. 7
B. 8
C. 6
D. 2
资料:B
5.以下叙述正确的是( )
A. 在C程序中,main函数必须位于程序的最前面
B. C程序的每行中只能写一条语句
C. C语言本身没有输入输出语句
D. 在对一个C程序进行编译的过程中,可发现注释中的拼写错误
资料:C
6.若有以下程序段:int a[]={4,0,2,3,1},i,j,t; for(i=1;i<5;i++) {t=a[i];j=i-1; while(j>=0&&t>a[j]) {a[j+1]=a[j];j- -;} a[j+1]=t;} ...... 则该程序段的功能是( )
A. 对数组a进行插入排序(升序)
B. 对数组a进行插入排序(降序)
C. 对数组a进行选择排序(升序)
D. 对数组a进行选择排序(降序)
资料:B
7.若以下变量均是整型,且num=sum=7;则执行表达式sUM=num++,sUM++,++num后sum的值为( )
A. 7
B. 8
C. 9
D. 10
资料:A
8.以下不正确的说法是( )
A. 实参可以是常量,变量或表达式
B. 形参可以是常量,变量或表达式
C. 实参可以为任意类型
D. 如果形参和实参的类型不一致,以形参类型为准
资料:B
9.以下能对二维数组a进行正确初始化的语句是( )
A. int a[2][]={{1,0,1},{5,2,3}};
B. int a[][3]={{1,2,3},{4,5,6}};
C. int a[2][4]={{1,2,3},{4,5},{6}};
D. int a[][3]={{1,0,1},{},{1,1}};
资料:B
10.对下面程序段: #define A 3 #define B(a) ((A+1)*a) x=3*(A十B(7)); 正确的判断是( )
A. 程序错误,不许嵌套宏定义
B. )x=93
C. x=21
D. 程序错误,宏定义不许有参数
资料:B
11.下面程序的运行结果是( ) #include <stdio.h> main() {char a[]="morning",t; int i,j=0; for(i=1;i<7;i++) if(a[j]<a[i])j=i; t=a[j];a[j]=a[7]; a[7]=t;puts(a);}
A. mogninr
B. mo
C. morning
D. morning
资料:B
12.下述关于条件语句的描述中错误的是( )
A. if语句中只有一个else子句
B. if语句中可以有多个else if 子句
C. if语句中if体内不能有switch语句
D. if语句的if体中可以是循环语句
资料:C
13.以下程序的输出结果是( ) main() {int a=100,x =10,y=20,okl=5,ok2=0; if (x<y) if(y ! =10) if(!okl) a=1; else if(ok2) a=10; a=-1; printf("%d\n",a );}
A. 1
B. 0
C. -1
D. 值不确定
资料:C
14.若用数组名作为函数调用的实参,传递给形参的是( )
A. 数组的首地址
B. 数组第一个元素的值
C. 数组中全部元素的值
D. 数组元素的个数
资料:A
15.若有说明:int a[ ][4]={0,0};则下面不正确的叙述是( )
A. 数组a的每个元素都可得到初值0
B. 二维数组a的第一维大小为1
C. 因为二维数组a中第二维大小的值除以初值个数的商为1,故数组a行数为1
D. 只有元素a[0][0]和a[0][1]可得初值0,其余元素均得不到初值0
资料:D
16.判断字符串a和b是否相等,应当使用( )
A. if(a= =b)
B. if(a=b)
C. if(strcpy(a,b))
D. if(!strcmp(a,b))
资料:D
17.有如下程序 main( ) { int x=1,a=0,b=0; switch(x){ case 0: b++; case 1: a++ case 2: a++;b++ } printf(“a=%d,b=%d\n”,a,b); } 该程序的输出结果是( )
A. a=2,b=1
B. a=1,b=1
C. a=1,b=0
D. a=2,b=2
资料:A
多选题
1.定义char s[81]; 后,能正确输入一个字符串到数组s的语句是( )
A. gets(s);
B. scanf (”%c”,s);
C. scanf (”%s”,&s[0]);
D. gets(&s[0]);
资料:ACD
2.以下程序正确计算p=n! (n>=0)的是( )
A. for(p=1.0,k=1;k<=n;) p*=k++;
B. p=1.0;k=0;while(k<n) p*=++k;
C. p=1.0;k=1;do{++k;p*=k;} while(k<=n);
D. p=1.0;for(k=n;k>=1;k--) p*=k--;
资料:AB
3.下列符号中可以用作自定义函数名的是( )
A. int
B. go_to
C. INT
D. Getchar
E. typedef
资料:BCD
4.以下哪些是关于指针数组的正确描述( )
A. int (*a)[4];
B. int *a[4];
C. 指针数组每个元素都是指针变量
D. 若int a[4][4]; int *b[]={a[0],a[1],a[2],a[3]}; 则b是指针数组
E. 指针数组与指向数组的指针是等价的
资料:BCD
5.在函数调用过程中,下列说法正确的是( )
A. 形式参数和实在参数各占一个独立的存储单元
B. 形式参数和实在参数存储空间都是在函数调用时分配的
C. )在函数的执行过程中,形参变量值的改变不会影响实参值的改变
D. 函数调用结束时,临时存储区被撤消
E. 在函数调用过程中,实在参数与形式参数在个数、类型上必须匹配
资料:ACDE
判断题
1.continue语句用在循环体中,可使整个循环不结束。
A. 错误
B. 正确
资料:A
2.对二维数组a来说,由于a+1与*(a+1)的值相等,因此二者的含义是一样的。
A. 错误
B. 正确
资料:A
3.表达式1/4+2.75的值是3。
A. 错误
B. 正确
资料:A
4.C程序是由函数构成的,每一个函数完成相对独立的功能。
A. 错误
B. 正确
资料:B
5.被定义为指向某结构体类型数据的指针变量,即可以指向具有该类型的变量,又可以指向它其中的一个成员。
A. 错误
B. 正确
资料:A
6.结构体中的成员也可以是一个结构体变量。
A. 错误
B. 正确
资料:B
7.C语言采用解释方式将源程序转换为二进制的目标代码。
A. 错误
B. 正确
资料:A
8.return后面括号里的表达式的值即是此函数的值。
A. 错误
B. 正确
资料:B
9.在内存中存储结构体类型的变量要占连续一段的存储单元。
A. 错误
B. 正确
资料:B
10.结构体类型的数据是由不同类型的数据组合而成的。
A. 错误
B. 正确
资料:B |
|