十套C语言试题及前八套答案.docx
- 文档编号:10195501
- 上传时间:2023-02-09
- 格式:DOCX
- 页数:84
- 大小:65.16KB
十套C语言试题及前八套答案.docx
《十套C语言试题及前八套答案.docx》由会员分享,可在线阅读,更多相关《十套C语言试题及前八套答案.docx(84页珍藏版)》请在冰豆网上搜索。
十套C语言试题及前八套答案
试题一
一、填空题(每题2分,共20分)
1.表示条件:
10 2.执行语句: for(i=1;i++<4;)后,变量i的值是 。 3.在C语言中,写一个十六进制的整数,必须在它的前面加上前缀 。 4.利用减1运算符“--”,下面的两个语句 b=5+a: a-=1 表达的功能,可以由一个语句来实现。 这个语句是 。 5.任何一个数组的元素都具有相同的名字和。 6.有说明语句: intx[][4]={{1},{2},{3}};那么元素x[1][1]的 取值是。 7.在C语言中,指针就是一个。 8.如果指针变量p当前指向数组a的第I个元素a[i]。 那么表达式 *(--p) 的操作过程是。 9.如有以下说明: floatnum[10]={0.0,1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9}, *p=&num[5];那么执行语句“p-=4;”后,指针p指向的元素是。 10.如果一个函数没有返回值,那么该函数的类型是的。 二、单项选择(每题2分,共30分) 1.若变量已正确定义并赋值,下面符合C语言语法的表达式是。 A.a: =b+1B.a=b=c+2C.int18.5%3D.a=a+7=c+b 2.以下字符中,不正确的C语言转义字符是。 A.\’B.\011C.\\D.\80 3.若已定义x和y为double型,则表达式x=1,y=x+3/2的值是。 A.1B.2C.2.0D.2.5 4.有如下说明,则数值为9的表达式是。 A.*p+9B.*(p+8)C.*p+=9D.p+8 5.以下关于C语言字符数组的描述错误的是。 A.字符数组可以存放字符串 B.字符数组中的字符串可以整体输入输出 C.可以在赋值语句中通过赋值运算符‘=’对字符数组整体赋值 D.不可以用关系运算字符数组中的字符串进行比较 6.若已定义: inta[]={0,1,2,3,4,5,6,7,8,9},*p=a,i; 其中0≤i≤9,则对a数组元素不正确的引用是。 A.a[p-a]B.*(&a[i])C.p[i]D.a[10] 7.有如下程序段,执行该程序段后,a的值为。 int*p,a=10,b=1; p=&a;a=*p+b; A.12B.11C.10D.编译出错 8.假如指针p1已经指向某个整型变量,要使指针p2也指向同一个变量,哪一个语句是正确的。 A.p2=&p1;B.p2=**p1;C.p2=&*p1;D.p2=*p1 9.设有数组定义: chararray[]=”china”;则数组array所占的空间为。 A.4个字节B.5个字节C.6个字节D.7个字节 10.执行语句x=(a=3,b=a--);后,x,a,b的值依次是。 A.3,3,2B.3,2,2C.3,2,3D.2,3,2 11.若有以下定义: int[3][2];则能正确表示t数组元素地址的表达式是。 A.&t[3][2]B.t[3]C.t[1]D.*t[2] 12.设整型变量a,b,c均为2,表达式a+++b+++c++的值为。 A.6B.9C.8D.表达式错误 13.以下叙述中不正确的是。 A.在函数中,通过return语句传回函数值 B.在函数中,可以有多条return语句 C.在C中,main后的一对圆括号中也可以带有形参 D.在C中,函数的调用必须在一条独立的语句中完成 14.用在函数间传递数据时,C语言不为形参分配新的存储区。 A.普通变量B.数组名C.数组元素D.指针变量 15.以下关于字符串与指针的描述,正确的是。 A.字符串中的每个字符都是指针 B.可以用一个char*型指针指向字符串 C.字符串与指针等价 D.只有以“\0”结尾的字符串,才能用一个char*型指针指向其开头 三、判断题(每题1分,共10分) 1.“0x41”这个转义字符代表大写字母“A”。 () 2.如果数组说明中给出的初值个数小于数组长度,那么C编译会自动把剩余的元素初始话为与所列最后一个初值相同的取值。 () 3.若有说明: chara[]=“abcde”;那么字符数组a的长度是6。 () 4.有说明语句: charb[10];,那么b=“china”;就把字符串“china”赋给了数组b。 () 5.一个指针变量中,可以存放任意类型变量的地址。 () 6.在C语言中,指针变量有自己的地址。 () 7.有如下变量说明: intx,*p;floaty,*q;由于P是指向int型变量的指针,q是指向float型的指针,因此p和q占用的内存字节数是不相同的。 () 8.在一个函数里,不能说明全局变量。 () 9.没有返回值的函数一定没有参数。 () 10.用普通变量或指针变量传递数据时,C语言总是把实参的值赋给形参。 () 四、程序写结果(每题4分,共12分) 1.阅读下面的程序,给出执行后变量gx的取值。 #include“stdio.h” intgx; voidsgb() { intgx; gx=3; } voidfun() { gx=5; sgb(); gx=gx*3; } main() { fun(); printf(“gx=%d\n”,gx); } gx的值为。 2.写出下面程序段的输出结果。 Voidmain() { chara[]=“ABCDEFGH”,b[]=“abCDefGH”; char*p1,*p2; intk; p1=a;p2=b; for(k=0;k<7;k++) if(*(p1+k)==*(p2+k)) printf(“%c”,*(p1+k)); printf(“\n”); } 结果为。 3.写出下列程序段的输出结果。 intfun(int*p,intn) {inti,t; t=*p; for(i=1;i if(t<(*p+i))t=*(p+i); returnt; } voidmain() { inta[10]={10,23,1,3,4,0,-9,5,9,64}; intma; ma=fun(a,10); printf(“%d”,ma); }ma的值为。 五、程序设计题(共28分,任选三题) 1.编写一个程序,求出所有各位数字的立方和等于1099的三位整数。 比如,379就是这样一个满足条件的三位数。 2.用函数calculate来统计一任意二维数组中负数的个数n,并返回n的值。 3.编写一个程序,它利用char型的指针变量指向一个字符串,并把字符串里的小写字母全部转换成大写字母。 试题二 一、填空题: 1、C语言程序是由构成的,一个程序有且只有一个函数。 2、函数一般由和两部分构成。 3、C语言本身没有输入输出语句,输入和输出分别是由库函数和等函数来完成的。 4、C语言提供的基本数据类型有、、和。 5、设a=2,b=3,x=3.5,y=2.5,则表达式(float)(a+b)/2+(int)x%(int)y的值为. 6、从变量的作用域角度来分,可以分为变量和变量,从变量值存在的时间角 度来分,可以分为方式和方式。 7、按函数调用在程序中出现的位置来分,可以有三种函数调用方式,分别为、 、。 8、引用一个数组元素,可以用两种方法和。 9、数组元素a[I]的等价形式为。 二、选择题 1、若要求在if后一对圆括号中表示“a不等于0”的关系,则能正确表示这一关系的表达式为 A)a<>0B)! a C)a=0D)a 2、在C语言中,合法的字符常量是 A)'\084'B)'\x43' C)'ab'D)"\0" 3、若已定义x和y为double类型,则表达式: x=1,y=x+3/2的值是 A)1B)2 C)2.0D)2.5 4、在以下一组运算符中,优先级最高的运算符是 A)<=B)=C)%D)&& 5、下列合法的数组定义是 A)inta[]="string";B)inta[5]={0,1,2,3,4,5}; C)inta="string";D)chara[]={0,1,2,3,4,5}; 6、若有定义和语句: chars[10];s="abcd";printf("%s\n",s); 则结果是(以下u代表空格) A)输出abcdB)输出a C)输出abcduuuuuD)编译不通过 7、以下对C语言函数的有关描述中,正确的是 A)在C中,调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参 B)C函数既可以嵌套定义又可以递归调用 C)函数必须有返回值,否则不能使用函数 D)C程序中有调用关系的所有函数必须放在同一个源程序文件中 8、若有以下定义和语句: inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;则不能表示a数组元素的表达式是 A)*pB)a[10]C)*aD)a[p-a] 9、若有定义和语句: int**pp,*p,a=10,b=20; pp=&p;p=&a;p=&b;printf("%d\n",*p,**pp); 则输出结果是: A)10,20B)10,10 C)20,10D)20,20 10、若有以下定义: chars[20]="programming",*ps=s;则不能代表字符o的表达式是 A)ps+2B)s[2] C)ps[2]D)ps+=2,*ps 三、判断题 1、如果对a,b,c这三个变量赋初值,可以这样定义: inta=b=c=3;() 2、continue语句和break语句的区别是: continue语句只结束本次循环,而不是终止整个循环的执行,而break语句则是结束整个循环过程,不再判断执行循环的条件是否成立。 () 3、若有定义charstr[13];那么使用的输入函数可以写成: scanf(“%s”,&str);() 4、判断下列语句是否正确: (1)chara[14]; a=”Ilovechina”;() (2)charstr[]={“Ilovechina! ”}; str=str+7; printf(%s”,str);() 四、阅读下列程序,写出运行结果 1、intast(intx,inty,int*cp,int*dp) {*cp=x+y; *dp=x-y; } main() {inta,b,c,d; a=4;b=3; ast(a,b,&c,&d); printf("%d%d\n",c,d); } 上面程序的输出结果是: 2、 #include inta[]={2,4,6,8}; main() {inti; int*p=a; for(i=0;i<4;i++) a[i]=*p++; printf("%d\n",a[2]); } 上面程序的输出结果是: 3、 #include main() {inta,b; for(a=1,b=1;a<=100;a++) {if(b>=20)break; if(b%3==1) {b+=3; continue; } b-=5; } printf("%d\n",a); } 上面程序的输出结果是: 五、编程题 1、编程找出200-300之间满足下列条件的数: 该数各位数字之和为12,之积为42。 2、打印出以下图案: * *** ***** ******* ***** *** * 试题三 一、选择题 1、.结构化程序设计所规定的三种基本控制结构是: () A、输入、处理、输出B、树形、网形、环形 C、顺序、选择、循环D、主程序、子程序、函数 2、以下程序的输出结果是() main()120 {inti=010,j=10,k=0x10; printf("%d,%d,%d\n",i,j,k); } A、8,10,16B、8,10,10C、10,10,10D、10,10,16 3、假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是() A、7B、8C、6D、2 4、C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符()。 A、必须为字母 B、必须为下划线 C、必须为字母或下划线 D、可以是字母、数字和下划线中的任一种字符 5、执行语句: printf("|%10.5f|\n",12345.678);的输出是()。 A、|2345.67800|B、|12345.6780|C、|12345.67800|D、|12345.678| 6、有以下程序 main() {chara='a',b; printf("%c,",++a); printf("%c\n",b=a++); } 程序运行后的输出结果是() A、b,bB、b,cC、a,bD、a,c 7、有以下程序 main() {inti=0,s=0; for(;;) {if(i==3||i==5)continue; if(i==6)break; i++; s+=i; }; printf("%d\n",s); } 程序运行后的输出结果是() A、10B、13C、21D、程序进入死循环 8、若w=1,x=2,y=3,z=4,则条件表达式w w: y y: z的值是()。 A.4B.3C.2D.1 9、putchar函数可以向终端输出一个() A.整型变量表达式值 B.实型变量值 C.字符串 D.字符或字符型变量值 10、有如下程序段: inta1,a2; charc1,c2; scanf(“%d%c%d%c”,&a1,&c1,&a2,&c2); 若要求a1,a2,c1,c2的值分别为10,20,A,B,正确的数据输入是() A、10A20BB、10A20BC、10A20BD、10A20B 11、以下程序的执行结果是() #include main() {inti=010,j=10; printf(“%d,%d\n”,i,j); } A.11,10B.9,10C.010,9D.10,9 12、为了避免嵌套的if-else语句的二义性,C语言规定else总是与()组成配对关系。 A.缩排位置相同的ifB.在其之前未配对的if C.在其之前未配对的最近的ifD.同一行上的if 13、能够完成如下函数计算的程序段是() -1x<0 y=0x=0 1x>0 A.y=-1; if(x! =0) if(x>0)y=1; elsey=0; B.if(x>=0) if(x>0)y=1; elsey=0; C.y=0; if(x>=0) if(x>0)y=1; elsey=-1; D.y=-1; if(x>0)y=1; elsey=0; 14、下面有关for循环的正确描述是()。 A、for循环只能用于循环次数已经确定的情况 B、for循环是先执行循环体语句,后判断表达式 C、在for循环中,不能用break语句跳出循环体 D、for循环体语句中,可以包含多条语句,但要用华括号括起来 15、C语言中while和do-while循环的主要区别是()。 A、do-while的循环体至少无条件执行一次 B、while的循环控制条件比do-while的循环控制条件严格 C、do-while允许从外部转到循环体内 D、do-while的循环体不能是复合语句 16、以下程序段() A、是死循环B、循环执行二次C、循环执行一次D、有语法错误 17、以下关于数组的描述正确的是() A、数组的大小是固定的,但一个数组中可以有不同类型的数组元素。 B、数组的大小是可变的,但一个数组中所有元素的类型必须相同。 C、数组的大小是固定的,但一个数组中所有元素的类型必须相同。 D、数组的大小是可变的,但一个数组中可以有不同类型的数组元素。 18、以下对二维数组a进行正确初始化的是() A、inta[2][3]={{1,2},{3,4},{5,6}}; B、inta[][3]={1,2,3,4,5,6}; C、inta[2][]={1,2,3,4,5,6}; D、inta[2][]={{1,2},{3,4}}; 19、设chars[10];*p=s;以下不正确的表达式是() A、p=s+5;B、s=p+s;C、s[2]=p[4];D、*p=s[0]; 20、设有说明int(*ptr)[M];其中ptr是() A、M个指向整型变量的指针 B、指向M个整型变量的函数指针 C、一个指向具有M个整型元素的一维数组的指针 D、具有M个指针元素的一维指针数组,每个元素都只能指向整型量 21、如下程序的执行结果是() #include main() {inta[]={1,2,3,4,5,6}; int*p; p=a; *(p+3)+=2; printf(“%d,%d\n”,*p,*(p+3)); } A、1,3B、1,6C、3,6D、1,4 22、对于C语言的函数,下列叙述正确的是() A、函数的定义不能嵌套,但函数调用可以嵌套 B、函数的定义可以嵌套,但函数调用不能嵌套 C、函数的定义和调用都不能嵌套 D、函数的定义和调用都可以嵌套 23、在说明一个结构体变量时,系统分配给它的存储空间是(),在说明一个共同体变量时,系统分配给它的存储空间是() A、第一个成员所需存储空间 B、最后一个成员所需存储空间 C、占用最大存储空间的成员所需的存储空间 D、所有成员所需存储空间的总和 24、以下关于typedef的叙述不正确的是() A、用typedef可以定义各种类型名,但不能用来定义变量 B、用typedef可以增加新类型 C、用typedef只是将已存在的类型用一个新的名称来代表 D、使用typedef便于程序的通用 二、填空题 1、算法的五个特性是 、、、、。 2、二维数组a[5][6]的第十个元素如何表示? 。 3、若x,i,j和k都是int型变量,则执行下面表达式后x的值为。 x=(i=4,j=16,k=32) 4、已知x=43,ch=’A’,y=0;则表达式(x>=y&&ch<’B’&&! y)的值是_____。 5、什么是局部变量? ____________________。 什么是全局变量? ____________________。 6、若有定义和语句“intx[10],*p;p=x;”在程序中引用数组元素x[j]的4中形式是 ______、、__、______。 7、在下列程序段中,枚举变量c1和c2的值分别是、。 main() {enumcolor{red,yellow,blue=4,green,white}c1,c2; c1=yellow; c2=white; printf(“%d,%d\n”,c1,c2); } 三、判断题 1.’\0x41’这个转义字符代表大写字母’A’。 () 2.如果数组初始化时给出的初值个数小于数组长度,那么剩余的数组元素将被初始话化为给定的最后一个初值。 () 3.若有说明: chara[]=“abcde”;那么字符数组a的长度是6。 () 4.有说明语句: charb[10];,那么b=“china”;就把字符串“china”赋给了数组b。 () 5.若有定义: chars[]="china";则TurboC系统为数组s开辟5个字节的内存单元。 () 6.在C语言中,指针变量有自己的地址。 () 7.通过return语句,函数可以带回一个或一个以上的返回值。 () 8.在一个函数里,不能声明全局变量。 () 9.没有返回值的函数一定没有参数。 () 10.break语句用在循环体中,可结束整个循环,continue语句用在循环体中,可结束本次循环。 () 四、读程序写结果 1.以下程序的输出结果是: #include main() {intk=4,m=1,p; p=func(k,m); printf(“%d,”,p); p=func(k,m); printf(“%d”,p); } fun(inta,intb) {intm=0,i=2; i+=m+1; m=i+a+b; return(m); } 结果: 2.以下程序运行后的输出结果是()。 #include main() {charstr[]="SSSWLIA",c; intk; for(k=2;(c=str[k])! ='\0';k++) {switch(c) {case'I': ++k;break; case'L': continue; default: putchar(c);continue; } putchar('*'); } printf(“\n”); printf(“k=%d”,k); } 结果: _____________________________ 3.#include main() {inta[][4]={1,3,5,7,9,11,13,15,17,19,21,23}; int(*p)[4],i=1,j=2; p=a; printf(“%d\n”,*(*(p+i)+j)); } 结果: 五、程序设计题 1、随意输入两个数,求最大公约数和最小公倍数。 要求用到函数调用。 . 2、求20 ∑n! 即求(1+2! +3! +4! +……+20! ) n=1 3、用选择法对十个整数排序。 4、写一个函数,使给定的一个3行3列的二维数组转置,即: 行列互换。 5、有一字符串,包含n个字符。 写一函数,将此字符串中从第m个字符开始的全部字
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 试题 前八套 答案