C语言选择题(三)
- 格式:doc
- 大小:45.00 KB
- 文档页数:3
C语言程序设计_单元测试题三本单元包含“数组、函数”的内容。
一、选择题1.以下为一维整型数组a的正确说明是_________.A)int a(10); B)int n=10,a[n];C)int n; D)#define SIZE 10;scanf("%d",&n); int a[SIZE];int a[n];2.以下对二维数组a的正确说明是________.A)int a[3][]; B)float a(3,4);C)double a[1][4] D)float a(3)(4);3.若二维数组a有m列,则计算任一元素a[i][j]在数组中位置的公式为______.(假设a[0][0]位于数组的第一个位置上。
)A)i*m+j B)j*m+i C)i*m+j-1 D)i*m+j+14.若二维数组a有m列,则在a[i][j]前的元素个数为________.A)j*m+i B)i*m+j C)i*m+j-1 D)i*m+j+15.25.若有以下程序段: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进行选择排序(降序)6.有两个字符数组a、b,则以下正确的输入语句是_______.A)gets(a,B); B)scanf("%s%s",a,B);C)scanf("%s%s",&a,&B); D)gets("a"),gets("b");7.下面程序段的运行结果是_________.char a[7]="abcdef";</P< p>char b[4]="ABC";strcpy(a,B);printf("%c",a[5]);A)空格B)\0 C)e D)f8.判断字符串s1是否大于字符串s2,应当使用_______.A)if(s1>s2) B)if(strcmp(s1,s2))C)if(strcmp(s2,s1)>0) D)if(strcmp(s1,s2)>0)9.下面程序的功能是从键盘输入一行字符,统计其中有多少个单词,单词之间用空格分隔,请选择填空。
C语言阶段测试三一、单项选择题1、有以下定义:int a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12}int (*ptr)[3]=a,*p=a[0];则下列能够正确表示数组元素a[1][2]的表达式是( A )。
A)*((*ptr+1)[2])B)*(*(p+5))C)(*ptr+1)+2 D)*(*(a+1)+2)2、# include <stdio.h> Dvoid main ( ){ int a[3][3]={1,2,3,4,5,6,7,8,9};int s=0,i;for (i=0;i<3;i++)s+=(*(a+i))[i];printf("%d",s);}A)9 B)12 C)14 D)153、设有说明语句:char a= '\123abc';则变量a ( A )A) 包含7个字符 B) 包含6个字符C) 包含5个字符D) 包含4个字符4、有以下程序段int k=0while(k=1)k++;while 循环执行的次数是( C )A) 无限次B) 有语法错,不能执行C) 一次也不执行D) 执行1次5、下面四个选项中,均是合法转义字符的选项是_C___。
a. '\''b. '\'c. '\018'd. '\\0''\\' '\017' '\f' '101'\n' '\"' 'xab' 'xlf'6、下面四个选项中,均是不正确的八进制数或十六进制数的选项是____。
a. 016b. oabcc. 010d. 0a120x8f 017 -0x11 7ff018 0x8 0x16 -1237、设int x;则执行printf(″%x\n″,~x^x);的结果是( )A.0B.1C.ffD.ffff8、设int a=9,b=20;则printf(″%d,%d\n″,a--,--b);的输出结果是( A )A.9,19B.9,20C.10,19D.10,209、对于while语句,错误的说法是(B )A.用条件控制循环体的执行次数B.循环体至少要执行一次C.循环体有可能一次也不执行D.循环体中可以包含若干条语句10、执行下列语句int a=8,b=7,c=6;if(a<b)if(b>c){a=c;c=b;}printf(″%d,%d,%d\n″,a,b,c);后输出的结果是( A )A.6,7,7B.6,7,8C.8,7,6D.8,7,811、设static char x[ ]=″12345″,y[ ]={′1′,′2′,′3′,′4′,′5′,′\0′};那么( A )A.x数组的长度等于y数组的长度B.x数组的长度大于y数组的长度C.x数组的长度少于y数组的长度D.x数组与y数组的存储区域相同12、设int i,x[3][3]={1,2,3,4,5,6,7,8,9};则下面语句for(i=0;i<3;i++)printf(″%d″,x[i][2-i]);的输出结果是( C )A.147B.159C.357D.36913、设int b[ ]={1,2,3,4},y,*p=b;则执行语句y=*p++;之后,变量y的值为( A )A.1B.2C.3D.414、假设int型变量占两个字节的存储单元,若有定义:int x[10]={0,2,4};则数组x在内存中所占字节数为____D__。
第5、6、7章函数、编译预处理、数组练习题一、选择题1.以下正确的说法是_______。
A.用户若需调用标准库函数,调用前必须重新定义。
B.用户可以重新定义标准库函数,若如此,该函数将失去原有含义。
C.系统根本不允许用户重新定义标准库函数。
D.用户若需调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,由系统自动去调用。
2.以下正确的函数形式是_______。
A.double fun( int x , int y ){z = x + y ;return z ;}B.fun( int x , y ){int z ;return z ;}C.fun( x , y ){int x , y ; double z ;z = x + y ;return z ; }D.double fun( int x , int y ){double z ;z = x + y ;return z ;}3.如果一个函数没有返回值,那么该函数的类型是_______。
A.int B.char C.float D.void 4.C语言允许函数值类型缺省定义,此时该函数值隐含的类型是_______。
A.int B.char C.float D.void 5.以下说法不正确的是_______。
A.实参可以是常量、变量或表达式B.形参可以是常量、变量或表达式C.形参可以为任意类型D.形参应与其对应的实参类型一致6.一个函数形参的作用域是_______。
A.main函数B.形参所在函数体C.从定义处到文件尾D.整个程序7.以下关于形参和实参的说明中,错误的是_____。
A.实参和形参占用不同的内存单元,即使同名也相互不影响B.实参在进行函数调用时,它们都必须有确定的值,以便把这些值传给形参C.实参对形参的数据传送是双向的,可以把实参的值传给形参,也可以把形参的值反向传给实参D.形参变量只有在被调用时才分配内存单元8.C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是_______。
国家二级C语言程序设计机试(选择题)模拟试卷3(总分:80.00,做题时间:90分钟)一、选择题(总题数:40,分数:80.00)1.下列数据结构中,属于非线性结构的是( )。
(分数:2.00)A.循环队列B.带链队列C.二叉树√D.带链栈解析:解析:线性结构的特点:①有且只有一个根结点;②每一个结点最多有一个前驱,也最多有一个后继。
不满足线性结构条件的称为非线性结构,二叉树的非叶子结点最多可以用两个后继结点,属于非线性结构。
2.算法的空间复杂度是指( )。
(分数:2.00)A.算法在执行过程中所需要的计算机存储空间√B.算法所处理的数据量C.算法程序中的语句或指令条数D.算法在执行过程中所需要的临时工作单元数解析:解析:算法的空间复杂度是指算法在执行过程中所需要的内存空间,因此本题答案为A。
3.下列数据结构中,能够按照“先进后出”原则存取数据的是( )。
(分数:2.00)A.循环队列B.栈√C.队列D.二叉树解析:解析:栈是按“先进后出”的原则组织数据的;队列是按“先进先出”的原则组织数据的,因此本题答案为B。
4.软件设计中划分模块的一个准则是( )。
(分数:2.00)A.低内聚、低耦合B.高内聚、低耦合√C.低内聚、高耦合D.高内聚、高耦合解析:解析:一般较优秀的软件设计应尽量做到高内聚、低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性,因此本题答案为B。
5.结构化程序的三种基本控制结构是( )。
(分数:2.00)A.顺序、选择和重复(循环) √B.过程、子程序和分程序C.顺序、选择和调用D.调用、返回和转移解析:解析:结构化程序设计中三种基本控制结构为顺序、选择和重复(循环),故正确答案为A。
6.软件需求规格说明书在软件开发中的作用不包括( )。
(分数:2.00)A.软件设计的依据B.软件可行性分析的依据√C.软件验收的依据D.用户和开发人员对软件要做什么的共同理解解析:解析:需求分析就是分析软件用户的需求是什么,描述需求的文档称为软件需求规格说明书。
习题3一、单项选择题1. 若a为二维数组,则a[1][3]等价于()。
A. *((a+1)+3)B. *(a[1]+3)C. (*(a+1)+3)D. &a[1]+32. 以下程序()。
A. 有语法错误不能通过编译B. 可以通过编译但不能通过连接C. 输出***D. 输出$$$void main(){int a=5,b=0,c=0;if(a=b+c) printf("***\n");else printf("$$$\n");}3. 在一个源文件中定义的全局变量的作用域为()。
A. 本文件的全部范围B. 本程序的全部范围C. 本函数的全部范围D. 从定义该变量的位置开始至本文件结束二、填空题1. 执行下列语句后,b的十进制值是_______。
int x=240,y=15,b;char z='A';b=(( x && y ) && ( z < 'a' ));2. 执行下列语句的结果是_______。
a=3;printf("%d,",++a);printf("%d",a++);3. 静态变量和外部变量的初始化是在_______阶段完成的,而自动变量的赋值是在_______时进行的。
4. 在C语言中,格式输入操作是由库函数在C语言中,格式输入操作是由库函数_______完成的,格式输出操作是由库函数_______完成的。
5. int x=2,y=3,z=4; 则表达式!(x+y)>z的值为_______。
6. 在C语言中的实型变量分为两种类型,它们是_______型和_______型。
三、判断题1. for语句可以完全取代while语句。
()2.函数的递归调用不过是一个函数直接地调用它自身。
()3.定义在main函数后的任何函数都需在main中进行函数声明。
C语言练习题及答案解析三(共3页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--一、单项选择题1.下面不属于C语言的数据类型是【】。
A) 整型 B) 实型 C) 逻辑型 D) 双精度实型分析:和其它高级语言相比,C语言中没有逻辑型数据,也没有逻辑型变量。
本题正确答案为C。
语言中,下列属于构造类型的是【】。
A) 整型 B) 实型 C) 指针类型 D) 结构体类型分析:C语言中构造类型的数据有三种:数组、结构体和共用体,数组是同类型数据的集合,结构体是不同类型的数据集合。
本题正确答案为D。
3.下列字符串不符合标识符规定的是【】。
A) SUM B) sum C) 3cd D) end分析:标识符规定只能由26个英文字母(大小写均可),数字0~9和下划线组成,且不能以数字开头,题中的3cd不符合规定。
本题正确答案为C。
4.下面能正确表示八进制数的是【】。
A) 0x16 B) 029 C) -114 D) 033分析:选项A)以0x开头是十六进制数,选项B)虽然是0开头,但出现了数字9,选项C)是十进制数。
本题正确答案为D。
5.下面四个选项中,均是合法实数的选项是【】。
A) B) C) D)-e5分析:实数有两种表示形式:小数形式和指数形式,小数形式必须有小数点,指数形式中,字母e之前必须有数字,e之后必须是整数。
选项A)中的"",选项C)中的"",选项D)中的"-e5"均是不合法的。
本题正确答案为B。
语言中,字符型数据在内存中存储形式是【】。
A) 原码 B) 反码 C) 补码 D) ASCII码分析:C语言中int型数据是以补码形式存放的,字符型数据是以ASCII码形式存放的。
本题正确答案为D。
7.下列正确的字符型常量是【】。
A) "a" B) ′\\\\′ C) "\\r" D) 277分析:字符常量的定义是用单引号括起来的一个字符,A和C的定界符不对,D超过了char型数据的表示范围,′\\\\′是转义字符。
第三章数据类型、运算符和表达式一、选择题:1、以下选项中,不正确的C 语言浮点型常量是(C)。
A. 160.B. 0.12C. 2e4.2D. 0.02、以下选项中,(D)是不正确的C 语言字符型常量。
A. 'a'B. '\x41'C. '\101'D. "a"3、在C 语言中,字符型数据在计算机内存中,以字符的(C)形式存储。
A. 原码B. 反码C. ASCII 码D. BCD码4、若x、i、j和k都是int型变量,则计算下面表达式后,x的值是(C)。
x=(i=4,j=16,k=32)A. 4B. 16C.32D.525、算术运算符、赋值运算符和关系运算符的运算优先级按从高到低依次为(B)。
A. 算术运算、赋值运算、关系运算B. 算术运算、关系运算、赋值运算C. 关系运算、赋值运算、算术运算D. 关系运算、算术运算、赋值运算6、表达式!x||a==b 等效于(D)。
A. !((x||a)==b)B. !(x||y)==bC. !(x||(a==b))D. (!x)||(a==b)7、设整型变量m,n,a,b,c,d 均为1,执行(m=a>b)&&(n=c>d)后, m,n 的值是(B)。
A. 0,0B. 0,1C. 1,0D. 1,18、设有语句int a=3;,则执行了语句a+=a-=a*=a;后,变量a 的值是(B)。
A. 3B. 0C. 9D. -129、在以下一组运算符中,优先级最低的运算符是(D)。
A. *B. !=C. +D. =10、设整型变量i 值为2,表达式(++i)+(++i)+(++i)的结果是(B)。
A. 6B. 12C. 15D. 表达式出错11、若已定义x 和y为double 类型,则表达式x=1,y=x+3/2 的值是(C)。
A. 1B. 2C. 2.0D. 2.512、设a=1,b=2,c=3,d=4,则表达式:a<b? a : c<d? a : d的结果为(D)。
第七、八、九章选择题
1.C语言中的函数[1]
[1] A.嵌套定义和嵌套调用均可 B.可以嵌套定义但不可以嵌套调用
C.嵌套调用和递归调用均可 D.可以嵌套调用但不可以递归调用
2.C语言中函数返回值的类型是由[2]决定的
[2] A. return语句中的表达式类型 B.调用函数时临时指定
C.定义函数时所指定的函数类型 D.对被调用函数声明时指定
3.下列调用函数的说法中不正确的是[3]
[3] A.主调函数和被调函数可以不在同一文件中
B.实际参数和形式参数可以同名
C.若用值传递方式,则形式参数不予分配内存
D.函数间传递数据可使用全局变量
E.函数调用时,若形、实参数均为数组名,则其传递方式是地址传递方式
4.若用数组名作为函数调用时的实参,则实际上传递给形参的是[4]
[4] A.数组中全部元素的值 B.数组的第一个元素的值
C.数组的首地址 D.数组元素的个数
5.void作为函数的参数时,表示[5]
[5] A.该函数无返回值 B.实参可为任意值
C.函数无参数 D.该函数可返回任意值
6.下面对typedef 不正确的叙述是[6]
[6] A.用typedef 可以定义各种类型名,但不能定义变量
B.使用typedef 有利于程序的通用和移植
C.用typedef可以增加新类型
D.用typedef 只是将已存在的类型用一个新的标识符表示
7.使用共用体union的目的是[7]
[7] A.将一组相同数据类型的数据作为一个整体,以便程序中使用
B.将一组相同数据类型的数据作为一个整体,以便其中的成员共享同一存储空间 C.以便其中的成员共享同一存储空间
D.将一组相关数据作为一个整体,以便程序中使用
8.下列数据类型中不属于构造类型的是[8]
[8]A.数组型 B.结构型 C.枚举型 D.共用型
9.在C语言中,[9]类型变量的所有成员以覆盖方式共享存储单元
[9]A.数组型 B.结构型 C.共用型 D.枚举型
10.若程序中含有定义: struct abc { int x;int y;}
struct abc s1,s2;则[10]
[10] A.能编译、链接、运行 B.能编译、链接,但不能运行
C.编译时出错 D.能编译、但链接出错
11.C语言中,对于存储类型为[11]的变量,只有在使用它们时才占用存储单元
[11] A. static 和auto B.register 和 extern
C. auto 和register D.register 和 static
12.对数组a的正确定义为[12]
[12] A. int a(10); B. int n=10, a[n];
C. #define SIZE 10 D. int n;scanf(”%d” ,&n);
int a[SIZE]; int a[n];
13.计算平方数时不可能引起二义性的宏定义是[13]
[13] A. #define SQR(x) x*x B. #define SQR(x) (x)*(x)
C. #define SQR(x) ( (x)*(x) ) D.#define SQR(x) (x*x)
14.下面程序的输出结果是[14]
#define MA(x) x*(x-1)
main( )
{int a=1,b=2,j;j=1+a+b;printf(”%d,%d\n”,MA(1+a+b),MA(j));}
[14]A. 8,8 B. 12,12 C. 8,12 D.无答案
15.下面程序的输出结果是[15]
#include <stdio.h> main( )
int x,y ; { int a=9,b=5;
f( ) x=a+b;y=a-b;
{ int y,a=25,b=10; f( );
x=a+b;y=a-b;printf(”%d,%d\n”,x,y);} return;}
[15]A. 14,4 B. 35,15 C. 35,4 D.14,15
16.下面程序的输出结果是[16]
int x=1; main()
f( ) { int i;
{static int i=2;int x=10; for( i=1;i<4;i++){++x;f();}
x+= ++i ;printf(”%d,”,x);} printf(”%d\n”,x);}
[16]A.13,17,22,4 B.13,14,15,15 C.13,14,15,4 D.无答案
17.下面程序的输出结果是[17]
void sub1 (int * x, int y,int z) main ( )
{ * x = y – z;} { int a=0, b=0;
void sub2 (int x, int y,int z) sub1( &a, 10,3 );sub2( b, 10,3 );
{ x = y – z;} printf( ”%d,%d\n” ,a,b) } [17]A. 7,7 B. 0,7 C. 7,0 D. 0,0
18.若有定义和语句:char *a,b[5 ] ;a=(char *)malloc(80) ;则正确的是[18]
[18] A.scanf( ”%s” ,*a); B.b=a; C.a= ”good”; D.b= ”good”;
19.下面程序的输出结果是[19]
#include <stdio.h> main( )
ss(char *s) { char *a=”abcde”;int i;
{ char *p=s; i=ss(a);
while(*p)p++;printf(”%d\n” ,i);
return (p-s);} }
[19] A. 7 B. 6 C. 5 D. 8
20.若有定义: struct st { char name[20];int age;
char sex;}a[30] ,*p=a;则[20]是错误的语句[20] A.scanf( ”%s”,p[0] .name); B.scanf( ”%d”,&p[0] .age);
C.scanf( ”%d”, &(*p.age) ); D.scanf( ”%c”,&p->sex);21.能定义s为合法的结构体变量的是[21]
[21]A. typedef struct abc B. struct abc
{ double a;char b[10];}s; { double a;char b[10];};
abc s;
C. typedef struct D. typedef abc
{ double a;char b[10];}abc; { double a;char b[10];};
abc s; abc s;
22.若有定义:enum weekday{mon,tue,wed,thu,fri} workday;
则[22]是不正确的语句
[22] A.workday=(enum weekday) 3; B.workday=(enum weekday) (4-2);
C.workday= 3; D.workday=thu;
23.下面程序输出结果为[23]
main( )
{union tt{ long k;int i[6];char c[4];}r;
printf(“%d,%d\n”,sizeof(r),sizeof(union tt));}
[23]A. 4,4 B. 6,6 C. 12,12 D.无答案
24.下面程序输出结果为[24]
void f1 ( int i ) ; void f1 ( int i )
void f2 ( int i ) ;{ printf ( ”%c” , s [ i ] );
char s[ ]= ”hello,friend!”; if (i<4){i+=1;f2(i);}
main ( ) void f2 ( int i ) { f1 (0 ) ;} { printf ( ”%c” , s [ i ] );[24] A.hello B.he C. heo D.无答案 if (i<2){i+=3;f2(i);} 25.得到文件位置指针的当前位置的函数是[25]
[25]A. rewind B. fseek C. ftell D. fgetc
26.存储int类型数据–7856时,在二进制文件和文本文件中占用的字节数分别是[26]
[26]A. 5,5 B. 5,2 C. 2,5 D. 2,2
27.以读 / 写方式打开一个已存在的二进制文件且使位置指针移到文件末尾,应选择
的使用方式是[27]
[27]A.”a+” B.”wb+” C.”ab+” D.”rb+”。