前两天做的测试题目及答案


一 填空题(20分)

1.C语言表达式 5>2>7>8 的值是(  )。

2.当执行完以下语句后,变量a的值为(    ),d的值为(    ),e的值为(    )。

a=6; b=++a; c=--a; d=a++; e=a--;

3.下面程序段的输出结果是(        )。

      char a=111; a=a^00; printf(“%d %o/n”,a,a);

4.a数组定义如下,按照内存排列顺序,a数组中的所有元素是(            )。

      char a[3];

5.设有以下宏定义,则执行赋值语句 a=PP+20;(a为int型变量)后,a的值是(    )。

      #define PR 8

      #define PP PR*40

6.定义结构体类型时,应使用关键字(   ),定义枚举类型时,应使用关键字(   )。

7.C文件可以分为两种类型,它们是(      )文件和(      )文件。

8.若有char a[3]=“as”;则*a=(    ),*(a+2)=(   )。

二 判断对错(5分,对的划“√”,错的划“×”)

1.。(  )

2.表达式1/4+2.75的值是3。(  )

3.结构体类型只有一种。(  )

4.函数若无返回值,则它一定无形参。(  )

5.C语言只能处理文本文件和二进制文件。(  )

二 判断对错(10分,每题1分。对的划“√”,错的划“×”)

1.在Turbo C中,实型数据在内存中占4个字节。(   )

2.被main函数调用的函数只能是库函数。(   )

3.对整型变量可进行自加或自减运算,而对常量或表达式不可以。(   )

4.算术运算符和赋值运算符的结合方向均由左自右。(   )

5.定义在main函数后的任何函数都需在main中进行函数声明。(   )

6.一个函数中只允许有一条return语句。(   )

7.任何数组在使用时必须先定义。(   )

8.在int *p;和语句printf(“%d”, *p);中的*p含义相同。(   )

9.在定义枚举时,枚举常量可以是标识符或数字。(   )

10.用fopen(“file1”,”r+”)方式打开的文件可进行修改。(   )

三 选择题(20分,每题2分)

1.a,b为整形变量,二者均不为0,以下关系表达式中恒成立的是(  )。

   (A) a*b/a*b==1           (B) a/b*b/a==1

   (C) a/b*b+a%b==a         (D) a/b*b==a

2.C语言源程序的基本单位是(  )。

   (A) 过程      (B) 函数      (C) 子程序    (D) 标识符

3.以下函数调用语句中含有(  )个实参。

       func((e1,e2),(e3,e4,e5));

   (A) 2      (B) 3     (C) 5     (D) 语法错误

4.以下的 for 循环(  )。

      for(x=0,y=0;(y!=123)&&(x<4);x++)  ;

   (A) 执行 3 次            (B) 执行 4 次

   (C) 循环次数不定         (D) 是无限循环

5.以下程序的输出结果为(  )。

   #define N 2

   #define M N+2

   #define CUBE(x) (x*x*x)

   #include "stdio.h"

   main( )

   {  int i=M;

      i=CUBE(i);

      printf("%d/n",i);

   }

   (A) 17      (B) 64     (C) 125      (D) 53

6.以下程序的输出结果为(  )。

   main( )

   {  int i=010,j=10,*pi,*pj;

      pi=&i; pj=&j;

      printf("%d.%d/n",*pi,*pj);

   }

   (A) 10,10      (B) 8,10     (C) 010,10     (D) 8,8

7.在下列程序段中,枚举变量 c1,c2 的值依次是(  ),(  )。

   enum color { red,yellow,blue=4,green,white}  c1,c2;

   c1=yellow; c2=white;

   printf("%d,%d/n",c1,c2);

   (A) 1           (B) 3        (C) 5         (D) 6

8.要打开一个已存在的非空文件"file"用于修改,选择正确的语句(  )。

   (A) fp=fopen("file","r");    (B) fp=fopen("file","w");

   (C) fp=fopen("file","r+");    (D) fp=fopen("file","w+");

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

   main()

   {  char s1[20]=“abc”,s2[20]=“123”;

      if(strcmp(s1,s2)>0)  printf(“%s/n”,s1));

else  printf(“%s/n”,s2);

}

(A) abc        (B) 123     (C) abc123       (D) 123abc

10.已知职工记录描述如下,设变量w中的“生日”是“1993年10月25日”,下列对“生日”的正确赋值方式是(    )。

