第一章 单元测试
1、单选题:
C语言程序是由若干( )组成的。
选项:
A:过程
B:主程序
C:子程序
D:函数
答案: 【函数】
2、单选题:
C语言中,最简单的数据类型是( )。
选项:
A:整型、字符型、逻辑型
B:整型、实型、逻辑型、字符型
C:整型、实型、逻辑型
D:整型、实型、字符型
答案: 【整型、实型、字符型】
3、单选题:
下列选项中可以作为C语言字符常量的是( )。
选项:
A:”abc”
B:13.8e
C:‘12’
D:‘M’
答案: 【‘M’】
4、单选题:
已知字母‘b’的ASCII码值为98,如ch为字符型变量,则表达式ch=‘b’+’5’–’2’的值为( )。
选项:
A:d
B:102
C:100
D:e
答案: 【e】
5、单选题:
已知各变量的定义如下:int i=8,k,a,b;unsigned long w=5;double x=1.42,y=5.2;则以下表达式中不符合C语言语法的表达式是( )。
选项:
A:y+=x++;
B:(int)x+0.4;
C:a=2*a=3;
D:k=i++;
答案: 【a=2*a=3;】
6、单选题:
下列四个选项是对变量和常量的特点的叙述,正确的说法是( )。
选项:
A:C89规定所有变量必须在第一条可执行语句前定义。
B:不同类型的变量分配的存储空间大小都是相同的。
C:在C语言中,所有变量都必须在定义时进行初始化。
D:宏常量有数据类型,编译器在宏替换时可以进行类型检查。
答案: 【在C语言中,所有变量都必须在定义时进行初始化。】
7、单选题:
设有语句“int a = 3;”,执行语句“a += a -= a * a;”后,变量a的值是( )。
选项:
A:0
B:-12
C:9
D:3
答案: 【-12】
8、单选题:
在C语言中对下面的语句而言,哪个说法是错误的( )? int a, b;
选项:
A:a和b都是整型变量
B:变量a和b占用的内存空间的大小是相同的
C:变量a和b中的值都是未知的随机数
D:变量a和b中都没有数值
答案: 【变量a和b中都没有数值】
9、单选题:
设有如下定义:int x=1,y=-1;则语句:printf(“%d”,x–+(++y));的输出结果是( )。
选项:
A:0
B:2
C:-1
D:1
答案: 【1】
10、单选题:
执行下面程序时,欲将25和2.5分别赋给a和b,正确的输入方法是( )。int a;float b; scanf(“a=%d,b=%f”,&a,&b);
选项:
A:a=25 b=2.5
B:a=25,b=2.5
C:25 2.5
D:25,2.5
答案: 【a=25,b=2.5】
第二章 单元测试
1、单选题:
若有整型变量i、j,则以下程序段中内循环体的执行次数为( )。for(i=1;i<=5;i++)for(j=0;j<4;j++){……}
选项:
A:20
B:30
C:24
D:25
答案: 【20
】
2、单选题:
判断char型变量ch是否为大写字母的正确表达式是( )。
选项:
A:(ch>=’A’)&&(ch<=’Z’)
B:(‘A'<=ch)AND(‘Z’>=ch)
C:(ch>=’A’)&(ch<=’Z’)
D:’A'<=ch<=’Z’
答案: 【(ch>=’A’)&&(ch<=’Z’)】
3、单选题:
以下程序段的输出结果是( )。main(){ int x=5; if(x++>5) printf(“%d”,x); else printf(“%d”,x–);}
选项:
A:6
B:5
C:4
D:7
答案: 【6】
4、单选题:
设所有变量均已正确定义,并且已知a=4,b=3,c=2,d=1,则表达式d=a<b?a:c的结果是( )。
选项:
A:1
B:2
C:4
D:3
答案: 【2
】
5、单选题:
当a=1、b=3、c=5、d=4时,执行以下程序段后x的值是()。
选项:
A:3
B:2
C:6
D:1
答案: 【2】
6、单选题:
如下程序
main()
{ int x=1,a=O,b=O;
switch(x)
{ case 0:b++;
case 1:a++;
case 2:a++;b++;
}
printf(“a=%d,b=%d”,a,b);
}
该程序的输出结果是( )。
选项:
A:a=2,b=1
B:a=1,b=0
C:a=1,b=1
D:a=2,b=2
答案: 【a=2,b=1】
7、单选题:
下面程序段int k=2;while(k=0){printf(“%d”,k);k–}则下面描述中正确的是( )。
选项:
A:循环体语句执行一次
B:循环体语句一次也不执行
C:循环体无限循环
D:while循环执行10次
答案: 【循环体语句一次也不执行】
8、单选题:
以下程序中while循环的循环次数为( )。main(){ int i=0; while(i<10) { if(i<1) continue; if(i==5) break; i++; } }
选项:
A:1
B:6
C:死循环,不确定次数
D:10
答案: 【死循环,不确定次数】
9、单选题:
假定a和b均为int型变量,则执行以下语句后b的值为( )。a=1; b=10;do{ b-=a; a++; } while(b–<0);
选项:
A:-1
B:9
C:-2
D:8
答案: 【8】
10、单选题:
在语句while(!E); 括号中的表达式!E等价于( )。
选项:
A:E==1
B:E!=0
C:E==0
D:E!=1
答案: 【E==0】
第三章 单元测试
1、单选题:
若有定义int a[10];则数组元素的下标的下限和上限分别是( )。
选项:
A:0和1
B:1和9
C:0和9
D:1和10
答案:
2、单选题:
定义如下变量和数组,则下列程序段的输出结果是( )。int i,x[3][3]={1,2,3,4,5,6,7,8,9};for(i=0;i<3;i++) if(i%2!=1)printf(“%d”,x[i][i]);
选项:
A:19
B:39
C:17
D:37
答案:
3、单选题:
下面一段程序是有关字符串操作的,该段程序的输出结果是( )。#include <stdio.h>#include <string.h>main(){ char p1[10]=”abc”,p2[]=”ABC”; strcat(p1,p2); printf(“%s”,p1);}
选项:
A:abcABC
B:abc
C:abcabc
D:ABC
答案:
4、单选题:
下列四个选项中能正确定义一维数组的语句是( )。
选项:
A:int num[0…2017];
B:int N=2017; int num[N];
C:#define N 2017
int num[N];
D:int num[ ];
答案:
5、单选题:
若有以下说明,则数值为4的表达式是( )。int a[12]={1,2,3,4,5,6,7,8,9,10,11,12};char c=’a’,d,g;
选项:
A:a[4]
B:a[‘d’-c]
C:a[g-c]
D:a[‘d’-‘c’]
答案:
6、单选题:
以下是有关二维数组定义和初始化的语句,其中错误的是( )。
选项:
A:int x[ ][3]={0};
B:int x[ ][3]={{1,2,3},{4,5,6}};
C:int x[2][3]={1,2,3,4,5,6};
D:int x[2][3]={{1,2},{3,4},{5,6}};
答案:
7、单选题:
以下关于C语言字符数组的描述中错误的是( )。
选项:
A:不可以用赋值语句给字符数组名赋字符串
B:字符数组只能存放字符串
C:可以用输入语句把字符串整体输入给字符数组
D:字符数组中的内容不一定是字符串
答案:
8、单选题:
设有char array[ ]=“China”;则数组array所占的空间字节数是( )。
选项:
A:7
B:6
C:4
D:5
答案:
9、单选题:
如下程序段是对字符串的操作,运行后的结果为( )。 char a[3],b[ ] =“China” ; a = b ; printf(“%s”,a);
选项:
A:编译出错
B:运行后将输出Chi
C:运行后将输出ch
D:运行后将输出China
答案:
10、单选题:
有以下有关字符串操作的程序,程序运行后的输出的结果是( )。main( ){ char s[ ]=“012xy8s34f4w2”; int i,n=0; for(i=0;s[i]!=0;i++) if(s[i]>=‘0’ && s[i]<=‘9’) n++; printf(“%d”,n);}
选项:
A:8
B:0
C:7
D:3
答案:
第四章 单元测试
1、判断题:
C 语言程序中可以有多个函数 , 但只能有一个主函数。
选项:
A:错
B:对
答案:
2、判断题:
函数的实参可以是常量,变量或表达式。
选项:
A:对
B:错
答案:
3、判断题:
递归调用算法与相同功能的非递归算法相比,主要问题在于重复计算太多,而且调用本身需要分配额外的空间、传递数据和控制,所以时间和空间开销通常都比较大。
选项:
A:错
B:对
答案:
4、单选题:
在一个被调用函数中,关于 return 语句使用的描述,错误的是( )。
选项:
A:被调用函数中,一个 return 语句可以返回多个值给调用函数
B:被调用函数中可以不用 return 语句
C:被调用函数中,如果有返回值,就一定要有 return 语句
D:被调用函数中可以使用多个 return 语句
答案:
5、单选题:
C语言中函数返回值的类型是由( )决定的。
选项:
A:return语句中的表达式类型
B:定义函数时所指定的函数类型
C:调用函数时临时决定
D:调用该函数的主调函数的类型
答案:
6、单选题:
有如下函数调用语句: func(rec1, rec2+rec3, (rec4, rec5)); 则该函数调用语句中,含有的实参个数是( )。
选项:
A:3
B:有语法错
C:5
D:4
答案:
7、单选题:
以下程序的输出结果是( )。#include <stdio.h>int func(int a,int b){ return(a+b); }int main(){ int x=2,y=5,z=8,r; r=func(func(x,y),z); printf(“%d”,r); return 0;}
选项:
A:15
B:13
C:12
D:14
答案:
8、单选题:
C语言规定,程序中各函数之间( )。
选项:
A:不允许直接递归调用也不允许间接递归调用
B:既允许直接递归调用也允许间接递归调用
C:允许直接递归调用不允许间接递归调用
D:不允许直接递归调用允许间接递归调用
答案:
9、单选题:
若有以下调用语句,则不正确的 fun( )函数的首部是( )。
main( )
{
…
int a[50], n;
…
fun(n, &a[9]);
…
}
选项:
A:void fun(int n, int a)
B:void fun(int p, int *s)
C:void fun(int s, int h[ 41])
D:void fun(int m, int x[ ])
答案:
10、判断题:
函数的实参传递到形参有两种方式:值传递和地址传递。
选项:
A:错
B:对
答案:
第五章 单元测试
1、单选题:
变量的指针,其含义是指该变量的( )。
选项:
A:值
B:名
C:一个标志
D:地址
答案:
2、单选题:
若有语句int *point,a=4;和point=&a;下面均代表地址的一组选项是( )。
选项:
A:*&point,*point,&a
B:&a,&*point,point
C:&*a,&a,*point
D:a,point,*&a
答案:
3、单选题:
若有以下定义和语句,且0<=i<10,则对数组元素地址的正确表示是( )。int a[]={0,1,2,3,4,5,6,7,8,9},*p;p=a;
选项:
A:&p[i]
B:&p
C:a++
D:&(a+1)
答案:
4、单选题:
char s[10]=”ABCDEFGH”,*p=s;不能表示字符C的是( )。
选项:
A:*(p+2)
B:s[3]
C:s[2]
D:s[‘c’-‘a’]
答案:
5、单选题:
有下列程序:func(int x,int y,int *jia,int *jian){ *jia=x+y; *jian=x-y; }main(){ int i=10,j=3,x1,x2; func(i,j,&x1,&x2); printf(“%d,%d”,x1,x2);}则运行结果是( )。
选项:
A:13,7
B:0,0
C:10,3
D:7,13
答案:
6、单选题:
下列定义中,不是指针数组定义的是( )。
选项:
A:float *q[4]
B:int *p[5];
C:int (*r)[6]
D:char *w[7]
答案:
7、单选题:
下列程序的运行结果是( )。#define N 9fun(char s[]){ char *p=s+4,*q=s; int i; for(i=0;i<4;i++,p++,q++) { s[i]=*p; s[i+4]=*q; }}main( ){ char ss[N]=”ABCDEFGH”; fun(ss); printf(“%s”,ss);}
选项:
A:EFGHEFGH
B:ABCDEFGH
C:ABCDABCD
D:EFGHABCD
答案:
8、单选题:
设有声明语句int a[2][3],(*p)[3]=a;则对a数组元素正确的引用的是( )。
选项:
A:p[1]+2
B:*(p[1]+1)
C:*(*(p+2)+1)
D:(p+1)[0];
答案:
9、单选题:
以下选项中,对指针变量p的正确操作是( )。
选项:
A:int a[5],*p;p=a;
B:int a[5];int *p=a[5];
C:int a[5],*p;p=&a;
D:int a[5];int *p,p2=a;*p=*p2;
答案:
10、单选题:
在说明语句“ int *f( );”中,标识符 f 代表是( )。
选项:
A:一个用于指向整型数据的指针变量
B:一个用于指向函数的指针变量
C:一个返回值为指针型的函数名
D:一个用于指向一维数组的行指针
答案:
第六章 单元测试
1、判断题:
结构体类型本身不占用内存空间,结构体变量占用内存空间。
选项:
A:对
B:错
答案:
2、判断题:
结构体成员的类型必须是基本数据类型。
选项:
A:错
B:对
答案:
3、判断题:
结构体变量可以作数组元素。
选项:
A:对
B:错
答案:
4、判断题:
指向结构体变量的指针可以作函数参数,实现传址调用。
选项:
A:错
B:对
答案:
5、判断题:
用链表代替数组进行数据操作时,查询更加方便。
选项:
A:错
B:对
答案:
6、单选题:
有如下定义:
struct Student{ char name[10]; int age; char gender;}std[3], *p=std;
则以下各输入语句中错误的是( )。
选项:
A:scanf(“%c”,&std[0].gender);
B:scanf(“%c”,&(p->gender));
C:scanf(“%d”,&(*p).age);
D:scanf(“%s”,&std.name);
答案:
7、单选题:
有定义如下:
struct ex{ int x; float y; char z;} example;
下面叙述中不正确的是( )。
选项:
A:example是结构类型名
B:struct是定义结构类型的关键字
C:struct ex是结构类型名
D:x,y,z都是结构成员名
答案:
8、单选题:
设有如下定义,则对data中的a成员的正确引用是( )。
struct sk{ int a; float b; } data, *p=&data;
选项:
A:p->data.a
B:p.data.a
C:(*p).data.a
D:(*p).a
答案:
9、单选题:
根据下面的定义,能打印出字母M的语句是( )。 struct person{ char name[10]; int age; } c[10] ={ “John”, 17, “Paul”, 19, “Mary”, 18, “Adam”, 16 };
选项:
A:printf(“%c”, c[2].name[0]);
B:printf(“%c”, c[3].name[1]);
C:printf(“%c”, c[3].name);
D:printf(“%c”, c[2].name[1]);
答案:
10、单选题:
在一个以 h 为头的单向链表中,p 指针指向链尾的条件是()。
选项:
A:p->.data=-1
B:p->next=NULL
C:p->next->next=h
D:p->next=h
答案:
请先
!