阶段一C语言题库.doc_第1页
阶段一C语言题库.doc_第2页
阶段一C语言题库.doc_第3页
阶段一C语言题库.doc_第4页
阶段一C语言题库.doc_第5页
已阅读5页,还剩93页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一、单选题1二、多选题13三、填空题13四、判断题23五、简答题23六、程序分析题27七、编程题38一、单选题1. break关键字在哪一种语法结构中不能使用? (C) A. for语句 B. switch语句C. if语句 D. while语句 2. 现在最快且最通用的排序算法是什么? (A )A. 快速排序 B. 冒泡排序C. 选择排序 D. 外部排序3设x和y均为bool变量,则x&y为真的条件是(A)。A. 它们均为真 B. 其中一个为真 C. 它们均为假 D. 其中一个为假4下面的哪个保留字不能作为函数的返回类型(C)。A. void B. int C. new D. long5假定a为一个整型数组名,则元素a4的字节地址为A 。A. a+4 B. a+8 C. a+16 D. a+326. C库函数strstr的功能是? (A )A. 查找子串 B. 计算字符串长度C. 字符串比较 D. 连结字符串 7.在程序中可以用来作为变量名的合法的标识符是:_c_。A staticB 23_b1C stu_1tD #33 8.下列运算符运算级别最高的是:_d _。A &B +=C =D !9.已知:char str1, str210; 选择正确的输入语句:_d_ _。A scanf (%s%c, &str1,str2); B scanf (%s%s, &str1,str2); C scanf (%c%c, &str1,str2); D scanf (%c%s, &str1,str2);10.有一个二维数组s34, 其第2行第3列元素的正确表示是:_ _。A *(*(s+2)+3)B *(s+2)+3C s2,3D s3211.以下正确的描述是:_d_。A continue 语句的作用是终止整个循环的执行。B continue 语句的作用是结束本次循环的执行。C continue 语句和break 语句都可以在switch语句中使用。D break 语句的作用是结束本次循环的执行。12.假定x和y为double型,则表达式x=2,y=x+3/2的值是:_a _。A)3.500000 B)3 C)2.000000 D)3.00000013.C语言规定,数组名做实参时,它和对应形参之间的数据传递方式是:_d_。A 用户指定传递方式 B 无传递 C 单向值传递 D地址传递14.若有以下说明语句:struct STUDENT int num;char name10;float cj;a1=1001, ”liming”, 97.5, *p=&a1;不正确的输出语句是:_d_ _。A printf(“%f”,a1.cj); B printf(“%f”,p-cj);C printf(“%f”,(*p).cj); D printf(“%f”,*p.cj);15.已知 int a; 则对指针变量正确的说明和初始化是:_d_ _。A int *p=a; B int p=a; C int p=&a; D int *p=&a;16.若有定义:int aa 8;则以下表达式中不能代表数组元aa1的地址的是:_a_。A) &aa0+1 B) &aa1 C) &aa0+ D) aa+1 17.若有下面的说明和定义,则sizeof(struct aa)的值是:_c_。struct aa double r2; int r1; float r3; union uuchar u15;long u22;ua; mya; A)30 B)29 C)24 D)2218.若有以下定义和语句: _c_。int s45,(*ps)5; ps=s; 则对s数组元素的正确引用形式是 A) ps+1 B) *(ps+3) C) ps02 D) *(ps+1)+3 191.假设线性表的长度为n,则在最坏情况下,冒泡排序需要的比较次数为:_ d _。A)log2n B)n2C)O(n1.5)D)n(n-1)/2 20.在说明语句:int *f();中,标识符f代表的是:_d _。A) 一个用于指向整型数据的指针变量B) 一个用于指向一维数组的行指针C) 一个用于指向函数的指针变量D) 一个返回值为指针型的函数名21.线性表L=(a1,a2,a3,ai,an),下列说法正确的是:_ d _。A)每个元素都有一个直接前件和直接后件B)线性表中至少要有一个元素 C)表中诸元素的排列顺序必须是由小到大或由大到小 D)除第一个元素和最后一个元素外,其余每个元素都有一个且只有一个直接前件和直接后件22.若以下定义: struct link int data; struck link *next; a,b,c,*p,*q; 且变量a和b之间已有如下图所示的链表结构: a b data next data next 5 9 0 p c data next 7 q 指针p指向变量a,q指向变量c。则能够把c插入到a和b 之间并形成新的链表的语句组是: _ c _。A) a.next=c; c.next=b;B) p.next=q; q.next=p.next; C) q-next=p-next; p-next=&c; D) (*p).next=q; (*q).next=&b; 23.设有以下说明语句:_b _。typedef struct int n; char ch8; PER; 则下面叙述中正确的是 A) PER 是结构体变量名 B) PER是结构体类型名 C) typedef struct 是结构体类型 D) struct 是结构体类型名24.若有说明:int a4=0,0;则下面不正确的叙述是:_d _。A)数组a的每个元素都可得到初值0 B)二维数组a的第一维大小为1 C)当初值的个数能被第二维的常量表达式的值除尽时,所得商数就是第一维的大小D)只有元素a00和a01可得到初值,其余元素均得不到确定的初值25.以下叙述正确的是:_d _。A) 可以把define和if定义为用户标识符 B) 可以把define定义为用户标识符,但不能把if定义为用户标识符 C) 可以把if定义为用户标识符,但不能把define定义为用户标识符 D) define和if都不能定义为用户标识符 26.若定义:int a=511,*b=&a;, 则printf(%dn,*b);的输出结果为:_d_ _。A) 无确定值 B) a的地址 C) 512 D) 511 27.以下程序中,while循环的循环次数是:_d_。main() int i=0; while(i10) if(i1) continue; if(I=5) break; i+; . A) 1 B) 10 C) 6 D) 死循环,不能确定次数 28.若有以下程序: #include void f(int n); main() void f(int n); f(5); void f(int n) printf(%dn,n); 则以下叙述中不正确的是:_c_。A) 若只在主函数中对函数f进行说明,则只能在主函数中正确调用函数f B) 若在主函数前对函数f进行说明,则在主函数和其后的其它函数中都可以正确调用函数f C) 对于以上程序,编译时系统会提示出错信息:提示对对f函数重复说明 D) 函数f无返回值,所以可用void将其类型定义为无值型 29.有如下定义struct personchar name9;int age; struct person class10=John,17,paul,19,Mary,18,Adam,16,; 根据上述定义,能输出字母M的语句是:_ d _。A)printf(%cn,); B)printf(%cn,1); C)printf(%cn,1); D)printf(%cn,0);30.在C语言中,形参的缺省存储类是:_a _。A) auto B) register C) static D) extern 31.若要打开A盘上user子目录下名为abc.txt的文本文件进行读、写操作,下面符合此要求的函数调用是:_ b _。A) fopen(A:userabc.txt,r) B) fopen(A:userabc.txt,r+) C) fopen(A:userabc.txt,rb)C) fopen(A:userabc.txt,w) 32.若有定义: char *st= how are you ; 下列程序段中正确的是:_a _。A)char a11, *p; strcpy(p=a+1,&st4); B)char a11; strcpy(+a, st); C)char a11; strcpy(a, st); D)char a, *p; strcpy(p=&a1,st+2); 33.下列用于printf函数的控制字符常量中,代表竖向跳格的转义字符常量是:_c_ 。A)bB)tC)vD)f 34.设变量n为float类型,m为int类型,则以下能实现将n中的数值保留小数点后两位,第三位进行四舍五入运算的表达式是:_a _。A)n=(n*100+0.5)/100.0 B)m=n*100+0.5,n=m/100.0 C)n=n*100+0.5/100.0 D)n=(n/100+0.5)*100.035.设x,y和z都是int型变量,且x=3,y=4,z=5,则下面表达式中,值为0的表达式是:_d_。A)x&yB)xpk B)*p.pk C)*p-pk D)*x . pk44.设有int a =10,11,12,*p=&a0;则执行完*p+;*p+=1;后a0,a1,a2的值依次是:_c_。A) 10,11,12B) 11,12,12C) 10,12,12 D) 11,11,1245.表达式 sizeof(”hello”)与strlen(“hello”) 的值分别是:_c_。A) 6,6B) 5,5C) 6,5D) 5,646.假定建立了以下链表结构,指针p、q分别指向如图所示的结点,则以下可以将q所指结点从链表中删除并释放该结点的语句组是:_b_。A)free(q); p-next=q-next; B) (*p).next=(*q).next; free(q);C) q=(*q).next; (*p).next=q; free(q); D) q=q-next; p-next=q; p=p-next; free(p);43p8q47._d_是合法的用户自定义标识符。A、b-bB、floatC、D、_isw 48._c _把x、y定义成float类型变量,并赋同一初值3.14。A、float x, y=3.14; B、float x, y=2*3.14; C、float x=3.14, y=x=3.14; D、float x=y=3.14;49.下面四个选项中,均是C语言关键字的选项是:_a,b _。A. auto enum includeB. switch typedef continueC. signed union scanfD. if struct type50.下列一维数组说明中,正确的是:_a,c _。A. #define SIZE 8 + 2 float bSIZE;B. int n; scanf(“%d”, &n); float bn;C. const int m = 7; float am;/这个要区分c文件和c+文件D. int a(10);51.下列字符数组初始化语句中,正确的是:_A_。A. char c = “newspaper”;B. char c8 = “newspaper”;C. char c10 = newspaper;D. char c12 = newspaper;52.设x、y、z都是整型变量,x、y的初值都是5,执行z=(+x)+(y- -)+1后,x、y、z三变量的值按顺序是:_ d _。A5, 5, 11B6, 6, 13C4, 6, 12D6, 4, 1253.以下转义字符中,表示“换页”的是:_b_ _。AvBfCbDt54.在内存中要开辟多少字节来存放字符n :_a_。A. 1B.2C.3D.455.有变量说明int a = 3,则表达式a1和运算完后a的值应该是:_B_。A.0和2B.0和3C.1和2D.1和356.设x和y都是int类型的数,则下列表达式的值不为7的是:_c_。A. (x = y = 6, x + y, x + 1)B. (x = y = 6, x + y, y + 1)C. (x = 6, x + 1, y = 6, x + y)D. (y = 6, y + 1, x = y, x + 1)57. extern关键字的作用是什么? (D)A. 声明外部链接 B. 声明外部头文件引用C. 声明使用扩展C+语句 D. 声明外部成员函数、成员数据。58.for(intx=,y=o;!x&y0);printf(a=%d,b=%d,a,b);A a=2,b=-1B a=2,b=-2C a=4,b=-1D a=4,b= -22.以下程序的输出结果是: _b_。main() int b33=0,1,2,0,1,2,0,1,2,i,j,t=1; for(i=0;i3;i+) for(j=i;j b ? (a c ? a : c) : b); A) 5 B) 4 C) 6 D) 不确定4.以下程序的输出结果是:_a _。main() int a=0,i;for(i=1;i5;i+) switch(i) case 0: case 3:a+=2; case 1: case 2:a+=3; default:a+=5; printf(%dn,a); A) 31 B) 13 C) 10 D) 20 5.以下程序的输出结果是:_a_。main() int a=4,b=5,c=0,d; d=!a&!b|!c; printf(%dn,d); A) 1 B) 0 C) 非0的数D) -1 6.有以下程序main() char a= a,b,c,d, e, f, g,h,0; int i,j; i=sizeof(a); j=strlen(a); printf(%d,%db,i,j); 程序运行后的输出结果是:_d _。A)9,9 B)8,9 C)1,8 D)9,8 7.以下程序的运行结果是:_ b _。#define MIN(x,y)(x)(y)?(x):(y) main() int i=10,j=15,k; k=10*MIN(i,j); printf(%dn,k); A)10 B)15 C)100 D)1508.以下程序的输出结果是:_ d _。int f() static int i=0; int s=1; s+=i; i+; return s; main() int i,a=0; for(i=0;i5;i+) a+=f(); printf(%dn,a); A) 20B) 24C) 5D) 15 9.有如下程序int func(int a,int b) return(a+b); main() int x=2,y=5,z=8,r; r=func(func(x,y),z); printf(%dn,r); 该程序的输出的结果是:_d _。A)12 B)13 C)14 D)15 10.以下程序的输出结果是:_b _。main() char ch35=AAAA,BBB,CC; printf(%sn,ch1); A) AAAA B) BBB C) BBBCC D) CC 11.以下程序执行后a的值是:_ d _。main() int x,y=252,i=386,*m=&y,*z=&i; x=(z=y); printf(%d,x); A)252 B)1 C)0 D)运行时出错,x无定值12.下列程序的输出结果是:_b_。struct abc int a, b, c, s; main() struct abc s2=1,2,3,4,5,6; int t; t=s0.a+s1.b; printf(%dn,t); A)5 B)6 C)7 D)813.下列程序的运行结果是:_b _。void fun(int *a, int *b) int *k; k=a; a=b; b=k; main() int a=3, b=6, *x=&a, *y=&b; fun(x,y); printf(%d %d, a, b); A)6 3B)3 6C)编译出错D)0 014.以下程序段的输出结果是:_c_。int a=1234; printf(%2dn,a); A) 12 B) 34 C) 1234 D) 提示出错、无结果 15.有以下程序void fun(int a,int b,int c) a=456,b=567,c=678; main() int x=10,y=20,z=30; fun(x,y,z); printf(%d,%d,%dn,x,y,z); 输出结果是:_b _。A)30,20,10B)10,20,30C)456,567,678D)678,567,45616.以下程序的输出结果是:_31_。fun(int x, int y, int z) z=x*x+y*y;main()int a=31;fun(5,2,a);printf(“%d”,a);A)0B) 29C) 31D) 无定值17.以下程序的输出结果是:_ d _。main()char w10=“ABCD”, “EFGH”, “IJKL”, “MNOP” , k;for (k=1;k3;k+)printf(“%s ”,wk);A)ABCD FGH KLB) ABCD EFGC) EFG JKD) EFGH IJKL18.以下程序的输出结果是:_25_。int f(void)static int i = 0;static int s = 1;s += i;i +;return s;int main(void)int i, a = 0;for (i = 0; i 0; x-) if(x%3) printf(“%d,”,x-); continue; printf(“%d,”,-x); A. 7, 4, 2B.8, 7, 5, 2C.9, 7, 6, 4D.8, 5, 4, 221.以下程序的输出结果是:_c_。int main(void)int a,b;for(a=1,b=1;a=10) break;if(b%3=1)b+=3;continue;b-=5;printf(%dn,a);return 0;A.6B.5C.4D.3二、多选题1.在C语言中,每个变量必须在使用前进行类型说明或定义,这样可以 (ABCD)()为变量赋初值 ()规定该变量的取值范围 ()规定该变量所能进行的运算操作()方便在编译时为其分配存储单元 ()规定变量的个数2. 以下是死循环的程序段是_。(A)for (i=1; ;) if(+i%2= =0) continue;if(+i%3= =0) break; (B) i=32767;do if(i0) break;while(+i);(C) for(i=1; ;) if(+i=0);3. 设有以下说明和定义语句,则下面表达式中值为3的是_d,e_。struct sinti1;struct s *i2;static struct s a3=1, &a1, 2, &a2, 3, &a0, *ptr;ptr=&a1;(A) ptr-i1+ (B) ptr+-i1 (C) *ptr-i1 (D) +ptr-i1 (E) (+ptr)-i14. 下面程序的功能是将一个整数字符串转换为一个整数,如“-324”转换为-324,请选择填空。#include #include main()char s6;int n;gets(s);if(*s=-) n=_2_;else n=chnum(s);printf(“%dn”, n);chnum(char *p)int num=0, k, len, j;len=strlen(p);for(; _3_; p+)k=_4_;j= (-len);while(_5_) k=k*10;num=num+k;return (num);2(A)chnum(s)(B)-chnum(*s)(C)-chnum(s+1)(D)-chnum(s+)(E) -chnum(+s)3(A)*p!=0(B)*(+p)!=0(C)*(p+)!=0(D)len!=0(E)*p=04(A)*p(B)*p+0(C)*p-0(D)*p-32(E)p0-05(A)-j0(B)j-0 (C)-len0(D)len-0(E)j5. 下面程序删除字符串s中的所有空格(包括TAB符、回车符、换行符)。在对应的一组选项中选择正确的内容填入_处。#include #include main()char s81=”a b c d e f g.”;delspace(s);puts(s);delspace(char *str)int i, t;char ts81;for(i=0, t=0; _8_ ;_9_)if(!isspace(stri) tst+=stri;_10_;strcpy(str, ts);8(A)stri(B)!stri(C)stri!=0(D)stri=NULL(E)stri= =09(A)t+(B)+i(C)i+(D)*(ts+i)(E)+t10(A)tst=0(B)strt+=0(C)tst+=0 (D)ts- -t=0 (E)strt=05.下列哪些写法是对的,而且是常量。 ( ABCEGH正确,D错误 )A 125 B -.456 C 1.25e20 D ABE E6 F 0238 G 0xabcdef H n123三、填空题1.某32位系统下, C+程序,请计算sizeof 的值char str = “Hello”char *p = str ;int n = 10;请计算sizeof (str ) =_6_sizeof ( p ) = _4_sizeof ( n ) =_4_void Foo ( char str100)请计算sizeof( str ) = _4_ void *p = malloc( 100 );请计算sizeof ( p ) = _4_2.设int arr=6,7,8,9,10; int *ptr=arr; *(ptr+)+=123;printf(%d,%d,*ptr,*(+ptr);结果_8,8_ 3.定义 int *a34, 则变量占有的内存空间为:_48_答:此处定义的是指向指针的指针数组,对于32位系统,指针占内存空间4字节,因此总空间为34448。4. 如果i等于5,那么( +i ) - -的返回值是_6_。5.头文件中的 ifndef/define/endif 干什么用? 预处理指令、防止头文件被重复引用6. #include 和 #include “filename.h”的区别为前者用来包含开发环境提供的库头文件,后者用来包含自己编写的头文件。7. switch()中不允许的数据类型是实型8.队列和栈的区别为 队列先进先出,栈后进先出9.写一个“标准”宏,这个宏输入两个参数并返回较小的一个#define Min(X, Y) (X)(Y)?(Y):(X) /结尾没有;10.写出判断ABCD四个表达式的是否正确, 若正确, 写出经过表达式中 a的值int a = 4;(A)a += (a+);_9_ (B) a += (+a) ;_10_(C) (a+) += a;_ 错误,左侧不是一个有效变量,不能赋值,可改为(+a) += a;修改后答案是10_(D) (+a) += (a+);_11_11.某32位系统下, C+程序,请计算sizeof 的值.char str = “”char *p = str ;int n = 10;请计算sizeof (str ) = _17_sizeof ( p ) = _4_sizeof ( n ) = _4_void Foo ( char str100)请计算sizeof( str ) = _4_void *p = malloc( 100 );请计算sizeof ( p ) = _4_12、strcat能把strSrc 的内容连接到strDest,为什么还要char * 类型的返回值?方便赋值给其他变量13.int i=10, j=10, k=3; k*=i+j; k最后的值是?答:60,此题考察优先级,实际写成: k*=(i+j);,赋值运算符优先级最低14. 计算反正弦的库函数是_asin()_;计算浮点数绝对值的库函数是_fabs()_;计算浮点数n次方的库函数是_pow()_;将浮点数转化为字符串的库函数是_fcvt()_。15.描述命题 “A 小于 B 或小于 C” 的表达式为6AB | AC 。 16.对嵌套 if 语句的规定是: else 总是与else if 配对。 17. 行尾使用注释的开始标记符为_ /_。18 多行注释的开始标记符和结束标记符分别为_ /*_和_ */_。19. 一个完整程序中必须有一个名为_ main_的函数。20一个函数的函数体就是一条_复合_语句。21. 程序中的预处理命令是指以_#_字符开头的命令。22. 一条表达式语句必须以_分号_作为结束符。23 在#include命令中所包含的头文件,可以是系统定义的头文件,也可以是_用户(或编程者_定义的头文件。24 使用#include命令可以包含一个头文件,也可以包含一个_程序_文件。25一个函数定义由_函数头_和_函数体_两部分组成。26若一个函数的定义处于调用它的函数之前,则在程序开始可以省去该函数的_原型(或声明)_语句。27程序文件的编译错误分为_警告(warning)_和_致命(error) _两类。28当使用_ void _保留字作为函数类型时,该函数不返回任何值。29函数参数表用_ void _保留字表示时,则表示该参数表为空。30一条函数原型语句“int fun1(void);”可知,该函数的返回类型为_int_,该函数带有_0_个参数。31假定x=5,y=6,则表达式x+*+y的值为_35_。32假定x=5,y=6,则表达式x-*-y的值为_25_。33假定x=5,y=6,则执行表达式y*=x+计算后,x和y的值分别为_6_和_30 _。34假定x=5,y=6,则执行表达式y+=x-计算后,x和y的值分别为_4_和_11_。35 常数0x145对应的十进制值为_325 _。36 常数0345对应的十进制值为_ 229_。37十进制常数245对应的十六进制的C+表示为_0xF5_。38十进制常数245对应的八进制的C+表示为_0365 _。 39 Signed char类型的值域范围是_-128_至_+127 _之间的整数。40. int和float类型的数据分别占用_ 4_和_ 4_个字节。41. float和double类型的数据分别占用_ 4_和_8_个字节。42. bool和char类型的数据分别占用_1_和_1_个字节。43. unsigned short int和int类型的长度分别为_ 2_和_4_。44. 字符串”Thiss a book.n”的长度为_ 15_。45. 字符串”nThiss a pennn”的长度为_ 15_。46. 存储字符串”abcdef”至少需要_7 _个字节。47. 存储字符串”a+b=c”至少需要_6 _个字节。48. 假定x和y为整型,其值分别为16和5,则x%y和x/y的值分别为_1_和_3_。49. 假定x和y为整型,其值分别为16和5,则x/y和double(x)/y的值分别为_3_和_3.2_。50. 假定x是一个逻辑量,则x & true的值为_ x _。51. 假定x是一个逻辑量,则x | true的值为_ true(或1)_。52. 假定x是一个逻辑量,则x & false的值为_ false(或0) _。53. 假定x是一个逻辑量,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论