C语言考试复习专用三套题附答案(1)

C语言考试复习专用三套题附答案(1)
C语言考试复习专用三套题附答案(1)

《C语言程序设计》习题集

习题一

一、语言基础(共20分,每题2分)

(二)说明语句char s=‘\t’,使s包含了几个字符?。

A)1 B)2 C)3 D)说明有错

(三)设a=6,b=4,则表达式b*=a+3

A)3 B)18 C)

(四)若给定表达式(m)?a++:a--和

等价。

A)m==0 B)m!=0 C)m=0 D)m=1

(五)设有说明语句int a[10],则数组a包括了个数组元素。

A)1 B)9 C)10 D)20

(六)以下函数test返回值类型为。

test(int x)

{ printf(“%f\n”,(float)x);

}

A)int B)float C)void D)不确定或错误

二、阅读下列程序,写出运行结果(共18分,每题3分)

[程序1]

#include

void main( )

{ int a=1,b=4,c=2; 运行结果: 1

a=(a+b)/c;

printf(“%d \n”,--a);

}

[程序2]

void main ( )

{ char c1=67; /*‘A’的ASCII码值为65 */

if (‘A’ <=c1 && c1<=’Z’) 运行结果: 67,D

printf(“%d,%c”,c1,c1+1);

else printf(“%c”,c1); }

[程序3]

viod main ( )

{ int a=0, n=5; 运行结果: 1,5,4,3,2,0

for ( ; ; )

{ a++; n--;

printf(“%d,”,a);

a=n;

if (n==0) break;

}

printf(“%d”,a);

}

[程序4]

main ( )

{ int i, j; 运行结果: 1,2,4,8,16,32,64,128,256,512 static int a[10]={1,1,1,1,1,1,1,1,1,1};

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

for (j=0;j

a[i]=a[i]+a[j];

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

printf(“%d,”,a[i]);

}

[程序5]

int k=2;

f (int m) 运行结果: 6,8

{ m+=k;k+=m; 5,9

printf(“%d,%d \n”,m,k++);

}

main ( )

{ int i=4;

for (i++);

printf(“%d,%d \n”,i,k); }

[程序6]

void main ( )

{ static int a[10],i; 运行结果: 1 3 5 7 9

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

a[i]=i+1;

for (i=0;i<10;i=i+2)

printf(“%d”,*(a+i));

}

三、阅读分析下列程序,在处填上适当的内容使程序(或函数)完整(共21分,每空3分)

(一)以下程序输出所有大写字母和其对应的ASCII码值。

void main ( )

{ int ch;

for (ch=’A’;ch<=’Z’;ch++)

printf(“字母%c的ASCII码值是:%d\n”,ch, 1 );

}

答案: ch

(二)以下函数的功能是将一个字符串S的内容颠倒过来。

void reserve( 2 ) 答案: char s[ ]

{ int i, j, k;

for (i=0,j=strlen(s)-1; 3 ;i++,j--) 答案: i

{ k=s[i]; s[i]=s[j]; s[j]=k;}

}

四、编程题(共21分)

1. 从键盘输入3个整数,输出其中最大数。(5分)

main ( )

{ int i=0, x, mx=-32768;

while ( i++<3)

{scanf (“%d”,&x);

if (x>mx) mx=x;

}

printf (“\n %d \n”,mx);

}

2. 编写一函数uf(s),将字符串s中的第一个和最后一个字母改写成大写字母(如原来不是字母或已是大写字母,则不变)。(5分)

#include

uf (char s[])

{ int i;

i=strlen(s);

if (i==0) return;

if (s[0] >= ’a’ && s[0] <= ’z’)

s[0] += ’A’ - ‘a’;

if (s[i-1] >= ’a’ && s[i-1] <= ‘z’)

s[i-1] +=’A’–‘a’;

}

main ( )

{ char s[ ]=”asdfgh”;

uf (s);

printf(“ \n%s\n”,s);

}

3. 从键盘输入10个浮点数,输出其平均值及所有低于平均值的数。(5分)

#include

main ( )

{

float a[10], ave=0;

int i;

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

{

scanf(“%f”,&a[i]);

ave +=a[i];

}

ave /=10;

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

if (a[i]

printf(“%f\t”,a[i]);

}

习题二

一、语言基础(共20分,每题2分)

(一)若a为float类型变量,且a=4.6785,则表达式(int)(a*100+0.5)/100.0

的值为 4.68 。

(二)设有int x=11,y=10;则以下表达式的值为 10 。

x-- >y? 10:11>y++?’a’:’z’

(三)若所有变量都已正确定义为int型则执行下列程序段后x 的值为 79 。

x=80;a=10;b=16;y=9;z=0;

if (a

if(b!=15)

if(!y) x=81;

else if(!z) x=79;

(四)i,j为int型的变量,则下面程序中的循环体的执行次数为 5 。

i=1;j=0;

while(i+j<=10)

{ if (i>j j=j+2);

else i=i+2;

}

(七)若有以下函数定义:

int (*hs ) ()

{

……/*函数体*/

}

则函数hs返回的值是整形。

(九)设有以下定义:#define a 6

#define b a+4

则执行语句c=b*10(c为int型数据)后,c的值为46 。

二、阅读下列程序,写出运行结果(共20分,每题4分)

[程序1]

#include

main()

{

int i; 运行结果:i= 18,J=29.44 float j;

i=18;

j=29.4361;

printf(“i=%4d,j=%2.2f”,i,j );

}

[程序2]

main()

{ int k=10; char c=’b’;

do

swith(c++) 运行结果:12

{

case ‘a’:k++;

case ‘b’:k--;

case ‘c’:k+=3;brea k;

case ‘d’:k=k%4;

}

while(c!=’c’);

printf(“%d\n”,k );}

[程序3]

main()

{

char a[]=”computer”;

char t;

int i,j=0; 运行结果:utrpomec

for(i=0;I<8;I++)

for(j=i+1;j<8;j++)

if(a[i]

{

t=a[i];

a[i]=a[j];

a[j]=t;

}

printf(“%s”,a);

5、以下程序的输出结果为___hello wellcom______。

main( )

{ char s1[40]=" hello",s2[20]=" wellcom";

int i=0,j=0;

while(s1[i]!='\0') i++;

while(s2[j]!='\0') s1[i++]=s2[j++];

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

}

6、#include

main()

{

int i, j, x = 0;

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

{

x++;

for (j=0; j<3; j++)

{

if (j % 2) break;

x++;

}

x++;

}

printf("x=%d\n",x);

}

程序运行结果是: x=6

三、阅读下列程序,在线处填上合适的内容使程序(或函数)完整(共18分,每空2分)

1.以下程序的功能是求三个数的最小公倍数。

max (int x, int y ,int z)

{

if (x>y &&x>z )

return(x);

else if (y>=x &&y>z)

return(y) ;

else

return(z);

}

main()

{

int a,b,c,I=1,j,s;

scanf(“%d%d%d”,&a,&b,&c);

s= max(a,b,c) ;

while(1)

{

j=s*i;

if( (j%a==0)&&(j%b==0)&&(j%c==0) )

break;

i++;

}

prinf(“%d”,j);

}

四、编程题(共22分)

1.有36块砖,共36人搬,成年男子一次搬4块砖,成年女子一次搬3块砖,儿童两人抬1块砖,恰好一次全部搬完,编程求出成年男子成年女子和儿童各有多少人。(6分)main()

{int men,women,child;

for(men=0;men<9;men++)

for(womem=0;women<12;women++)

{child=36-men-women;

if((men*4+women*3+child/2.0)=36)

printf(“%d,%d,%d\n”,men,women,child);

}

3.用循环语句编程将二维数组a[3][4]的第一行和第三行对调(如下图),

并输出数组。(8分)

main()

{

int i,j,t;

int a[3][4]={2,3,4,5,3,8,10,2,7,9,3,1};

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

{

t=a[0][i];

a[0][i]=a[2][i];

a[2][i]=t;

}

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

{

for (j=0;j<4;j++)

printf(“%3d”,a[i][j]);

printf(“\n”);

}

}

习题三

一.语言基础(共20分,每题2分)

(一)正确的C语言自定义标志符是 A 。

1. A)file_bak B)abc(10)

C)continue D)class+3

(二)设int x=8,y,z;执行y = z = x ++; x = y ==z后,变量x的值是 B 。

2. A)0 B)1 C)8 D)9

