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.数字字符0ASCII值为48,若有以下程序
main()
{
c语言程序分析题及答案char a='1’, b=’2';
printf(”%c,”,b++);
printf(”%d\n”,b-a);
}
程序运行后的输出结果是。(B)
A 3,2        B50,2        C2,2            D2,50
6.以下语句或语句组中能正确进行字符串赋值的是。(D)
Achar *sp;*sp=”right!”;            Bchar s[10];s=”right!";
Cchar s[10];*s=”right!";            Dchar *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(“%d\n", s[2]);
    A) n        B) 0      C) 5      D) 6
9C语言规定,简单变量作为实参时,他和对应形参之间的数据传递方式是: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<c)  fun2(__&a,&c____);
if(a〈b)  fun2(__&a,&b____);
}
 
3.已知字符AASCII代码值为65,以下程序运行时若从键盘输入:B33<回车,则输出结果是 1 B  
    #include  <stdio.h〉
main()
{ 
char a,b;
        a=getchar();
scanf(”%d",&b);
        a=a-'A’+’0';
b=b*2;
        printf("%c %c\n”,a,b);
4.以下程序运行后的输出结果是 4 3 5  .
main()
int a=3,b=4,c=5,t=99;
    if(b〈a && a<c) { t=a;a=c;c=t;}
    if(a<c && b<c) {t=b;b=a;a=t;}
    printf("%d %d %d\n”,a,b,c);
5.若已知a=10,b=20,则表达式!a<b的值是___0______
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]的值是
9.有以下程序,执行后输出结果是  0 
main( )
{
int t=1,i=5;
    for(;i〉=0;i-—)  t*=i;
    printf(”%d\n”,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(”%d\n",b);
}
 
输出结果:b=4
2写出程序运行后的输出结果
#include <string。h〉
char *ss(char *s)
{
    return s+strlen(s)/2;
}
main( )
{  char *p,*str="abcdefgh";
  p=ss(str); 
  printf("%s\n",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,%d\n",e,f,g);
 
4,3,7
四、编程(完形填空)(20分,每题10分)
1.以下程序中函数huiwen的功能是检查一个字符串是否是回文,当字符串是回文时,函数返回字符串:yes!,否则函数返回字符串:no!,并在主函数中输出,所谓回文即正向与反向的拼写都一样,例如:adgda。请填空。
#include 〈stdio。h〉
#include 〈string。h>
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("%s\n”,___ 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
转置前                转置后
2findmin()函数求新数组中对角线(左上到右下)上的最小元素的值;请将程序填写完整。
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___)
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);

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。