C语言考试练习题.docx

上传人:b****6 文档编号:15404293 上传时间:2023-07-04 格式:DOCX 页数:79 大小:284.99KB
下载 相关 举报
C语言考试练习题.docx_第1页
第1页 / 共79页
C语言考试练习题.docx_第2页
第2页 / 共79页
C语言考试练习题.docx_第3页
第3页 / 共79页
C语言考试练习题.docx_第4页
第4页 / 共79页
C语言考试练习题.docx_第5页
第5页 / 共79页
C语言考试练习题.docx_第6页
第6页 / 共79页
C语言考试练习题.docx_第7页
第7页 / 共79页
C语言考试练习题.docx_第8页
第8页 / 共79页
C语言考试练习题.docx_第9页
第9页 / 共79页
C语言考试练习题.docx_第10页
第10页 / 共79页
C语言考试练习题.docx_第11页
第11页 / 共79页
C语言考试练习题.docx_第12页
第12页 / 共79页
C语言考试练习题.docx_第13页
第13页 / 共79页
C语言考试练习题.docx_第14页
第14页 / 共79页
C语言考试练习题.docx_第15页
第15页 / 共79页
C语言考试练习题.docx_第16页
第16页 / 共79页
C语言考试练习题.docx_第17页
第17页 / 共79页
C语言考试练习题.docx_第18页
第18页 / 共79页
C语言考试练习题.docx_第19页
第19页 / 共79页
C语言考试练习题.docx_第20页
第20页 / 共79页
亲,该文档总共79页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

C语言考试练习题.docx

《C语言考试练习题.docx》由会员分享,可在线阅读,更多相关《C语言考试练习题.docx(79页珍藏版)》请在冰点文库上搜索。

C语言考试练习题.docx

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;i

if(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;i

for(j=i;j

if(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;i

for(

(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;j

printf("%4d",a[i][j]);

printf("\n");

}

fun(a,n);

printf("*****THERESULT*****\n");

for(i=0;i

{

for(j=0;j

printf("%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*

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 其它模板

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2