struct worker

{  int no; char name[20]; char sex;

 struct { int day; int month; int year;}birth;

};

struct worker w;

(A) day=25; month=10; year=1993;

(B) w.birth.day=25;  w.birth.month=10; w.birth.year=1993;

(C) w.day=25; w.month=10; w.year=1993;

(D) birth.day=25; birth.month=10; birth.year=1993;

四 写出下列程序的运行结果(25分,每题5分)

1.main()

   {  int i,j;

      i=16; j=(i++)+i;  printf("%d/n",j);

      i=15; printf("%d/t%d/n",++i,i);

     

   }

2.#include "stdio.h"

   main()

   { int i;

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

     {   if(i>4)

          {   printf("%d/n",i++);

              break;

          }

        printf("%d/n",i++);

     }

   }

3.#include "stdio.h"

   main()

   { int i,j,a[]={0,2,8,4,5};

     printf("/n");

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

       {  j=5-i;

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

       }

   }

4.#include "stdio.h"

   main()

   {  char string1[]={"ABCDEFGHIJ"},string2[10];

      s(string1,string2,5);

      printf("%s/n",string2);

   }

   s(p,q,m)

   char *p.*q;

   int m;

   {  int n=0;

      while(n<m-1)

       { n++;

         p++;

       }

      while(*p!='/0')

        { *q=*p;

          p++;

          q++;

         }

      *q='/0';

   }

5.main()

   { int y;

     fac(5,&y);

     printf(“y=%d/n”,y);

    }

    fac(int n,int *t)

    {  int s;

       if((n==1)||(n==0))  *t=2;

       else  {  fac(n-1,&s);  t=n*s; }

     }

五 阅读下列程序,在    处填入适当内容,使程序完整(25分,每个空2分)

1.试求出1000以内的“完全数”。(提示:如果一个数恰好等于它的因子之和(因子包括1,不包括数本身),则称该数为“完全数”。如:6的因子是1、2、3,而6=1+2+3,则6是个“完全数”。)

   main()

   {

     int i,a,m;

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

       {

          for(m=0,a=l;a<=i/2;a++)

          if(!(i%a))  (1) ;

          if( (2) )    printf("%4d",i);

        }

   }

2.用“起泡法”对输入的10个字符排序后按从小到大的次序输出。

   #define N 10

   char str[N];

   main()

   {

      int i,flag;

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

        scanf("%c",&str[i]);

      sort(_(1)__);

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

        printf("%c",str[i]);

      printf("/n");

   }

   sort(str)

   char str[N];

   {  int i,j;

      char t;

      for(j=1;j<N;j++)

      for(i=0;i<N-j;i++)

       if(str[i]>   (2)   )

         { t=str[i];

           ______(3)______;

           ______(4)______;

         }

   }

3.将一个磁盘文件中的信息复制到另一个磁盘文件中。

   #include "stdio.h"

   main()

   {    (1)   *in,*out;

      char ch,infile[10],outfile[10];

      printf("Enter the infile name:/n");

      scanf("%s",infile);

      printf("Enter the outfile name:/n");

      scanf("%s",outfile);

      if((in=fopen(infile,"r"))==NULL)

        { printf("Cannot open input file./n");

          exit(0);

        }

      if((out=fopen(outfile,"w"))==NULL)

        {  printf("Cannot open output file./n");

           exit(0);

         }

      while(!feof(in))

           fputc(   (2)   ,out);

         (3)   ;

         (4)   ;

   }

4.用指针作函数参数,编程序求一维数组中的最大和最小的元素值。

   #define N 10

   main()

   {

      void maxmin(int arr[],int *pt1,int *pt2,int n);

      int array[N]={10,7,19,29,4,0,7,35,-16,21},*p1,*p2,a,b;

      p1=&a;  p2=&b;

      maxmin(array,p1,p2,N);

      printf("max=%d,min=%d",a,b);

   }

   void maxmin(int arr[],int *pt1,int *pt2,int n)

   {

      int i;

      *pt1=*pt2=arr[0];

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

        {

          if(arr[i]>*pt1)     (1)   ;

          if(arr[i]<*pt2)     (2)   ;

        }

   }
 
 

posted @ 2007-08-23 19:16  Socrates  阅读(784)  评论(0编辑  收藏  举报