文档库 最新最全的文档下载
当前位置:文档库 › c语言期末复习试题

c语言期末复习试题

c语言期末复习试题
c语言期末复习试题

试卷编号:11201

所属语言:试卷方案:试卷总分:共有题型:C 语言

C 语言期末考试100 分

4种

一、单项选择共30 题(共计60 分)第1

题设有定义分)

:int k=0;, 以下选项的四个表达式中与其他三个表达式的值不相同的是( A ).

A:k++

B:k+=1

C:++k

D:k+1

分)

第2题

已知int i=5, 执行语句i+=++i 后, i 的值是( C).

A:10

B:11

C:12

D:A、B、C都不对

第3题(分)

以下程序的功能是: 给r 输入数据后, 计算半径为r 的圆面积s. 程序在编译时出错.

#include <>

void main( )

/* Beginning */

{ int r; float s;

scanf("%d",&r);

s=p*r*r;

printf("s=%f\n",s);

出错的原因是(D ).

A: 注释语句书写位置错误

B: 存放圆半径的变量r 不应该定义为整型

B:-3

C :输岀语句中格式描述符非法

D: 计算圆面积的赋值语句中使用了非法变量

A:1

B:2

C:-1

D:-2

第 6题 (分) 有以下程序 : #include <> void main( )

{ int s=0, a=1, n; scanf("%d", &n); do{

s+=1; a=a — 2;

}while (a!=n );

printf ("%d\n", s );

}

若要使程序的输岀值为 2, 则应该从键盘输入给 n 的值是 ( B ).

A:-1

第 4题 (分)

"ABC " 〃的长度是(B ). A:11

B:7 C:5 D:3 第 5题 (分) 已知 int

j,i=1;, 执行语句j= - i++;后,j 的值是(C ).

第 10 题 (分)

C:-5

D:0

第7题 (分) 执行以下程序后 , 输出的结果是 ( D ).

#include <> void main( )

{ int y=10;

do{

y --;

}while( - - y);

printf("%d\n",y }

A:-1

B:1

C:8

D:0

#include <> void main( )

{ int i,j;

for(i=0,j=1; i<=j+1; i+=2, j

}

A:3

B:2

C:1

D:0

第9题 (分) 有以下程

序段 : int k=0;

while (k=1)k++;

while 循环执行的次数是

A:无限次

B: 有语法错误 , 不能执

行 C:1 次也不执行

D: 执行 1 次

第8题 (分) 以下循环

体的执行次数是 ( C ).

);

(A ).

-)printf("%d\n",i);

#include <> void main( )

{ int m,n,p;

scanf("m=%dn=%dp=%d",&m,&n,&p);

printf("%d%d%d\n",m,n,p);

}

若想从键盘上输入数据,使变量m中的值为123,n中的值为456,p中的值为789,则正确的输入是( A ). A:m=123n=456p=789

B:m=123 n=456 p=789

C:m=123,n=456,p=789

D:123 456 789

第11 题 (分)

设变量已正确定义, 以下能正确计算f=n! 的程序段是(D)

A:f=0; for(i=1;i<=n;i++) f*=i;

B:f=1; for(i=1;i

C:f=1; for(i=n;i>1;i++) f*=i;

D:f=1;

for(i=n;i>=2;i -)f*=i;

第12 题 (分)

在下列程序中, 没有构成死循环的程序段是( B ).

A: int i=100;

while(1)

{i=i%100+1;

if(i>100) break;}

B:int k=1000; do {++k;} while(k>=10000);

第 15 题 (分)

D:int s=36; while(s); --s;

第 13 题 (分) 有如下程序 : #include <> void main( ) { int n=9;

while(n>6)

{ n--;printf("%d",n);}

}

该程序段的输出结果是 ( B ).

A:987

B:876

C:8765

D:9876

第 14 题 (分) 以下程序的输出结果是

D ). #include <> void main( ) { int x=10,y=10,i;

for(i=0;x>8;y=++i)

A:10 1 9 2

B:9 8 7 6

C:10 9 9 0

D:10 10 9 1

printf("%d %d ",x }

-,y);

#include<> void main( )