(五)有如下程序

main ()

{

int x=23;

do{

printf(“%d”,x - -);

}while (! x);

}

该程序的执行结果是 B 。

5. A)321 B)23

C)不输出任何内容 D)陷入死循环

(六)定义一个具有8个元素的整型数组,应当使用语句 A 。

6. A) int a[8]; B) int a[2,4];

C) int a[ ]; D) int * a[8];

二、阅读下列程序,写出运行结果(共20分,每题4分)

【程序1】

#include

main()

{

int x = 1,a = 0,b = 0; 运行结果:a=1,b=1

switch(x){

case 0; b + +;

case 1; a + +;

case 2; a + +;b + +;

}

printf (“a = % d ,b = % d \n”,a,b);

}

【程序3】

long ff(int n) 运行结果:6

{

if (n>3)

return (ff(n-1)+ff(n-2));

else return (3);

}

main ()

{

printf (“%d\n”,ff(4));

}

【程序4】

main () 运行结果4 0 0 -4 -3:

{

int i, a[5];

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

a[i]=9*(i-2+4*(i>2))%5;

for (i=4;i>=0;i- -)

printf (“%3d”,a[i]);

}

6、以下程序的输出结果为_____ x=37___。

#define A 3

#define B(a) (A+1)*a

main()

{ int x;

x=3*A+B(7);

printf("x=%d\n",x);

}

三、阅读下列程序,在处填上适当的内容使其完整。(共20分,每空2分)

(一)下面程序用于计算n!的值。

main ()

{

int i,s,n;

s = 1;

printf (“enter n:”);

scanf(“%d”,&n);

for (i=1;i< = n;i + +)

( s=s*i );

printf (“s=%d”,s);

}

(二)从键盘上输入一行字符(不多于40个,以回车换行符作为输入结束标记),将其中的大写字母改为小写字母,其它字符不变,然后逆向输出。

main ()

{

char a[40];

int n = 0;

do{

scanf (“%c”,&a[n]);

if( (‘A’<=a[n])&&(a[n]<=’z’))

a[n] + = 32;

n + +;

}while ( a[n-1] !=‘ \n ’);

n= n-2;

while (n > = 0)

printf(“%c”,a[n--]);

}

四、编程题(共20分)

1.编写一程序,从键盘输入10个实数,计算并输出算术平均数。(7分) main()

{

int i;

float ave=0,a[10];

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

scanf(“%f”,&a[i]);

for(i=0;i<10;i++) ave+=a[i];

printf(“%10.4f\n”,ave/10);

}

2.求两个整数m和n最大公约数。(6分)

#include

main()

{

int m,n,a,b,r;

scanf(“%d,%d”,&m,&n);

a=m;

b=n;

do

{

r=a%d;

a=b;

b=r;

}while (r!=0)

printf(“%d,%d is %d\n”,m,n,a);

}

相关主题
相关文档
最新文档