十套C语言试题及前八套答案.docx
- 文档编号:18286663
- 上传时间:2023-08-15
- 格式:DOCX
- 页数:92
- 大小:61.43KB
十套C语言试题及前八套答案.docx
《十套C语言试题及前八套答案.docx》由会员分享,可在线阅读,更多相关《十套C语言试题及前八套答案.docx(92页珍藏版)》请在冰点文库上搜索。
十套C语言试题及前八套答案
试题一
一、填空题(每题2分,共20分)
1.表示条件:
10
2.执行语句:
for(i=1;i++<4;)后,变量i的值是 4 。
3.在C语言中,写一个十六进制的整数,必须在它的前面加上前缀
ox。
4.利用减1运算符“--”,下面的两个语句
b=5+a:
a-=1
表达的功能,可以由一个语句来实现。
这个语句是 b=5+(a--) 。
5.任何一个数组的元素都具有相同的名字和储存空间。
6.有说明语句:
intx[][4]={{1},{2},{3}};那么元素x[1][1]的
取值是0。
7.在C语言中,指针就是一个地址。
8.如果指针变量p当前指向数组a的第I个元素a[i]。
那么表达式
*(--p)
的操作过程是
自减1后取第I-1个元素的地址。
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指向的元素是num[0]。
10.如果一个函数没有返回值,那么该函数的类型是void的。
二、单项选择(每题2分,共30分)
1.若变量已正确定义并赋值,下面符合C语言语法的表达式是B。
A.a:
=b+1B.a=b=c+2C.int18.5%3D.a=a+7=c+b
2.以下字符中,不正确的C语言转义字符是D。
A.\’B.\011C.\\D.\80
3.若已定义x和y为double型,则表达式x=1,y=x+3/2的值是。
A.1B.2C.2.0D.2.5
4.有如下说明,则数值为9的表达式是B。
A.*p+9B.*(p+8)C.*p+=9D.p+8
5.以下关于C语言字符数组的描述错误的是C。
A.字符数组可以存放字符串
B.字符数组中的字符串可以整体输入输出
C.可以在赋值语句中通过赋值运算符‘=’对字符数组整体赋值
D.不可以用关系运算字符数组中的字符串进行比较
6.若已定义:
inta[]={0,1,2,3,4,5,6,7,8,9},*p=a,i;
其中0≤i≤9,则对a数组元素不正确的引用是。
B
A.a[p-a]B.*(&a[i])C.p[i]D.a[10]
7.有如下程序段,执行该程序段后,a的值为B。
int*p,a=10,b=1;
p=&a;a=*p+b;
A.12B.11C.10D.编译出错
8.假如指针p1已经指向某个整型变量,要使指针p2也指向同一个变量,哪一个语句是正确的B。
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的值依次是D。
A.3,3,2B.3,2,2C.3,2,3D.2,3,2
11.若有以下定义:
int[3][2];则能正确表示t数组元素地址的表达式是B。
A.&t[3][2]B.t[3]C.t[1]D.*t[2]
12.设整型变量a,b,c均为2,表达式a+++b+++c++的值为B。
A.6B.9C.8D.表达式错误
13.以下叙述中不正确的是D。
A.在函数中,通过return语句传回函数值
B.在函数中,可以有多条return语句
C.在C中,main后的一对圆括号中也可以带有形参
D.在C中,函数的调用必须在一条独立的语句中完成
14.用B在函数间传递数据时,C语言不为形参分配新的存储区。
A.普通变量B.数组名C.数组元素D.指针变量
15.以下关于字符串与指针的描述,正确的是B。
A.字符串中的每个字符都是指针
B.可以用一个char*型指针指向字符串
C.字符串与指针等价
D.只有以“\0”结尾的字符串,才能用一个char*型指针指向其开头
三、判断题(每题1分,共10分)
1.“0x41”这个转义字符代表大写字母“A”。
(F)
2.如果数组说明中给出的初值个数小于数组长度,那么C编译会自动把剩余的元素初始话为与所列最后一个初值相同的取值。
(F)
3.若有说明:
chara[]=“abcde”;那么字符数组a的长度是6。
(Y)
4.有说明语句:
charb[10];,那么b=“china”;就把字符串“china”赋给了数组b。
(F)
5.一个指针变量中,可以存放任意类型变量的地址。
(F)
6.在C语言中,指针变量有自己的地址。
(Y)
7.有如下变量说明:
intx,*p;floaty,*q;由于P是指向int型变量的指针,q是指向float型的指针,因此p和q占用的内存字节数是不相同的。
(F)
8.在一个函数里,不能说明全局变量。
(F)
9.没有返回值的函数一定没有参数。
(F)
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的值为6。
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”);
}
结果为CDGH。
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的值为1340-95。 五、程序设计题(共28分,任选三题) 1.编写一个程序,求出所有各位数字的立方和等于1099的三位整数。 比如,379就是这样一个满足条件的三位数。 六、#include intmain() { inti,j,k; for(i=1;i<10;i++) for(j=0;j<10;j++) for(k=0;k<10;k++) if(i*i*i+j*j*j+k*k*k==1099) printf(“%d%d%d\n”,i,j,k); } 2.用函数calculate来统计一任意二维数组中负数的个数n,并返回n的值。 intcalculate(inta[4][5]) { inti,j,n=0; for(i=0;i<4;i++) for(j=0;j<5;j++) if(a[i][j]<0)n++; returnn; } main() { inta[4][5]={{-45,65,34,64,76},{67,-87,45,86,89},{-67,87,54,78,97}, {-87,56,89,78,68}}; printf(“\n%d\n”,calculate(a)); } 3.编写一个程序,它利用char型的指针变量指向一个字符串,并把字符串里的小写字母全部转换成大写字母。 #include“stdio.h” main() { charstr[80]; printf(“enterastring: ”); gets(str); p=str; while(*p! =’\0’) {if(*p>=’a’&&*p<=’z’); *p-=32; ++p; } printf(“thestringafterconversionis: %s\n”,str); } 试题二 一、填空题: 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。 #include intmain() { inti,j,k; for(i=2;i<3;i++) for(j=0;j<10;j++) for(k=0;k<10;k++) if(i+j+k==12&&i*j*k==42) printf("%d%d%d\n",i,j,k); printf("\n"); return0; } 2、打印出以下图案: * *** ***** ******* ***** *** * #include #defineN100 intmain() { intk,i,j,a[N][N],b[N],d; printf("请输入该菱形的行数(奇数): "); scanf("%d",&d); for(i=0;i { for(j=0;j { a[i][j]=''; printf("%c",a[i][j]); } for(j=0;j<2*i+1;j++) { a[i][j]='*'; printf("%c",a[i][j]); } printf("\n"); } for(k=0;k { b[k]='*'; printf("%c",b[k]); } printf("\n"); for(i=0;i { for(j=0;j<=i;j++) { a[i][j]=''; printf("%c",a[i][j]); } for(j=0;j { a[i][j]='*'; printf("%c",a[i][j]); } printf("\n"); } return0; } 试题三 一、选择题 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、
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 试题 前八套 答案
![提示](https://static.bingdoc.com/images/bang_tan.gif)