{ int n[5]={0,0,0},i,k=2;

for(i=0;i

{ printf("%d\n",n[k]);}

}

该程序的输出结果是( D ).

A:不确定的值

B:2

C:1

D:0

第16 题 (分) 下列程序执行后的输出结果

是( A ).

#include<> void main( )

{ char arr[2][4];

strcpy(arr,"you"); strcpy(arr[1],"me");

arr[0][3]='&';

printf("%s \n",arr);

}

A:you&me

B:you

C:me

D:err

第17 题 (分) 以下程序的输出结果是

( C ). #include<> void main( )

{ int i, x[3][3]={1,2,3,4,5,6,7,8,9};

for(i=0;i<3;i++) printf("%d,",x[i][2

-i]);}

A:1,5,9,

B:1,4,7,

C:3,5,7,

D:3,6,9,

第 18 题 (分) 以下数组定义中不正确的

是 ( D ).

A:int a[2][3];

B:int b[ ][3]={0,1,2,3};

C:int c[100][100]={0};

D:int d[3][ ]={{1,2},{1,2,3},{1,2,3,4}};

第 19 题 (分) 以下能正确定义数组并正

确赋初值的语句是

第 20 题 (分) 有以下程序 : int a=4;

int f(int n)

{

int t=0; static int a=5; if(n%2) { int a=6; t+=a++; }

else { int a=7; t+=a++; } return t+a++;

}

main( )

{

int s=a,i=0;

for( ; i<2; i++) s+=f(i);

A:in t N=5,b[N][N]; B:in t a[1][2]={{1},{3}}; C:int c[2][ ]={{1,2},{3,4}}; D:int d[3][2]={{1,2},{3,4}};

(D ).

C:3 5 3 5

printf ("d\n",s );

}

程序运行后的输出结果是 (B )

A:24

B:28

C:32

D:36

第 21 题 (分) 以下正确的函数定义形式为 (A) A:double

fun(int x, int y) B:double fun(int x; y) C:double fun(int

x; int y) D:double fun(int x, y)

第 22 题 (分)

C 语言规定,函数返回值的类型是由(D

A:return 语句中的表达式类型所决定的

B :调用该函数时的主调函数类型所决定的

C: 调用该函数时系统临时决定的

D: 在定义该函数时所指定的函数类型所决定的

输出结果是 () (注: 5353)

void swap1(int c0[ ], int c1[ ])

{ int t ;

t=c0[0]; c0[0]=c1[0]; c1[0]=t;

}

void swap2(int *c0, int *c1)

{ int t;

t=*c0; *c0=*c1; *c1=t;

}

main( )

{ int a[2]={3,5}, b[2]={3,5};

swap1(a, a+1); swap2(&b[0], &b[1]);

printf("%d %d %d %d\n",a[0],a[1],b[0],b[1]);

}

A:3 5 5 3

B:5 3 3 5

D:5 3 5 3

第 23 题 (分)

有以下程序 :

第24 题 (分) 以下程序的输出结果是( A ). amovep(int*p, int (*a)[3],int n) { int i, j;

for( i=0;i

for(j=0;j

{ *p=a[i][j];

p++; }

}

main( )

{ int *p,a[3][3]={{1,3,5},{2,4,6}};

p=(int *)malloc(100); amovep(p,a,3);

printf("%d %d \n",p[2],p[5]); free(p);

}

A)

B)

C)

D)

程序错误

第25 题 (分) 有以下函数: fun(char *a,char *b)

{ while((*a!='\0')&&(*b!='\0')&&(*a==*b))

{ a++; b++; }

return (*a —*b); }

该函数的功能是(D ).

A:计算a和b所指字符串的长度之差

B: 将 b 所指字符串复制到 a 所指字符串中

C: 将 b 所指字符串连接到 a 所指字符串后面

D: 比较 a 和 b 所指字符串的大小

第26 题(分)

有以下程序: fun(char p[ ][10])

{ int n=0,i;

for(i=0;i<7;i++)

if(p[i][0]== 'T' ) n++;

return n;

}

main( )

{ char str[ ][10]={"Mon","Tue","Wed","Thu","Fri","Sat","Sun"}; printf("%d\n",fun(str)); } 程序执行后的输出结果是( B ).

A:1

B:2

C:3

D:0

第27 题(分)有以下程序: main( )

{ char str[][10]={"China","Beijing"},*p=str; printf("%s\n",p+10);

} 程序运行后的输出结果是( B ). A:China

B:Beijing

C:ng

D:ing

第28 题(分)有以下程序: #define f(x) (x*x) main( ) { int i1, i2;

