C语言考试练习题.docx
《C语言考试练习题.docx》由会员分享,可在线阅读,更多相关《C语言考试练习题.docx(79页珍藏版)》请在冰点文库上搜索。
C语言考试练习题
第一套
单选题:
1.fun(floatx)
{
printf("good");
}
上面所定义的函数fun_D___。
A返回值为void类型
B没有返回值
C返回值为float类型
D返回值为int类型
2.对二维数组a正确说明的是_A__。
Adoublea[1][4];
Bfloata(3,4);
Cinta[3][];
Dfloata(3)(4);
3.若想打开已经存在的文件test.dat仅用于读取,则应选择的语句是__D__。
Afp=fopen("test.dat","a");
Bfp=fopen("test.dat","w");
Cfp=fopen("test.dat","w+");
Dfp=fopen("test.dat","r");
4.设k和j的二进制形式分别为00101011和10010101,则k&j的结果为_A___。
A00000001
B10111111
C01000000
D以上都不对
5.若有说明
staticinta[][4]={1,2,3,4,5,6,7,8,9};
则此二维数组的第一维长度为__B__。
A2
B3
C4
D不确定
6.以下定义语句中正确的是_C___。
Achara='A'b='B';
Bfloata=b=10.0;
Cinta=10,*b=&a;
Dfloat*a,b=&a;
7.若有:
chara[]="ABCD";
charb[]={'A','B','C','D'};
则_D___。
Aa和b完全相同
Ba和b长度相同
Ca数组比b数组短
Da数组比b数组长
8.若有:
chara[10],b[10];
则以下正确的输入格式为_B___。
Agets(a,b);
Bscanf("%s%s",a,b);
Cscanf("%s%s",&a,&b);
Dgets("a"),gets("b");
9.以下不正确的描述为__D__。
A主函数main不能被其它函数调用
B调用函数时,实参可以是表达式
C调用函数时,将为形参分配内存
D以上说法只有一个是正确的。
10.有以下程序
main()
{
chara,b,c,d;
scanf("%c,%c,%d,%d",&a,&b,&c,&d);
printf("%c,%c,%c,%c",a,b,c,d);
}
若运行时从键盘上输入:
6,5,65,66<回车>。
则输出结果是__A__。
A6,5,A,B
B6,5,65,66
C6,5,6,5
D6,5,6,6
11.intk=3;
while(k=2)k--;
该循环的循环体执行的次数为_B___。
A0
B无限循环
C2
D3
12.inta=b=c=9;
printf("%d%d%d",a,b,c);
对于以上程序段的正确说法是__C__。
A输出119
B输出111
C存在语法错误
D输出999
13.若有:
charw[]="ABCD";
printf("%s",w+1);
则如下说法正确的是_D___。
A有语法问题,所以不能输出
B输出B
C输出ABCD
D输出BCD
14.若有
inta=4,b;
b=a>>2;
则_A___是错误的。
A变量a的存储空间由8位变成10位
B表达式b=a>>2与表达式b=(a>>2)等价
C在C语言中,符号>>是位的右移运算符
D变量b的值为1
15.在C语言中,对于存储类型为__B__的变量,只有在使用它们时才占用内存单元。
Astatic和auto
Bauto和register
Cregister和static
Dregister和extern
16.inta=0,b=1,c=1;
if(b=a)c=a+b;
printf("%d",c);
的输出结果为_B___。
A0
B1
C2
Da+b
17.若有语句:
intx[]={0,1,2,3,4,5},*ptr=x;
则__C__是对数组元素的正确引用。
Ax
B*x[3]
C*(++ptr)
D*(--ptr)
填空题:
1.如果被调用函数定义在主调函数之_前___,被调用函数可以不声明。
(填写前或后)
2.do{
语句
}while(表达式);
对于上面的循环结构,循环体至少执行_1___次。
3.执行如下程序段:
intc,a=12;
if(a!
=0)
if(a==1)
c=1;
else
c=3;
则c的值为__3__。
4.若执行下面2条语句:
inta=2,b=3;
a=a^b;
则a的值为__1__。
5.若有
structstu
{
floata;
charb[5];
}m;
则m在内存中占__9__个字节。
6.staticinta[3];则数组a最后一个元素的值为__0__。
7.若有
floata[3]={1,2,3};
FILE*fp=fopen("d:
\\s.dat","wb");
则用fwrite函数向s.dat文件中写入数组a所有元素值的正确写法是fwrite(a,4,_3___,fp);。
改错题:
题目要求:
求数组元素中最大者。
共有2行有错误,每个/*****found*****/以下的部分有1行。
请寻找错误行并分别改正。
其它内容不许改动;不许增加行,也不许删除行。
作题步骤:
先下载保存到D:
盘,然后作题、保存、上传。
#include"stdio.h"
/*************found************/
g(intb[],m)/*改为g(intb[],intm)*/
{inti,y;
y=b[0];
for(i=1;i/*************found************/
if(y>b[i])/*改为if(y
y=b[i];
returny;
}
main()
{inta[4]={6,8,2,5},max,m=4;
max=g(a,m);
printf("%d\n",max);
}
完善题:
题目要求:
将两个数按从大到小的顺序输出。
共有2处需要完善,分别被标识为
(1),
(2)。
作题时请去掉这两个标识,在相应位置上填写适当内容,其它部分不得改动。
作题步骤:
先下载保存到D:
盘,然后作题、保存、上传。
#include"stdio.h"
main()
{
int*p1,*p2,*p,a,b;
scanf("%d,%d",&a,&b);
p1=&a;
(1);/*
(1)应填p2=&b;*/
if(a
{
p=p1;
p1=p2;
p2=p;
}
printf("max=%d,min=%d\n",
(2),*p2);/*
(2)应填*p1*/
}
编程题:
编写一个名为fun的函数实现将数组a的n个整数中的最小数与最后面的数互换,而其它元素不变.
例如,若有a[5]={34,1,2,56,4};,则调用fun函数后,数组元素的排列顺序为34,4,2,56,1.
(不要改动已有的代码,仅在fun的函数体中填写若干语句)
作题步骤:
先下载保存到D:
盘,然后作题、保存、上传。
#include"stdio.h"
fun(intw[],intn)
{inti,min=0,t;
for(i=1;iif(w[min]>w[i])
min=i;
t=w[n-1];
w[n-1]=w[min];
w[min]=t;
}
main()
{
inti,a[5]={34,1,2,56,4};
fun(a,5);
for(i=0;i<5;i++)
printf("%d,",a[i]);
}
第二套
单选题:
1.关于return语句,正确的是_D___。
A返回值必须用圆括弧()括起来
B不可以为表达式
C不能返回一个指针
D不能返回多个值
2.floata=8.04;
intb=(int)a;
printf("%d",b);
则上面程序的输出为__A__。
A8
B8.04
C8.0
D0
3.以下叙述中错误的是_B___。
AC语句必须以分号结束
B空语句出现在任何位置都不会影响程序运行
C复合语句在语法上被看作一条语句
D赋值表达式末尾加分号就构成赋值语句
4.关于inta[5];正确的说法是_B___。
A最大下脚标是5
B所有元素为整型
C最小下脚标是1
D数组名为a[0]
5.charc='a';
switch(c)
{
case'a':
pritnf("%c",c);break;
case'b':
printf("%c",c);
}
以上程序段的输出为_B___。
Aaa
Ba
Caaa
Daac
6.以下程序的输出结果是_D___。
main()
{
intx=10,y=14,i;
for(i=0;x>8;y=++i)
printf("%d%d",x--,y);
}
A10192
B1014915
C101490
D101491
7.关于C语言的描述正确的是_D___。
AC语言是面向对象的程序设计语言
BC语言无法实现结构化的程序设计
CC语言程序只能在DOS环境下运行
DC语言支持结构化的程序设计方法
8.如下循环执行的次数是_C___。
for(i=1;i<=5;i++)
printf("HELLO")
A3
B4
C5
D6
9.若用数组名作为函数参数,则_A___。
A实参和形参类型必须一致
B实参和形参数组长度必须要相同
C形参必须要指定长度
D实参数组要有下标
10.inti=5;
do{i--;}while(i==1);
printf("%d",i);
上面程序段的输出为_C___。
A0
B5
C4
D无限循环
11.以下正确的叙述是_C___。
AC语言的主函数是无参函数。
BC语言的主函数最多允许有2个参数
CC语言的主函数最多允许有1个参数
DC语言的主函数可以有2个以上参数
12.下列四项中定义数组的正确方式是_B___。
Aintn;
scanf("%d",&n);
inta[n];
B#defineN5
inta[N];
Cinta(3);
Dinta[3][];
13.如果想在现有文件的末尾追加一些数据,则不可以用下列方式打开文件_D___。
A"r+"
B"a"
C"a+"
D"w+"
14.inta=0,b=1,c=1;
if(b=a)c=a+b;
printf("%d",c);
的输出结果为_B___。
A0
B1
C2
Da+b
15.设ptr1和ptr2均为指向同一个int型一维数组的指针变量,k为int型变量,则下面不能正常执行的赋值语句是_C___。
Ak=*ptr1+*ptr2
Bptr1=ptr2
Cptr2=k
Dk=*ptr1*(*ptr2)
填空题:
1.用于关闭文件的函数的函数名为_fclose___。
2.从用户的角度看,函数有自定义函数和_库___函数。
3.十进制的15等于八进制的_17___。
4.for(i=0,j=0;i<4;i++,j++)
printf("%d",i);
printf("%d",j);
上面程序段后打印出的结果为_01234___。
5.若有语句:
inta[5];
则将数组第一个元素赋值为2的语句应写成_a[0]=2;___。
6.设整型变量a的初始值为2,则执行下面程序段:
switch(a)
{
case2:
a++;
case3:
a++;
default:
a++;
}
后a的值为__5__。
7.inti=0,sum=0;
for(i=0;i<=5;i++)
sum+=i;
i++;
执行上面程序段以后,i的值为__7__。
8.若有
floata[3]={1,2,3};
FILE*fp=fopen("d:
\\s.dat","wb");
则用fwrite函数向s.dat文件中写入数组a所有元素值的正确写法是fwrite(a,4,____,fp);。
9.inti=0,sum=0;
for(;sum>=0;++i)
sum+=--i;
执行上面程序段以后,sum的值为____。
改错题:
题目要求:
输入4个学生的成绩,调用排序函数对其降序排列后输出成绩。
共有2行有错误,每个/*****found*****/以下的部分有1行。
请寻找错误行并分别改正。
其它内容不许改动;不许增加行,也不许删除行。
作题步骤:
先下载保存到D:
盘,然后作题、保存、上传。
#include"stdio.h"
main()
{inti,a[4];
printf("Enterthearray\n");
for(i=0;i<4;i++)
scanf("%d",&a[i]);
/*************found************/
sort(&a,4);/*改为sort(a,4);*/
printf("Thesortedarray:
\n");
/*************found************/
for(i=0;i<4;i++)
printf("%d",&a[i]);/*改为printf("%d",a[i]);*/
}
sort(intx[],intn)
{inti,j,t;
for(i=0;ifor(j=i;jif(x[i]<=x[j])
{t=x[i];
x[i]=x[j];
x[j]=t;
}
}
完善题:
题目要求:
fun函数的功能是:
使数组上半三角元素中的值乘以m。
如:
若m的值为2,a数组中的值为:
197
238
456
则返回主程序后a数组中的值应为:
21814
2616
4512
共有2处需要完善,分别被标识为
(1),
(2)。
作题时请去掉这两个标识,在相应位置上填写适当内容,其它部分不得改动。
作题步骤:
先下载保存到D:
盘,然后作题、保存、上传。
#include"stdio.h"
#defineN3
fun(inta[][N],
(1))/*
(1)应填intm*/
{
inti,j;
for(i=0;ifor(
(2);j(2)应填j=i*/
a[i][j]=m*a[i][j];
}
main()
{
inta[N][N]={1,9,7,2,3,8,4,5,6},i,j,n=2;
printf("*****Thearray*****\n");
for(i=0;i{
for(j=0;jprintf("%4d",a[i][j]);
printf("\n");
}
fun(a,n);
printf("*****THERESULT*****\n");
for(i=0;i{
for(j=0;jprintf("%4d",a[i][j]);
printf("\n");
}
}
编程题:
编写一个名为fun的函数,实现对整型数组元素作如下操作:
a[0]=a[0]+a[1],a[1]=a[1]+a[2]...
即每一个元素等于它本身与下一个元素之和,最后一个元素值不变,
例如:
若原来的数组为:
8,9,1,0,4,则新数组为17,10,1,4,4.
(不要改动已有的代码,仅在fun的函数体中填写若干语句)
作题步骤:
先下载保存到D:
盘,然后作题、保存、上传。
#include"stdio.h"
fun(intw[],intn)
{inti;
for(i=0;i<=n-2;i++)
w[i]=w[i]+w[i+1];
}
main()
{
inti,a[5]={8,9,1,0,4};
for(i=0;i<5;i++)
printf("%d",a[i]);
fun(a,5);
printf("\n");
for(i=0;i<5;i++)
printf("%d",a[i]);
}
第三套
单选题:
1.若x是整型变量,pb是指向整型的指针变量,则正确的赋值表达式是__C__。
Apb=x;
B*pb=&x;
Cpb=&x;
D*pb=*x;
2.在C语言中,引用数组元素时,其数组下标的数据类型允许是_C__。
A整型常量
B整型表达式
C整型常量或整型表达式
D任何类型的表达式
3.下面_B__是正确的字符常量。
A"\\"
B'W'
C"c"
D'ss'
4.关于数组的说法不正确的是__D__。
A是数据有序的组合。
B可以在定义时给数组元素赋值。
C数组名定义规则与变量名定义规则相同。
D每个数组的元素可以是多种数据类型的集合。
5.若有定义:
#definePi3.1415926
且fun函数的功能是以r为半径求圆的面积,则求解最精确的方法为__D__。
Afun(floatr)
{
returnPi*r*r;
}
Bintfun(floatr)
{
returnPi*r*r;
}
Cvoidfun(floatr)
{
returnPi*r*r;
}
Dfloatfun(floatr)
{
returnPi*r*r;
}
6.若有:
chara=97;
printf("%c",a++);
则_B___。
A输出的是98
B输出ASCII码为97的字符
C输出的是97
D输出的是字符常量b
7.如下说法不正确的是_B___。
Amain函数可以带参数
Bmain函数和其他函数可以互相调用
Cmain(argc,argv)中的第一个参数是整型
D一个C程序只有一个main函数
8.chars[]="welcome";
printf("%c",____);
已知上面程序段能够输出字符w,以下不正确的填写方式是__D____。
A*s
Bs[0]
C*(s+0)
D*(s+1)
9.在一个程序文件中定义的全局变量的作用域为_B___。
A文件的全部范围
B从定义该变量的位置开始至本文件结束
C本函数的全部范围
D本程序的全部范围
10.若a,b均为int型变量,则对下面的for循环语句
for(b=50,a=50;a!
=b;++a,b++)
printf("Hello!
");
正确判断是_C___。
A循环体只执行一次
B是死循环
C循环体一次也不执行
D循环多于一次
11.使用strcpy函数应该包含头文件_C___。
Astdio.h
Bconio.h
Cstring.h
Dmath.h
12.选择正确的说明语句_C___。
Ainta=5;
intb[a];
Binta[3,4];
Cint*a[10];
Dinta[][];
13.若有:
intx=43,y=0;
charch='A';
则表达式(x>=y&&ch<'B'&&!
y)的值为_B___。
A0
B1
C语法错
D"假"
14.w为整型变量,则以下循环执行的次数是_B___。
for(w=3;w>1;)
printf("%d",w--);
A1
B2
C3
D4
15.若有:
staticintx[]={1,3,5,7,9,11},*ptr,k;
ptr=x;
且k大于等于0、小于6,对数组元素地址的正确表示是_A___。
A&ptr[k]
B&ptr
Cx++
D&(x+1)
填空题:
1.逻辑运算符!
比逻辑运算符||的优先级_高___。
(填高或低)
2.在c语言中,注释是以/*开始的,以_*/___结束的。
3.如果fp所指向文件的文件位置指针当前状态是"文件结束",则feof(fp)的值为_1___。
4.设i为整型变量,初始值为3,则语句printf("%d",i++);打印的是__3__。
5.inti=0,sum=0;
while(i<=2)
{
sum=sum+i;
i++;
}
执行上面程序段以后,sum的值为_3___。
6.如下语句的输出为_"___。
printf("\"");
7.inti=0,sum=0;
for(;sum>=0;++i)
sum+=--i;
执行上面程序段以后,sum的值为_-1___。
8.填入适当内容,使下面程序段的输出为2。
structstu
{
intnum;
intage;
}s[3]={1,2,3,4,5,6},*p;
p=s;
printf("%d",p_->age__);
改错题:
求字符串中大、小写字母个数。
例如,对于"ThisIsADog.",main函数应输出4和6。
共有2行有错误,每个/*****found*****/以下的部分有1行。
请寻找错误行并分别改正。
其它内容不许改动;不许增加行,也不许删除行。
作题步骤:
先下载保存到D:
盘,然后作题、保存、上传。
#include"stdio.h"
/*************found************/
count(chars1[],intx,inty)/*改为count(chars1[],int*x,int*y)*/
{inti=0;
while(s1[i]!
='\0')
{if(s1[i]>='A'&&s1[i]<='Z')
/*************found*