《C程序设计》期末试卷A【含答案】

一、选择题(每题2分 共30分)

 1.C语言中,int类型数据占2个字节,则long类型数据占( )

A、1个字节      B、2 个字节       C、3个字节      D、4个字节

 2.以下说法中正确的是( )

A、C语言程序总是从第一个定义的函数开始执行

    B、在C语言程序中,要调用的函数必须在main()函数中定义

    C、C语言程序总是从main()函数开始执行

D、C语言程序中的main()函数必须放在程序的开始部分

 3.下面的程序会( )

    main()

    { int x=3,y=0,z=0;

      if(x=y+z) printf(“****”);

      else printf(“####”);

     }

A、有语法错误不能通过编译                        B、输出****

C、可以通过编译,但不能通过连接,因而不能运行    D、输出####

 4.以下程序的输出结果是( )

        main()

        { int x=10,y=10,i;

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

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

         }

A、10  1  9  2    B、9  8  7  6   C、10  9  9  0   D、10  10  9  1

 5.以下程序的输出结果是

        main()

        { int x=10,y=10,i;

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

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

         }

     A、 10  1  9  2    B、 9  8  7  6    C、10  9  9  0   D、10  10  9  1

 6.有如下程序 

          main()

          { int a[3][3]={{1,2},{3,4},{5,6}},i,j,s=0;

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

               for(j=0;j<=i;j++) s+=a[i][j];

            printf(“%d”,s);

           }

该程序的输出结果是

A、18        B、19        C、20        D、21

 7.执行下列程序时输入123<空格>456<空格>789<回车>,输出结果是(   )。

#include <stdio.h>

main(   )

{char s[100];  int c, i;

scanf("%c",&c);  scanf("%d",&i);  scanf("%s",s);

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

}

A、123,456,789    B、1,456,789   C、1,23,456,789   D、1,23,456

 8.以下对C语言函数的描述中,正确的是(   )。

A、C程序由一个或一个以上的函数组成

B、C函数既可以嵌套定义又可以递归调用

C、函数必须有返回值,否则不能使用函数

D、C程序中调用关系的所有函数必须放在同一个程序文件中

 9.以下函数值的类型是(   )。

fun ( float  x )

{float y;

y= 3*x-4;

return y;

} 

A、int   B、不确定   C、void   D、float

10.一个C程序由函数A(),B(),C()和函数P()构成,在函数A()中分别调用了函数B()和函数C(),在函数B()中调用了函数A(),且在函数P()中也调用了函数A(),则可以说(     )。

A、函数B()中调用的函数A()是函数A()的间接递归调用

B、函数A()被函数B()调用是直接递归调用

C、函数P()直接递归调用了函数A()

D、函数P()中调用的函数A()是函数P()的嵌套

11.对于int *pa[5];的描述,( )是正确的

    A、pa是一个指向数组的指针,所指向的数组是5个int 型元素

    B、pa是一个指向某数组中第5个元素的指针,该指针是int 型变量

    C、pa[5]表示某个数组的第5个元素的值

D、pa是一个具有5个元素的指针数组,每一个元素是一个int 型指针

12.执行以下程序后,y的值是( )

          main()

          { int a[]={2,4,6,8,10};

            int y=1,x,*p;

            p=&a[1];

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

                y+=*(p+x);

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

           }

A、17          B、18        C、19            D、20

13.有以下程序段

      char arr[]=”ABCDE”;

      char *ptr;

      for(ptr=arr;ptr<arr+5;ptr++) printf(“%s\n”,ptr);

输出结果是( )

A、ABCDE     B、A         C、 E         D、ABCDE

                        B             D            BCDE

                   C             C            CDE

                   D             B            DE

                   E             A            E

14.以下程序的输出的结果是(  )

    A、 2               B、 1           C、 0           D、 不确定

   main()

   {   union {   char   i[2];

                int    k;

}  r;

r.i[0]=2;  r.i[1]=0;

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

    }

15.在C程序中,可以把整型数以二进制形式存放到文件中的函数是

      A、fprintf函数   B、fread函数     C、fwrite函数     D、fputc函数

99.

二、填空题(每题2分 共10分)

 1.在C语言中使用到的变量,都应先(  ),后(  )。

2.若有定义:char c=′\010′;则变量c中包含的字符个数为______。

 3.函数的返回值是通过函数中的(  )语句获得的。

 4.下面函数用来求出两个整数之和,并通过形参传回两数相加之和,请填空。

          int add(int x,int y,(        )z)

          { (          )=x+y;}

5.设有以下结构类型说明和变量定义,则变量a在内存所占字节数是______。

struct     stud

{char num[6];

int s[4];

double  ave;

}a;

`####

三、分析程序结果(每题5分 共20分)

 1.main()

{ int x=1,y=2,z=3;

x+=y+=z;

printf("%d",(x<y?x++:y++));

}

 2.main()

{ int a=24,b=16,r;

  while (b)

  { r=a%b;

    a=b;

     b=r;

  }

  printf("%d",a);

}

 3. #include <stdio.h>

 int p(int k,int a[])

   {int m,i,c=0;

for(m=2;m<=k;m++){

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

       if(!(m%i)) break;

       if(i==m) a[c++]=m;

    }

   return c;

 }

 #define MAXN 20

 main()

 { int i,m,s[MAXN];

    m=p(13,s);

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

    printf(“%4d\t”,s[i]);

   printf(“\n”);

}

程序输出结果为(  );函数int p(int k,int a[])的功能为(  )

 4.int f(int b[ ],int n)

{ int i, s=0;

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

      s+=b[i];

     return s;

 }

 main()

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

      x=f (a, 5);

      printf(“%d”,x );

 }

`####

四、程序填空(每题5分 共20分)

 1.程序打印如下形式的图形

*

* *

* * *

* * * *

main()

{ for(int i=1;i<=4;i++)

{ for(int j=1;   ①   ;j++)

     printf(   ②   );

printf(   ③    );

}

}

 2.以下函数返回数组s中最大元素的下标,数组中元素的个数由t传入。

Findmax(int s[],int t)

{

    int m,n;

    for(n=0,m=n;n<t;n++)

       if(s[n]>s[m]) (          );

    return (           );

}

 3.函数strcpy()将字符串from复制到字符串to。

   void strcpy(  )

   {  while(  );

}

 4.下面的程序的功能是:利用指针统计一个字符串中,字母、空格、数字、

及其它字符的个数,请填空。

        #include<stdio.h>

        main()

        { int alpha,space,digit,other;

          char *p,s[80];

          alpha=space=digit=other=0;

          printf(“input string:\n”);

          gets(s);

          for(p=s;*p!=’\0’;p++)

              if(          )alpha++;

              else if(          )space++;

                  else if(          )digit++;

                      else other++;

           printf(“alpha:%d  space:%d  digit:%d  other:%d\n”,alpha,space,digit,other);

              }

`####

五、编程题(每题10分 共20分)

 1. 编写一个递归函数,计算1+2+3+......+n 的和。

 2.请编写一函数int fun(float s[ ],int n),它的功能是:求高于平均分的人数,并作为函数值返回。数组s中存放n个学生的成绩。

获取答案请阅读全文

未经允许不得转载!《C程序设计》期末试卷A【含答案】