i1=f(8)/f(4) i2=f(4+4)/f(2+2)

printf("%d,%d\n",i1,i2);

}

程序运行后的输出结果是( C ).

A:64, 28

B:4, 4

C:4, 3

D:64, 64

结果是( A )

void change(int k[ ]) { k[0]=k[5]; } main( ) { int x[10]={1,2,3,4,5,6,7,8,9,10},n=0;

while(n<=4) { change(&x[n]); n++; } for(n=0;n<5;n++) printf("%d",x[n]);

printf("\n");

}

A:678910

B:13579

C:12345

D:62345

第 30 题 (分)

在以下程序中,能够通过调用函数 fun(),使main()函数中的指针变量 p 指向一个合法的整型单

元的是 (C ).

A:main( )

int *p;

fun(p);…} int fun(int *p) { int s;

p=&s; }

B:main( )

{ int *p;

fun(&p); …} int fun(int **p) { int s;

*p=&s; } C:#include <> main( )

{ int *p;

第 29 题 (分) 有以下程序 : A) 678910

B) 13579

C) 12345

D) 62345

fun(&p);…}

int fun(int **p)

{ *p=(int*)malloc(2); }

D:#include <>

main( )

{ int *p;

fun(p); … }

int fun(int *p)

{ p=(int*)malloc(sizeof(int)); }

二、程序填空共 1 题(共计10 分)第1题(分)

/* ----------

【程序填空】

功能:计算平均成绩并统计90 分以上人数。

*/

main()

{

int n,m;float grade,average;

/***********SPACE***********/ average=n=m= 【】;

f%d\n",average/n,m);

}

三、程序改错共 1 题 (共计10 分) 第1

题 (分)

/* --------------------------------------

【程序改错】

功能:首先把 b 所指字符串中的字符按逆序存放,然后将 a 所指字符串中的字符和 b 所指字符串中的字符,按排列的顺序交叉合并到 c 所指数组中,过长的剩余字符接在 c 所指数组的尾部。例如:当 a 所指字符串中的内容为“ abcdefg”, b 所指字符串中的内容为“ 1234”时, c 所指数组中的内容应该为“ a4b3c2d1 efg ”;而当a所指字符串中的内容为“ 1234”,b所指字符

串中的内容为“ abcdefg"时,c所指数组中的内容应该为“1g2f3e4dcba” 。

*/

#include <>

#include <> #include <> void fun( char *a, char *b, char *c ) { int i , j;

char ch;

i = 0;

j = strlen(b)-1;

/**********FOUND**********/

while ( i > j ) { ch = b[i]; b[i] = b[j]; b[j]

= ch; i++; j--;

}

/**********FOUND**********/

if ( *a ) {

*c = *a;

c++;

/**********FOUND**********/

if ( *b )

{

*c = *b;

c++; b++;

}

}

*c = 0;

}

main()

{

char s1[100],s2[100],t[200];

clrscr();

printf("\nEnter s1 string : ");

scanf("%s",s1); printf("\nEnter s2

string : ");

while ( *a &&*b ) { /

/

此处 &&改为 ||( 逻辑或 ) a+; } // 此处 a++

// 此处 > 改为 <

scanf("%s",s2);

fun( s1, s2, t ); printf("\nThe result

is : %s\n", t );

}

四、程序设计共 1 题 (共计20 分) 第1题(分)

/* --------------------------------- 程序设计】

功能:判断一个整数w的各位数字平方之和能否被

5整除,

可以被 5 整除则返回1,否则返回0。

*/

#include "" #include"" int fun(int w)

{

/**********Program**********/

int s=0,m=w;

while(m) {s+=(m%10)*(m%10);m/=10;} if (s%5==0) return 1;

else return 0;

/********** End **********/ main()

{

int m;

printf("Enter m: ");

scanf("%d", &m);

printf("\nThe result is %d\n", fun(m)); yzj();

getch();

}

yzj()

{

FILE *IN,*OUT; int c ;

int t; int o;

IN=fopen("","r");

if(IN==NULL)

{

printf("Read File Error"); } OUT=fopen("","w");

if(OUT==NULL)

{

printf("Write File Error"); } for(c=1;c<=5;c++)

{

fscanf(IN,"%d",&t);

o=fun(t);

fprintf(OUT,"%d\n",o);

}

fclose(IN); fclose(OUT);

}

相关文档