admin 管理员组

文章数量: 887021


2023年12月16日发(作者:汇编语言执行效率高吗)

C语言程序设计试题及答案(九)

学号: 学习中心名称: 专业: 层次: 姓名:

题号 一 二 三 四 五 六 七 八 九 十 总分

得分

注意:所有答案都要写在答题卡上

一、单项选择题(20分,每题2分)

1.执行下列程序段后,正确的结果是(B)

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

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

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

A) 1 2 3 B) 1 5 9 C) 1 4 7 D) 3 6 9

2.若a是int类型变量,则计算表达式a=25/3%3的值是:(B)

A)3 B)2 C)1 D)0

3.下面正确的字符常量是:(C)

A)“c” B)‘’’ C)‘W’ D)‘’

4. C语言中,运算对象必须是整型的运算符是:(B)

A)% B)/ C)* D)+

5.数字字符0的ASCII值为48,若有以下程序

main()

{

char a='1', b='2';

printf("%c,",b++);

printf("%dn",b-a);

}

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

A) 3,2 B)50,2 C)2,2 D)2,50

6.以下语句或语句组中,能正确进行字符串赋值的是。(D)

A)char *sp;*sp="right!"; B)char s[10];s="right!";

C)char s[10];*s="right!"; D)char *sp="right!";

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

if(i〈=5〉 break;

则循环结束后i的值为(B)

A)0 B)1 C)5 D)10

8.执行下列程序段后,正确的结果是(C)

char x[8] = {8,7,6,5,0,0}, *s;

s = x+1;

printf(“%dn”, s[2]);

A) n B) 0 C) 5 D) 6

9.C语言规定,简单变量作为实参时,他和对应形参之间的数据传递方式是:A

A)单向值传递 B) 地址传递 C) 相互传递 D) 由用户指定方式

10.设有数组定义:char str[]=”China”;则下面的输出为(C)

printf(“%d”,strlen(str));

A)4 B)5 C)6 D)7

二、填空题(30分,每空2分)

1.下列程序段的输出结果是 3 。

int i=19, j;

j=i%4;

printf(“% d”, j);

2.已知fun1函数的功能是将三个数按由大到小的顺序调整后依次放入a,b,c三个变量中,其中a存放最大的数,利用fun2函数填空完成此功能。

void fun2(int *x,int *y)

{

int t;

t=*x; *x=*y; *y=t;

}

void fun1()

{

int a=20, b=30, c=25;

if(c>b) fun2(__&c,&b____);

if(a

if(a

}

3.已知字符A的ASCII代码值为65,以下程序运行时若从键盘输入:B33<回车>,则输出结果是 1 B 。

#include

main()

{

char a,b;

a=getchar();

scanf("%d",&b);

a=a-'A'+'0';

b=b*2;

printf("%c %cn",a,b);

}

4.以下程序运行后的输出结果是 4 3 5 。

main()

{

int a=3,b=4,c=5,t=99;

if(b

if(a

printf("%d %d %dn",a,b,c);

}

5.若已知a=10,b=20,则表达式!a

6.若s是unsigned int型变量,则下面表达式的值是__1__。

s%2+(s+1)%2

7.下面程序将字符数组a复制到字符数组b中。

main()

{

char a[]="I am a boy.",b[20];

int i;

for(i=___0____;a[i]!='0';i++)

{

__b[i]=a[i]___________;

}

__b[i]=’0’__;

}

8.若有int a[3][2] = {{1},{3,2},{4,5}};,则a[1][1]的值是 2 。

9.有以下程序,执行后输出结果是 0 。

main( )

{

int t=1,i=5;

for(;i>=0;i--) t*=i;

printf("%dn",t);

}

10.在循环语句中,break语句的作用是 是用来跳出当前一层循环的 ,continue语句的作用是 终止本次循环。

三、写出程序的运行结果(30分,每题10分)

1.写出程序运行后的输出结果

main()

{

int a=1,b;

for(b=1;b<=10;b++)

{

if(a>=8) break;

if(a%2==1)

{

a+=5;

continue;

}

a-=3;

}

printf("%dn",b);

}

输出结果:b=4

2.写出程序运行后的输出结果

#include

char *ss(char *s)

{

return s+strlen(s)/2;

}

main( )

{ char *p,*str="abcdefgh";

p=ss(str);

printf("%sn",p);

}

输出结果:efgh

3.写出程序运行后的输出结果

int f1(int x,int y){return x>y?x:y;}

int f2(int x,int y){return x>y?y:x;}

main()

{

int a=4,b=3,c=5,d=2,e,f,g;

e=f2(f1(a,b),f1(c,d));

f=f1(f2(a,b),f2(c,d));

g=a+b+c+d-e-f;

printf("%d,%d,%dn",e,f,g);

}

4,3,7

四、编程(完形填空)(20分,每题10分)

1.以下程序中函数huiwen的功能是检查一个字符串是否是回文,当字符串是回文时,函数返回字符串:yes!,否则函数返回字符串:no!,并在主函数中输出,所谓回文即正向与反向的拼写都一样,例如:adgda。请填空。

#include

#include

char *huiwen(char *str)

{

char *p1,*p2;

int i,t=0;

p1=str;

p2=_____ str+strlen(str)-1____; str+strlen(str)

for(i=0;i<=strlen(str)/2;i++)

if(*p1++!=*p2--)

{

t=1;

break;

}

if(_t==0或!t _ ) t==0

return("yes!");

else

return("no!");

}

main()

{

char str[50];

printf("Input:");

scanf("%s",str);

printf("%sn",___ huiwen(str) _____ ); huiwen(srt)

}

2.下面程序完成以下功能:

(1)trans()函数将二维数组a进行转置,即行列互换,如下图所示;

1 2 3 4 1 2 5 7

2 4 6 9 2 4 8 1

5 8 9 7 3 6 9 6

7 1 6 21 4 9 7 21

转置前 转置后

(2)findmin()函数求新数组中对角线(左上到右下)上的最小元素的值;请将程序填写完整。

void trans(int b[4][4]) /*转置函数*/

{

int i,j,temp;

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

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

{

temp=b[i][j];

b[i][j]=b[j][i];

b[j][i]=temp;

}

}

int findmin(int b[4][4]) /*求对角线上最小的元素*/

{

int min,i,j;

min=_______;

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

{

if(__b[i][i]

min=_ b[i][i]_ ___;

}

return min;

}

main()

{

int i,j;

int a[4][4],min;

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

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

scanf("%d",&a[i][j]);

trans(a);

printf(“the result is:”);

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

{

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

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

printf("n");

}

min=_findmin(a)__;

printf("the min is%5dn",min);

}


本文标签: 函数 数组 输出 字符 结果