• C语言考试题库之填空题



    ━━━━━━━━━━━━━━━━━━
    一、程序填空   共130题 
    ━━━━━━━━━━━━━━━━━━

    第1题 (9.0分)  题号:441
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:从低位开始取出长整型变量s中奇数位上的数,依次构成一
          个新数放在t中。

    -------------------------------------------------------*/

    #include
    #include  
    void fun (long s, long *t)
    {
      long sl=10;
      s /= 10;
      /***********SPACE***********/
      *t = s 【?】 10;
      while(s>0)
      { 
        /***********SPACE***********/
        s = 【?】;
        /***********SPACE***********/
        *t = s%10*sl【?】;
        /***********SPACE***********/
        sl = sl 【?】10;
      }
    }

    main()
    { long s, t;
    clrscr();
    printf("\nPlease enter s:"); scanf("%ld", &s);
    fun(s, &t);
    printf("The result is: %ld\n", t);
    }
    答案:
       1). %
       2). s/100
       3). + *t
       4). *


    第2题 (9.0分)  题号:439
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:1982年我国第三次人口普查,结果全国人口为10.3亿,假
          如人口增长率为5%。编写一个程序求在公元多少年总人口
          翻了一番。

    -------------------------------------------------------*/

    #include
    void main()
    {
      double p1=10.3,p2,r=0.05;
      int n=1;
      /***********SPACE***********/
      p2=p1*【?】;  
      /***********SPACE***********/
      while(p2<=【?】) 
      {
        n++;
        /***********SPACE***********/
        p2=p2*【?】;  
      }
      /***********SPACE***********/
      n=【?】;  
      printf("%d年人口总数翻了一番,即为%g亿人\n",n,p2);
    }

    答案:
       1). (1+r) 或 (r+1)
       2). 2*p1 或 p1*2
       3). (1+r) 或 (r+1)
       4). n+1982 或 1982+n


    第3题 (9.0分)  题号:407
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:有五个学生,每个学生有3门课的成绩,从键盘输入以上数
          据(包括学生号,姓名,三门课成绩),计算出平均成绩,
          设原有的数据和计算出的平均分数存放在磁盘文件"stud"
          中。

    -------------------------------------------------------*/

    #include "stdio.h"
    struct student
    {
      char num[6];
      char name[8];
      int score[3];
      float avr;
    } stu[5];

    main()
    {
      int i,j,sum;
      FILE *fp;
      /*input*/
      for(i=0;i<5;i++)
      {
        printf("\n please input No. %d score:\n",i);
        printf("stuNo:");
        scanf("%s",stu[i].num);
        printf("name:");
        scanf("%s",stu[i].name);
        sum=0;
        /***********SPACE***********/
        for(j=0;【?】;j++)
        { 
          printf("score %d.",j+1);
          scanf("%d",&stu[i].score[j]);
          /***********SPACE***********/
          sum+=stu[i].【?】;
        }
        stu[i].avr=sum/3.0;
      }
      fp=fopen("stud","w");
      /***********SPACE***********/
      for(i=0;i<5;【?】)
      /***********SPACE***********/
        if(fwrite(&stu[i],sizeof(【?】),1,fp)!=1)
          printf("file write error\n");
        fclose(fp);
    }
    答案:
       1). j<3 或 3>j
       2). score[j]
       3). i++ 或 ++i 或 i=i+1
       4). struct student


    第4题 (9.0分)  题号:408
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:输入两个整数,求他们的按位与。

    -------------------------------------------------------*/

    #include
    void main()
    {
      int x,y,z=0,a,b,k=1;
      scanf("%d,%d",&x,&y);
      while(x>0&&y>0)
      {
        a=x%2;
        /***********SPACE***********/
        x=【?】;
        b=y%2;
        y=y/2;
        /***********SPACE***********/
        z=z+【?】;
        k=k*2;
      }
      /***********SPACE***********/
      【?】("z=%d\n",z);
    }
    答案:
       1). x/2
       2). a*b*k 或 a * b * k
       3). printf


    第5题 (9.0分)  题号:477
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:编写程序,输出 1000 以内的所有完数及其因子。
    说明:所谓完数是指一个整数的值等于它的因子之和。
    例如“ 6 的因子是 1 、 2 、 3 ,而 6=1+2+3 ,故 6 是
          一个完数。

    -------------------------------------------------------*/

    #include  

    main() 
    {
      int i,j,m,s,k,a[100] ;
      for(i=1 ; i<=1000 ; i++ )
      {
        m=i ; s=0 ; k=0 ;
        for(j=1 ; j       /***********SPACE***********/
          if(【?】)                                 
          {
            s=s+j ;
            /***********SPACE***********/
            【?】=j ;                                
          } 
        if(s!=0&&s==m)
        {
          /***********SPACE***********/
          for(j=0 ; 【?】 ; j++)                
            printf("%4d",a[j]) ;
          printf(" =%4d\n",i) ;
        } 
      }

    答案:
       1). m%j == 0
       2). a[k++]
       3). jj


    第6题 (9.0分)  题号:10
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:输出由字符w构造成的形如W的图形。

    w        ww        w
     w      w  w      w
      w    w    w    w
       w  w      w  w
        ww        ww

    -------------------------------------------------------*/

    void draw(int n)

      int i,j,k,r,m;
      /***********SPACE***********/
      for(i=1; 【?】;i++)
      {
        for(j=1;j<=2;j++)
        {
          for(r=1;r         printf("w");
            /***********SPACE***********/
            for(k=1; 【?】 ;k++)printf(" ");
               printf("w");
               for(m=1;m     }
        /***********SPACE***********/
        【?】;
      }
    }
    #include
    main()
    {
      int n;
      clrscr();
      printf("input a number:");
      /***********SPACE***********/
      【?】;
      draw(n);
    }

    答案:
       1). i<=n 或 n>=i
       2). k<= 2 * n - 2 * i 或  2 * n - 2 * i >=k
       3). printf("\n")
       4). scanf("%d",&n)


    第7题 (9.0分)  题号:397
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙
          队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比
          赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出
          三队赛手的名单。

    -------------------------------------------------------*/

    main()
    {
      char i,j,k;/*i是a的对手,j是b的对手,k是c的对手*/
      for(i='x';i<='z';i++)
        for(j='x';j<='z';j++)
        {
          /***********SPACE***********/
          if(【?】)
            /***********SPACE***********/
            for(k='x';【?】;k++)
            {
              /***********SPACE***********/
              if(【?】)
              {
                /***********SPACE***********/
                if(i!='x'&&k!=【?】)
                   printf("order is a--%c\tb--%c\tc--%c\n",i,j,k);
              }
            }
        }
    }

    答案:
       1). i!=j 或 i != j
       2). k<='z' 或 'z'>=k
       3). i!=k&&j!=k 或 i != k && j != k
       4). 'z'


    第8题 (9.0分)  题号:470
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:从两个数组中分别提取任意元素x[i],y[j],问|x[i]-y[j]|
          的最小值是多少 ?

    -------------------------------------------------------*/

    #include

    /***********SPACE***********/
    #define  min(x, y)     (【?】)                                        

    int  min_distance(int x[], int y[], int m, int n)
    {
      int  minimum = INT_MAX; 
      int  index_x = 0, index_y = 0;
      while (index_x < m && index_y < n)
        /***********SPACE***********/
        if (【?】) 
        {                                                
          minimum = min(minimum, x[index_x]-y[index_y]);
          index_y++;
        }
        else 
        {
          minimum = min(minimum, y[index_y]-x[index_x]);
          /***********SPACE***********/
         【?】;                                                
        }
      return minimum;
    }


    #include  
    void main(void)
    {
         int  x[] = { 1, 3, 7, 11, 18};
         int  m   = sizeof(x)/sizeof(int);
         int  y[] = { 4, 5, 8, 13, 22};
         int  n   = sizeof(y)/sizeof(int);
         int  i, min_distance(int [], int [], int, int);
         printf("\nCompute Minimum Distance Between Two Sorted Arrays");
         printf("\n==================================================");
         printf("\n\nGiven Array #1 :");
         for (i = 0; i < m; i++)
              printf("%5d", x[i]);
         printf("\n\nGiven Array #2 :");
         for (i = 0; i < n; i++)
              printf("%5d", y[i]);
         printf("\n\nMinimum Distance = %d", min_distance(x, y, m, n));
    }
    答案:
       1). xx?x:y
       2). x[index_x] >= y[index_y] 或 y[index_y]<=x[index_x]
       3). index_x++ 或 index_x=index_x+1 或 ++index_x


    第9题 (9.0分)  题号:30
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:输入字符串,再输入一个字符,将字符串中与输入字符相
          同的字符删除。

    -------------------------------------------------------*/

    #include "stdio.h"
    void fun(char a[],char c)
    {
      int i,j;
      /***********SPACE***********/
      for(i=j=0; 【?】;i++)
        if(a[i]!=c) a[j++]=a[i];
      /***********SPACE***********/
      【?】;
    }
    main()
    {
      char a[20],cc;
      gets(a);
      /***********SPACE***********/
      【?】;
      /***********SPACE***********/
      【?】;
      puts(a);
    }

    答案:
       1). a[i] != '\0' 或 a[i] 或 a[i]!=NULL
       2). a[j]='\0' 或 a[j]=NULL 或 a[j]=0
       3). cc=getchar() 或 scanf("%c",&cc)
       4). fun(a,cc)


    第10题 (9.0分)  题号:467
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:输入一个整数n,打印自然数1-n的全排列方案。

    -------------------------------------------------------*/

    #include  
    #include  

    #define   MAXSIZE   20
    #define   ROTATE(p) 
    {
      int  i, temp;              \
      temp = perm[p];            \
      for (i = p-1; i >= 0; i--) \
      perm[i+1] = perm[i];       \
      perm[0] = temp;            \
    }

    void main(void)
    {
      int  perm[MAXSIZE];
      int  position;
      int  n;
      int  i;
      char line[100];
      printf("\nPermutation by Rotation Method");
      printf("\n==============================");
      printf("\n\nNumber of Elements --> ");
      gets(line);
      n = atoi(line);
      for (i = 0; i < n; i++)  
        perm[i] = i + 1;
      position = n - 1;           
      /***********SPACE***********/
      while (【?】) 
      {                                          
        printf("\n");       
        for (i = 0; i < n; i++)
          /***********SPACE***********/
          printf("%d ", 【?】);                        
        /***********SPACE***********/
        position = 【?】;                                   
        ROTATE(position);                                   
        while (perm[position]==position+1 && position!=0) 
        {
          position--;    
          ROTATE(position); 
        }
      }
    }
    答案:
       1). position != 0
       2). perm[i]
       3). n - 1 或 n -1


    第11题 (9.0分)  题号:395
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:输入3个数a,b,c,按从小到大的顺序输出。

    -------------------------------------------------------*/

    main()
    {
      void swap(int *p1, int *p2);
      int n1,n2,n3;
      int *pointer1,*pointer2,*pointer3;
      printf("please input 3 number:n1,n2,n3:");
      scanf("%d,%d,%d",&n1,&n2,&n3);
      pointer1=&n1;
      pointer2=&n2;
      pointer3=&n3;
      /***********SPACE***********/
      if(【?】) swap(pointer1,pointer2);
      /***********SPACE***********/
      if(【?】) swap(pointer1,pointer3);
      /***********SPACE***********/
      if(【?】) swap(pointer2,pointer3);
      printf("the sorted numbers are:%d,%d,%d\n",n1,n2,n3);
    }
    /***********SPACE***********/
    void swap(【?】)
    int *p1,*p2;
    {
      int p;
      p=*p1;*p1=*p2;*p2=p;
    }

    答案:
       1). n1>n2 或 n2*pointer2 或 *pointer2<*pointer1
       2). n1>n3 或 n3*pointer3 或 *pointer3<*pointer1
       3). n2>n3 或 n3*pointer3 或 *pointer3<*pointer2
       4). p1,p2


    第12题 (9.0分)  题号:443
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------
    功能:企业发放的奖金根据利润提成。利润(I)低于或等于10万元
          时,奖金可提10%;利润高于10万元,低于20万元时,低于
          10万元的部分按10%提成,高于10万元的部分,可可提成7.5%
          ;20万到40万之间时,高于20万元的部分,可提成5%;40万
          到60万之间时高于40万元的部分,可提成3%;60万到100万
          之间时,高于60万元的部分,可提成1.5%,高于100万元时,
          超过100万元的部分按1%提成,从键盘输入当月利润I,求
          应发放奖金总数?

    -------------------------------------------------------*/

    main()
    {
      long int i;
      int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;
      scanf("%ld",&i);
      bonus1=100000*0.1;bonus2=bonus1+100000*0.75;
      bonus4=bonus2+200000*0.5;
      bonus6=bonus4+200000*0.3;
      bonus10=bonus6+400000*0.15;
      if(i<=100000)
        bonus=i*0.1;
      /***********SPACE***********/
      else if(【?】)                                
        bonus=bonus1+(i-100000)*0.075;
      /***********SPACE***********/
      else if(【?】)                                
        bonus=bonus2+(i-200000)*0.05;
      /***********SPACE***********/
      else if(【?】)                                
        bonus=bonus4+(i-400000)*0.03;
      else if(i<=1000000)
        bonus=bonus6+(i-600000)*0.015;
      else
        bonus=bonus10+(i-1000000)*0.01;
      /***********SPACE***********/
      【?】("bonus=%d",bonus);
    }

    答案:
       1). i<=200000     或 200000>=i
       2). i<=600000 或 600000>=i
       3). i<=1000000 或 1000000>=i
       4). printf


    第13题 (9.0分)  题号:473
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:输出1到100之间每位数的乘积大于每位数的和的数。
    例如:数字26,数位上数字的乘积12大于数字之和8。

    -------------------------------------------------------*/

    main()
    {
      int n,k=1,s=0,m;
      for(n=1;n<=100;n++)
      {
        k=1;
        s=0;
        /***********SPACE***********/
       【?】 ;                                
        /***********SPACE***********/
        while( 【?】 )                        
        {
          k*=m%10;
          s+=m%10;
          /***********SPACE***********/
          【?】;                                
        }  
        if(k>s)
          printf("%d ",n);
      }
    }
    答案:
       1). m=n
       2). m>0 或 0    3). m=m/10 或 m/=10


    第14题 (9.0分)  题号:442
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:将长整型数中每一位上为奇数的数依次取出,构成一个新数
          放在t中。高位仍在高位,低位仍在低位。

    -------------------------------------------------------*/

    #include
    #include  

    void fun (long s, long *t)

      int d;
      long sl=1;
      /***********SPACE***********/
     【?】 = 0;
      while ( s > 0)
      {
        /***********SPACE***********/
        d = 【?】;
        if(d%2)
        {   
          /***********SPACE***********/
          *t = 【?】 + *t;
          /***********SPACE***********/
          sl 【?】 10;
        }
        s /= 10;
      }
    }

    main()
    {
      long s, t;
      clrscr();
      printf("\nPlease enter s:"); scanf("%ld", &s);
      fun(s, &t);
      printf("The result is: %ld\n", t);
    }
    答案:
       1). *t
       2). s%10
       3). d * sl 或 sl * d
       4). *= 或 =s*


    第15题 (9.0分)  题号:433
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:将字母转换成密码,转换规则是将当前字母变成其后的第
          四个字母,但W变成A、X变成B、Y变成C、Z变成D。小写字
          母的转换规则同样。

    -------------------------------------------------------*/

    #include
    main()
    {
      char c;
      /***********SPACE***********/
      while((c=【?】)!='\n')
      {
        /***********SPACE***********/
        if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))【?】;
        /***********SPACE***********/
        if((c>'Z'【?】c<='Z'+4)||c>'z') c-=26;
        printf("%c",c);
      }
    }
    答案:
       1). getchar()
       2). c+=4 或 c=c+4 或 c=4+c
       3). &&


    第16题 (9.0分)  题号:419
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:seek()函数:判断是否有不合格成绩;形参:1个,指
          向由3个int型元素组成的1维数组的行指针变量返回值:
          (1)有不合格成绩,则返回指向本行首列的一个(列)指针;  
          (2)没有有不合格成绩,返回值为指向下一行的一个
             (列)指针 
    -------------------------------------------------------*/

    int  *seek( int  (*pnt_row)[3] )
    {
      int i=0, *pnt_col;             
      /***********SPACE***********/
      【?】=*(pnt_row+1);
      for(; i<3; i++)
        if(*(*pnt_row+i)<60)        
        {
          pnt_col=*pnt_row;       
          break; /*退出循环*/
        }
        /***********SPACE***********/
      return(【?】);
    }

    main()
    {
      static int grade[3][3]={{55,65,75},{65,75,85},{75,80,90}};
      int i,j,*pointer;             
      for(i=0; i<3; i++)             
      {
        /***********SPACE***********/
        pointer=seek(【?】);
        if(pointer==*(grade+i))     
        { 
           printf("No.%d grade list: ", i+1);
           for(j=0; j<3; j++) 
             /***********SPACE***********/ 
             printf("%d  ",*(【?】));
           printf("\n");
        }
      }
    }
    答案:
       1). pnt_col
       2). pnt_col
       3). grade+i 或 i+grade
       4). pointer+j 或 j+pointer


    第17题 (9.0分)  题号:466
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:用二分法求方程2X^3+4X^2+3X-6=0在(-10,10)之间的根
          ,其中 X^n代表X的n次方。

    -------------------------------------------------------*/

    # include
    main()
    {
      float x0,x1,x2,fx0,fx1,fx2;
      do
      {
        printf("Enter x1&x2:");
        scanf("%f,%f",&x1,&x2);
        fx1=x1*((2*x1-4)*x1+3)-6;
        fx2=x2*((2*x2-4)*x2+3)-6;
      /***********SPACE***********/ 
      }while (fx1*fx2【?】);                                

      do
      {
        x0=(x1+x2)/2;
        fx0=x0*((2*x0-4)*x0+3)-6;
        /***********SPACE***********/
        if(fx0*fx1【?】)                                
        {
          x2=x0;
          fx2=fx0;
        }
        else
        {
          x1=x0;
          fx1=fx0;
        }
      }
      /***********SPACE***********/
      while(【?】>=1e-5);                                
        printf("x=%6.2f\n",x0);
    }
    答案:
       1). >0
       2). <0
       3). fabs(fx0)


    第18题 (9.0分)  题号:459
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:在歌星大奖赛中,有10个评委为参赛的选手打分,分数为
          1~100分。选手最后得分为:去掉一个最高分和一个最低分
          后其余8个分数的平均值。请编写一个程序实现。

    -------------------------------------------------------*/

    #include

    void main()
    {
      int score,i,max,min,sum;
      max=-32768;                  
      min=32767;                   
      sum=0;
      for(i=1;i<=10;i++)
      {
        printf("Input number %d=",i);
        /***********SPACE***********/
        scanf("%d",【?】);                        
        sum+=score;
        /***********SPACE***********/
        if(【?】) max=score;                        
        /***********SPACE***********/
        if(【?】)  min=score;                        
      }
      printf("Canceled max score:%d\nCanceled min score:%d\n",max,min);
      /***********SPACE***********/
      printf("Average score:%d\n",【?】);                
    }
    答案:
       1). &score
       2). score>max 或 max    3). scorescore
       4). (sum-max-min)/8 或 (sum -max - min )/8


    第19题 (9.0分)  题号:25
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:以下程序的功能如(图1)。

    -------------------------------------------------------*/
      
    /***********SPACE***********/
     【?】
    main()
    {
      float x,f;
      scanf("%f",&x);
      /***********SPACE***********/
      if(x<0) 【?】;
      /***********SPACE***********/
      else if(【?】)
        f=2*x+1;
      else  
        f=sin(x)+5;
      /***********SPACE***********/
      printf("x=%f,y=%f\n",  【?】);
    }

    答案:
       1). #include "math.h" 或 #include
       2). f=fabs( x + 1 )
       3). x<=5 或 5>=x 或 x<6 或 6>x 或 x>=0&&x<=5 或 0<=x&&x<=5 或 x>=0&&5>=x 或 0<=x&&5>=x 或 !(x>5)
       4). x,f


    第20题 (9.0分)  题号:478
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:如果整数A的全部因子(包括1,不包括A本身)之和等
          于B;且整数B的全部因子 ( 包括1,不包括B本身 ) 
          之和等于A,则将整数A和B称为亲密数。求 3000 以内
          的全部亲密数。

    -------------------------------------------------------*/

    #include
    #include  
    main( ) 
    {
      int a, i, b, n ;
      printf("Friendly-numbers pair samller than 3000:\n") ;
      for(a=1 ; a<3000 ; a++)
      {
        for(b=0,i=1 ; i<=a/2 ; i++ )
        /***********SPACE***********/
        if(!(a%i)) 【?】 ;                
        for(n=0,i=1 ; i<=b/2 ; i++)
          /***********SPACE***********/
          if(!(b%i)) 【?】 ;                
        /***********SPACE***********/
        if(【?】 && a       printf("%4d~%4d\n",a,b) ;
      }
    }
    答案:
       1). b+=i 或 b=b+i
       2). n+=i 或 n=n+i
       3). n == a


    第21题 (9.0分)  题号:13
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:产生并输出杨辉三角的前七行。

    1
    1     1
    1     2     1
    1     3     3     1
    1     4     6     4     1
    1     5    10    10     5     1
    1     6    15    20    15     6     1

    -------------------------------------------------------*/

    main ( )
    {
      int a[7][7];
      int i,j,k;
      for (i=0;i<7;i++)
      {
         a[i][0]=1; 
         /***********SPACE***********/    
         【?】;
      }
      for (i=2;i<7;i++)
        /***********SPACE***********/
        for (j=1;j<【?】;j++)
          /***********SPACE***********/
          a[i][j]= 【?】;
      for (i=0;i<7;i++)
      {
         /***********SPACE***********/
         for (j=0; 【?】;j++)
           printf("%6d",a[i][j]);
           printf("\n");
       }
    }

    答案:
       1). a[i][i]=1
       2). i
       3). a[i-1][j]+a[i-1][j-1] 或 a[i-1][j-1]+a[i-1][j]
       4). j<=i 或 i>=j 或 jj 或 j-1j-1


    第22题 (9.0分)  题号:28
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:将十进制数转换成十六进制数

    -------------------------------------------------------*/

    #include "stdio.h"
    #include "string.h"
    main ()
    {
      int a,i;
      char s[20];
      printf("input a integer:\n");
      scanf("%d",&a);
      c10_16(s,a);
      /***********SPACE***********/
      for(【?】;i>=0;i--)
        printf("%c",s[i]);
      printf("\n");
    }
    c10_16(char p[],int b)
    {
      int j,i=0;
      /***********SPACE***********/
      while (【?】)
      {
        j=b%16;
        if(j>=0&&j<=9) 
          /***********SPACE***********/
          【?】;
        else p[i]=j+55;
          b=b/16;
        i++;
      }
      /***********SPACE***********/
      【?】;
    }

    答案:
       1). i=strlen(s)-1 或 i=-1+strlen(s)
       2). b>0 或 0    3). p[i]= j + '0' 或 p[i]= j + 48 或 *(p+i)= j + '0' 或 *(p+i)= j + 48
       4). p[i]='\0' 或 p[i]=0 或 p[i]=NULL 或 *(p+i)='\0' 或 *(p+i)=0 或 *(p+i)=NULL


    第23题 (9.0分)  题号:18
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:将一个数组中的元素按逆序存放。

    -------------------------------------------------------*/

    #define N 7
    main ()
    {
      static int a[N]={12,9,16,5,7,2,1},k,s;
      printf("\n the origanal array:\n");
      for (k=0;k     printf("%4d",a[k]);
      /***********SPACE***********/
      for (k=0;k   {
         s=a[k];
      /***********SPACE***********/
      【?】 ;
      /***********SPACE***********/
      【?】 ;
       }
       printf("\n the changed array:\n");
       for (k=0;k       /***********SPACE***********/
          【?】  ("%4d",a[k]);
    }
    答案:
       1). k++ 或 k= k + 1 或 k+=1 或 ++k
       2). a[k]=a[N-k-1] 或 a[k]=a[N-1-k] 或 a[k]=a[6-k] 或 *(a+k)=*(a+N-k-1) 或 *(a+k)=*(a+N-1-k] 或 a[k]=a[-1+N-k] 或 a[k]=a[-1-k+N] 或 a[k]=a[-k-1+N] 或 a[k]=a[-k+N-1] 或 *(a+k)=*(a+N-k-1) 或 a[6-k]=s
       3). a[N-k-1]=s 或 a[N-1-k]=s 或 a[6-k]=s 或 a[N -k -1]=s 或 *(a +N -k -1)=s
       4). printf


    第24题 (9.0分)  题号:406
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:从键盘输入一个字符串,将小写字母全部转换成大写字母,
          然后输出到一个磁盘文件“test”中保存。输入的字符串
          以!结束。

    -------------------------------------------------------*/

    #include "stdio.h"
    #include
    main()
    {
      FILE *fp;
      char str[100];
      int i=0;
      /***********SPACE***********/
      if((fp=fopen("test",【?】))==NULL)
      {
        printf("cannot open the file\n");
        exit(0);
      }
      printf("please input a string:\n");
      /***********SPACE***********/
      gets(【?】);
      while(str[i]!='!')
      /***********SPACE***********/
      {
        if(str[i]>='a'&&【?】)
          str[i]=str[i]-32;
        fputc(str[i],fp);
        i++;
      }
      /***********SPACE***********/
      fclose(【?】);
      fp=fopen("test","r");
      fgets(str,strlen(str)+1,fp);
      printf("%s\n",str);
      fclose(fp);
    }

    答案:
       1). "w"
       2). str
       3). str[i]<='z' 或 'z'>=str[i]
       4). fp


    第25题 (9.0分)  题号:449
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:算式:?2*7?=3848中缺少一个十位数和一个个位数。编
          程求出使该算式成立时的这两个数,并输出正确的算式。

    -------------------------------------------------------*/

    main()
    {
      int x,y;
      /***********SPACE***********/
      for(x=1;【?】;x++)
        /***********SPACE***********/
        for(【?】;y<10;y++)
          /***********SPACE***********/
          if(【?】==3848)
          {
            /***********SPACE***********/
            printf("%d*%d=3848\n",【?】);
            exit(0);
          }

    }

    答案:
       1). x<10 或 10>x 或 x<=9 或 9>=x
       2). y=0
       3). (10*x+2)*(70+y) 或 ( 10 * x + 2 ) * ( 70 + y )
       4). 10*x+2,70+y 或 10 * x + 2 , 70 + y


    第26题 (9.0分)  题号:451
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:编程求任意给两个日期(Y0年M0月DO日和Y1年M1月D1日)
          相差的天数。

    -------------------------------------------------------*/

    main()
    {
      int y1,m1,d1,y2,m2,d2,n,i;
      printf("y1,m1,d1=");
      scanf("%d,%d,%d",&y1,&m1,&d1);
      /***********SPACE***********/
      if(m1<1||m1>12||d1<1||d1>【?】) exit(0);
      printf("y2,m2,d2=");scanf("%d,%d,%d",&y2,&m2,&d2);
      /***********SPACE***********/
      if(m2<1||m2>12||d2<1||d2>【?】) exit(0);
      if(y1>y2||y1==y2&&m1>m2||y1==y2&&m1==m2&&d1>d2)
      {
        n=y1;
        y1=y2;
        y2=n;
        n=m1;
        m1=m2;
        m2=n;
        n=d1;
        d1=d2;
        d2=n;
      }
      else
      {
        /***********SPACE***********/
        n=yend(y1,m1,d1)+【?】;
        /***********SPACE***********/
        for(i=【?】;i   }
      printf("%d.%d.%d--->%d.%d.%d:n=%d\n",y1,m1,d1,y2,m2,d2,n);
    }

    int f(int y)
    {
      return(y%4==0&&y%100!=0||y%400==0);
    }

    int mday(int y,int m)
    {
      return(31-((m==4)+(m==6)+(m==9)+(m==11))-(3-f(y))*(m==2));
    }

    int yday(int y,int m,int d)
    {
      return(d+31*((m>1)+(m>3)+(m>5)+(m>7)+(m>8)+(m>10))+30*((m>4)+(m>6)+(m>9)+(m>11))+(28+f(y))*(m>2));
    }

    int yend(int y,int m,int d)
    {
      return(365+f(y)-yday(y,m,d));
    }

    答案:
       1). mday(y1,m1)
       2). mday(y2,m2)
       3). yday(y2,m2,d2)
       4). y1+1 或 1+y1


    第27题 (9.0分)  题号:16
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:产生10个[30,90]区间上的随机整数,然后对其用选择法
          进行由小到大的排序。

    -------------------------------------------------------*/

    #include "stdlib.h"
    main()
    {
      /***********SPACE***********/
      【?】;
       int i,j,k;
       int a[10];
       for(i=0;i<10;i++)
         a[i]=random(61)+30;
       for(i=0;i<9;i++)
       {
          /***********SPACE***********/
          【?】;
          for(j=i+1;j<10;j++)
            /***********SPACE***********/
          if(【?】) k=j;
          if(k!=i) 
          {
               t=a[k];
               a[k]=a[i];
               a[i]=t;
          }
       } 
       /***********SPACE***********/
       for(【?】 )
         printf("%5d",a[i]);
       printf("\n");
    }
    答案:
       1). int t
       2). k=i
       3). a[k]>a[j] 或 a[j]    4). i=0;i<10;i++ 或 i=0;10>i;i++ 或 i=0;i<=9;i+=1 或 i=0;9>=i;i++ 或 i=0;i<10;i+=1 或 i=0;10>i;i+=1 或 i=0;i<=9;i++ 或 i=0;9>=i;i+=1 或 i=0;i<10;++i 或 i=0;10>i;++i 或 i=0;9>=i;++i 或 i=0;i<=9;++i


    第28题 (9.0分)  题号:21
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:将一个字符串中的前N个字符复制到一个字符数组中去,
          不许使用strcpy函数。

    -------------------------------------------------------*/

    main ( )
    {
      char str1[80],str2[80];
      int i,n;
      /***********SPACE***********/
      gets(【?】);
      scanf("%d",&n);
      /***********SPACE***********/
      for (i=0; 【?】 ;i++)
      /***********SPACE***********/
        【?】;
      /***********SPACE***********/
      【?】;
      printf("%s\n",str2);

    }

    答案:
       1). str1
       2). ii 或 i<=n-1 或 n-1>=i
       3). str2[i]=str1[i] 或 *(str2+i)=*(str1+i) 或 *(str2+i)=str1[i] 或 str2[i]=*(str1+i)
       4). str2[n]='\0' 或 str2[i]='\0' 或 str2[n]=0 或 str2[i]=0 或 *(str2+n)='\0' 或 *(str2+i)='\0' 或 *(str+n)=0 或 *(str2+i)=0


    第29题 (9.0分)  题号:403
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:输出9*9口诀。

    -------------------------------------------------------*/

    main()
    {
      int i,j,result;
      printf("\n");
      /***********SPACE***********/
      for (i=1;【?】;i++)
      { 
        /***********SPACE***********/
        for(j=1;j<10;【?】)
        {
          result=i*j;
          /***********SPACE***********/
          printf("%d*%d=%-3d",i,j,【?】);
        }
      printf("\n");
      }
    }

    答案:
       1). i<10 或 10>i
       2). j++ 或 ++j 或 j=j+1
       3). result


    第30题 (9.0分)  题号:462
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:把字符串中所有的字母改写成该字母的下一个字母,最后
          一个字母z改写成字母a。大字母仍为大写字母,小写字母
          仍为小写字母,其它的字符不变。
    例如:原有的字符串为:“Mn.123xyZ”,调用该函数后,串中的
          内容为:“No.123yzA”。

    -------------------------------------------------------*/

    #include
    #include
    #include
    #define   N   81

    main( )
    {   
      char   a[N],*s;
      printf ( "Enter a string :  " );
      gets ( a );
      printf ( "The original string is :  " );
      puts( a );
      /***********SPACE***********/
      【?】;                                                
      while(*s)
      {
        if(*s=='z')
          *s='a';
        else if(*s=='Z')
          *s='A';
        else if(isalpha(*s)) 
        /***********SPACE***********/     
          【?】;                        
        /***********SPACE***********/
          【?】;                                        
      }
      printf ( "The string after modified :  ");
      puts ( a );
    }
    答案:
       1). s=a
       2). *s+=1 或 *s=*s+1 或 (*s)++ 或 ++(*s)
       3). s++ 或 s=s+1 或 ++s 或 s= s + 1


    第31题 (9.0分)  题号:415
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:数组名作为函数参数,求平均成绩。

    -------------------------------------------------------*/

    float aver(float a[ ])             /*定义求平均值函数,形参为一浮点型数组名*/
    {
      int i;
      float av,s=a[0];
      for(i=1;i<5;i++)
      /***********SPACE***********/
      s+=【?】[i];
      av=s/5;
      /***********SPACE***********/
      return 【?】;
    }

    void main()
    {
      float sco[5],av;
      int i;
      printf("\ninput 5 scores:\n");
      for(i=0;i<5;i++)
      /***********SPACE***********/
        scanf("%f",【?】);
      /***********SPACE***********/
      av=aver(【?】);
      printf("average score is %5.2f\n",av);
      getch();
    }
    答案:
       1). a
       2). av 或 (av)
       3). &sco[i] 或 sco+i
       4). sco


    第32题 (9.0分)  题号:488
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:有一组基数值(正整数),输入一个正整数(小于100),
          问:如果该数由基数值相加构成(每个基数可以重复使用)
          ,那么最少可能利用的基数是多少个。

    -------------------------------------------------------*/

    #include  
    #include  

    #define   MAXSIZE   100
    #define   min(a,b)  ((a) <= (b) ? (a) : (b))

    void  main(void)
    {
      int  num[MAXSIZE+1];
      int  base[] = { 1, 3, 4 };
      int  k= sizeof(base)/sizeof(int);
      int  n;
      int  i, j, MIN;
      char line[100];
      printf("\n============================");
      printf("\n\nBase Values : ");
      for (i = 0; i < k; i++)
        printf("%d ", base[i]);
      printf("\n\nYour input please --> ");
      gets(line);
      n = atoi(line);
      num[0] = 0;
      num[1] = 1;
      for (i = 2; i <= n; i++) 
      {
        /***********SPACE***********/
        【?】;                                        
        for (j = 0; j < k; j++)
          if (i >= base[j])
            MIN = min(num[i-base[j]]+1, MIN);        
          /***********SPACE***********/
          【?】;                                        
      }
      /***********SPACE***********/
      printf("\n\nMinimum = %d", 【?】);                        
    }
    答案:
       1). MIN = n
       2). num[i] = MIN
       3). num[n]


    第33题 (9.0分)  题号:396
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:输入数组,最大的与最后一个元素交换,最小的与第一个元
          素交换,输出数组。

    -------------------------------------------------------*/

    main()
    {
      int number[10];
      input(number);
      max_min(number);
      output(number);
    }

    input(number)
    int number[10];
    {
      int i;
      /***********SPACE***********/
      for(i=0;【?】;i++)
        scanf("%d,",&number[i]);
        scanf("%d",&number[9]);
    }

    max_min(array)
    int array[10];
    {
      int *max,*min,k,l;
      int *p,*arr_end;
      arr_end=array+10;
      max=min=array;
      for(p=array+1;p     if(*p>*max) 
          max=p;
      else if(*p<*min) 
        /***********SPACE***********/
        【?】;
      k=*max;
      l=*min;
      *p=array[0];
      array[0]=l;
      /***********SPACE***********/
      【?】;
      *p=array[9];
      /***********SPACE***********/
      【?】;
      k=*p;
      return;
    }

    output(array)
    int array[10];
    {
      int *p;
      for(p=array;p   printf("%d,",*p);
      printf("%d\n",array[9]);
    }
    答案:
       1). i<9 或 9>i
       2). min=p
       3). l=*p
       4). array[9]=k


    第34题 (9.0分)  题号:480
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:输出Fibonacci数列的前15项,要求每行输出5项。
          Fibonacci数列:1,1,2,3,5,8,13...........

    -------------------------------------------------------*/

    #include

    main()
    {
      /***********SPACE***********/
      int 【?】[14],i;                                
      fib[0]=1;fib[1]=1;
      for (i=2;i<15;i++)
        /***********SPACE***********/
        fib[i]=【?】;                                        
      for(i=0;i<15;i++)
      {
        printf("%d\t",fib[i]);
        /***********SPACE***********/
        if ( 【?】 ) printf("\n");                        
      }
    }
    答案:
       1). fib
       2). fib[i-2]+fib[i-1] 或 fib[i-2] + fib[i-1]
       3). i%5 == 4


    第35题 (9.0分)  题号:5
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:将一个字符串中下标为m的字符开始的全部字符复制成为另
          一个字符串。

    -------------------------------------------------------*/

    #include
    void strcopy(char *str1,char *str2,int m)

       char *p1,*p2; 
       /***********SPACE***********/
       【?】;  
       p2=str2;
       while(*p1)
       /***********SPACE***********/
       【?】; 
       /***********SPACE***********/
       【?】;
    }
    main()
    {
       int i,m;
       char str1[80],str2[80];
       gets(str1); 
       scanf("%d",&m);
       /***********SPACE***********/
       【?】; 
       puts(str1);puts(str2);
    }

    答案:
       1). p1= str1 + m
       2). *p2++=*p1++ 或 *(p2++)=*(p1++) 或 *p2=*p1,p2++,p1++ 或 *p2=*p1++,p2++ 或 *p2++=*p1,p1++
       3). *p2='\0' 或 *p2=0 或 *p2=NULL
       4). strcopy(str1,str2,m)


    第36题 (9.0分)  题号:414
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:通过函数的递归调用计算阶乘。

    -------------------------------------------------------*/

    long power(int n)
    {
      long f;
      if(n>1)
        /***********SPACE***********/
        f=【?】;
      else  
         f=1;
      return(f);
    }
    main()
    {
      int n;
      long y;
      printf("input a inteager number:\n");
      /***********SPACE***********/
      scanf("%d",【?】);
      y=power(n);
      /***********SPACE***********/
      printf("%d!=%ld\n",n,【?】);
      getch();
    }
    答案:
       1). power(n-1)*n 或 power( n - 1 ) * n 或 n*power(n-1)
       2). &n
       3). power(n) 或 y


    第37题 (9.0分)  题号:431
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:计算圆周率的近似值。

    -------------------------------------------------------*/

    #include
    #include
    main()
    {
      int s;
      /***********SPACE***********/
      float n,【?】;
      double t;
      t=1;pi=0;n=1;s=1;
      /***********SPACE***********/
      while(【?】>=2e-6)
      {
        pi+=t;n+=2;s=-s;t=s/n;
      }
      /***********SPACE***********/
      pi*=【?】;
      printf("pi=%.6f\n",pi);
    }
    答案:
       1). pi
       2). fabs(t)
       3). 4


    第38题 (9.0分)  题号:409
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:输入数组,最大的与第一个元素交换,最小的与最后一个
          元素交换,输出数组。

    -------------------------------------------------------*/

    main()
    {
      int number[10];
      input(number);
      max_min(number);
      output(number);
    }

    input(number)
    int number[10];
    {
      int i;
      /***********SPACE***********/
      for(i=0;i<9;【?】)
      scanf("%d,",&number[i]);
      scanf("%d",&number[9]);
    }

    /***********SPACE***********/
    max_min(【?】)
    int array[10];
    {
      int *max,*min,k,l;
      int *p,*arr_end;
      /***********SPACE***********/
      arr_end=【?】;
      max=min=array;
      for(p=array+1;p     if(*p>*max) max=p;
      /***********SPACE***********/
        else if(【?】) min=p;
      k=*max;
      l=*min; 
      *p=array[0];array[0]=l;l=*p;
      *p=array[9];array[9]=k;k=*p;
      return;
    }

    output(array)
    int array[10];
    {
      int *p;
      for(p=array;p   printf("%d,",*p);
      printf("%d\n",array[9]);
    }
    答案:
       1). i++ 或 i=i+1 或 ++i
       2). array
       3). array+10 或 10+array
       4). *p<*min 或 *min>*p


    第39题 (9.0分)  题号:486
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:删除字符串中的数字字符。
    例如:输入字符串:48CTYP9E6,则输出:CTYPE。

    -------------------------------------------------------*/

    #include
    /***********SPACE***********/
    void  fun (【?】)                        
    {
      char *p=s;
      while(*p)
        if((*p>='0')&&(*p<='9')) p++;        
          /***********SPACE***********/
        else *s++=【?】;                        
          /***********SPACE***********/
          【?】;                                
    }

    main( )
    {
      char item[100] ;
      printf("\nEnter a string: ");
      gets(item); fun(item);
      printf("\nThe string:\"%s\"\n",item);
    }
    答案:
       1). char *s 或 char s[]
       2). *p++
       3). *s='\0' 或 *s=0


    第40题 (9.0分)  题号:474
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:读入一行字符(如:a、...y、z),按输入时的逆序建立一个
          链接式的结点序列,即先输入的位于链表尾,然后再按输入
          的相反顺序输出,并释放全部结点。

    -------------------------------------------------------*/

    #include
    main( )

      struct node
      {
        char info;
        struct node *link;
      } *top,*p;

      char c;
      top=NULL;
      /***********SPACE***********/
      while((c= 【?】) != '\n'  )                
      {
        p=(struct node *)malloc(sizeof(struct node));
        p->info=c;
        p->link=top;
        /***********SPACE***********/
        【?】;                                        
      }
      while( top )
      {
        p=top;
        /***********SPACE***********/ 
        【?】;                                        
        putchar(p->info);
        free(p);
      }
    }
    答案:
       1). getchar( )
       2). top=p
       3). top=top->link


    第41题 (9.0分)  题号:475
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:下面create函数的功能是建立一个带头结点的单向链表,
          新产生的结点总是插入在链表的末尾。输入0代表结束,单
          向链表的头指针作为函数值返回。

    -------------------------------------------------------*/

    #include

    #define LEN sizeof(struct student)

    struct student
    {
      long num;
      struct student *next;
    };

    struct student *creat()
    {
      struct student *head=NULL,*tail;
      long num;
      int a;
      /***********SPACE***********/
      tail=(【?】)malloc(LEN);                                
      printf("please input date\n");
      do
      {
        scanf("%ld",&num);
        /***********SPACE***********/
        if(【?】)                                                
        {
          /***********SPACE***********/
          if(【?】) 
            head=tail;                                        
          else 
            tail=tail->next;
          tail->num=num;
          tail->next=(struct list *)malloc(LEN);
        }
        else 
          tail->next=NULL;
       }while(num!=0);
      return(head) ;
    }

    main()
    {
      struct student *p;
      p=creat();
      printf("you input  is\n");
      while(p)
      {
        printf("%d\n",p->num);
        p=p->next;
      }
    }
    答案:
       1). struct student *
       2). num!=0 或 0!=num
       3). head == NULL


    第42题 (9.0分)  题号:468
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能: 对一数组进行逐步累加求和,prefix代表从前向后累加值,
          suffix代表从后向前累加值,问在此过程中prefix与suffix
          有几次值相同?

    -------------------------------------------------------*/

    int  head_tail(int  x[], int n)
    {
      int  prefix     = 0, suffix     = 0;
      int  prefix_idx = 0, suffix_idx = n-1;
      int  count = 0;
      while (suffix_idx >= 0 && prefix_idx <= n-1)
        /***********SPACE***********/                                
        if ( 【?】)                              
          prefix += x[prefix_idx++];
        else if (prefix > suffix) 
          /***********SPACE***********/
          suffix += x[【?】];                
        else 
        {                                    
          /***********SPACE***********/
          【?】;                                                   
          prefix += x[prefix_idx++]; 
          suffix += x[suffix_idx--]; 
        }
      return count;
    }

    #include  

    void main(void)
    {
      int  x[] = { 3, 6, 2, 1, 4, 5, 2};
      int  n   = sizeof(x)/sizeof(int);
      int  i;
      printf("\nHead Sum == Tail Sum Counting Program");
      printf("\n=====================================\n");
      printf("\nGiven Array :");
      for (i = 0; i < n; i++)
        printf("%5d", x[i]);
      printf("\n\nThere are %d equal Prefix-Suffix sum pairs.",head_tail(x, n));
    }
    答案:
       1). prefix < suffix 或 suffix>prefix
       2). suffix_idx-- 或 suffix_idx= suffix_indx -1 或 --suffix_idx
       3). count++ 或 count=count+1


    第43题 (9.0分)  题号:484
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:识别输入的字符串,每个单词输出一行

    -------------------------------------------------------*/

    #include
    #include
    void main()
    {
      int c;
      int inspace;
      /***********SPACE***********/
      【?】;                                        
      while((c = getchar()) != '\n')
      {
        if(c == ' ' || c == '\t' || c == '\n')
        {
          /***********SPACE***********/
          if(【?】)                                        
          {
            inspace = 1;
            putchar('\n');
          }
        }
        else
        {
          inspace = 0;
          /***********SPACE***********/
          【?】;                                        
        }
      }
    }
    答案:
       1). inspace = 0
       2). inspace == 0
       3). putchar(c)


    第44题 (9.0分)  题号:440
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:先将在字符串s中的字符按正序存放到t串中,然后把s中的
          字符按逆序连接到t串的后面。

    -------------------------------------------------------*/

    #include
    #include
    #include  

    void fun (char *s, char *t)

      int i, sl;
      /***********SPACE***********/
      sl = 【?】;  
      for(i=0; i     t[i] = s[i];
      for (i=0; i     /***********SPACE***********/
        t[sl+i] = 【?】; 
      /***********SPACE***********/
      t[sl+i]=【?】; 
    }

    main()
    {
      char s[100], t[100];
      clrscr();
      /***********SPACE***********/
      printf("\nPlease enter string s:"); 【?】("%s",s);
      fun(s, t);
      printf("The result is: %s\n", t);
    }

    答案:
       1). strlen(s)
       2). s[sl-i-1] 或 s[ sl -i -1 ]
       3). '\0' 或 0
       4). scanf


    第45题 (9.0分)  题号:425
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:当输入“2,5”的时候输出为“2 5 5”

    -------------------------------------------------------*/

    #include
    #define max 100

    main()
    {
      int f[max],i,j,k,m;
      scanf("%d,%d",&k,&m);
      /***********SPACE***********/
      for(i=0;i<=【?】;i++)f[i]=0;
        /***********SPACE***********/
        f[【?】]=1;
      for(i=k;i<=m;i++)
        /***********SPACE***********/
        for(j=i-k;j<=i-1;j++)f[i]【?】f[j];
          printf("%d%10d%10d\n",k,m,f[m]);
    }
    答案:
       1). m
       2). k-1 或 k -1
       3). += 或 =1+


    第46题 (9.0分)  题号:444
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:用指向指针的指针的方法对n个字符串排序并输出。

    ---------------------------------------------------------*/

    #include "string.h"
    #define N 100

    void sort();

    main()
    {
      int i,n;
      char **p,*str[N],name[N][20];
      printf("n=");scanf("%d",&n);
      /***********SPACE***********/
      if(n<2【?】n>N) exit(0);
      for(i=0;i   printf("Input %d strings:\n",n);
      for(i=0;i   {
        printf("name[%d]=",i);
        /***********SPACE***********/
        scanf("%s",【?】);
      }
      printf("String arry:\n");
      for(i=0;i   {
        p=str+i;
        printf("%s\n",*p);
      }
      p=str;
      sort(p,n);
      printf("String sort:\n");
      for(i=0;i   {
        p=str+i;
        printf("%s\n",*p);
      }
      getch();
    }
    /***********SPACE***********/
    void sort(char 【?】,int n)
    {
      int i,j;
      char *s;
      for(i=0;i     for(j=i+1;j       if(strcmp(p[i],p[j])>0)
          {
            s=p[i];
            /***********SPACE***********/
            【?】;
            p[j]=s;
          }
    }
    答案:
       1). ||
       2). str[i]
       3). **p
       4). p[i]=p[j]


    第47题 (9.0分)  题号:32
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:计算并输出500以内最大的10个能被13或17整除的自然数之和。

    -------------------------------------------------------*/

    #include
    #include
    /***********SPACE***********/
    int fun(【?】 )
    {
      int m=0,  mc=0, j, n;
      /***********SPACE***********/
      while (k >= 2 && 【?】) 
      {
      /***********SPACE***********/
        if (k%13 == 0 || 【?】)
        {
           m=m+k;
           mc++; 
        }
        k--;
      }
      /***********SPACE***********/
      【?】;
    }
    main ( )

      clrscr( );
      printf("%d\n", fun (500));
    }

    答案:
       1). int  k
       2). mc < 10 或 10 > mc 或 mc <= 9 或 9 >= mc
       3). k%17  ==  0 或 !(k%17) 或 k/17*17 == k
       4). return m 或 return (m)


    第48题 (9.0分)  题号:456
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:利用指向结构的指针编写求某年、某月、某日是第
          几天的程序,其中年、月、日和年天数用结构表示。

    -------------------------------------------------------*/

    main()
    {
    /***********SPACE***********/
     【?】 date
     {
        int y,m,d,n;
      /***********SPACE***********/
      }【?】;
     
      int k,f,a[12]={31,28,31,30,31,30,31,31,30,31,30,31};
      printf("date:y,m,d=");
      scanf("%d,%d,%d",&x.y,&x.m,&x.d);
      f=x.y%4==0&&x.y%100!=0||x.y%400==0;
      /***********SPACE***********/
      a[1]+=【?】;
      if(x.m<1||x.m>12||x.d<1||x.d>a[x.m-1]) exit(0);
      for(x.n=x.d,k=0;k     /***********SPACE***********/
        printf("n=%d\n",【?】);
    }

    答案:
       1). struct
       2). x
       3). f
       4). x.n


    第49题 (9.0分)  题号:420
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:计算某日是当年的第几天。

    -------------------------------------------------------*/

    #include

    struct 
    {
      int year;
      int month;
      int day;
    }data;    /* 定义一个结构并声明对象为data */

    void main()
    {
      int days;
      printf("请输入日期(年,月,日):");
      scanf("%d, %d, %d", &data.year, &data.month, &data.day);
      switch(data.month)
      {
        case 1:days = data.day;
               break;
        /***********SPACE***********/
        case 2:days = data.day+【?】;
               break;
        case 3:days = data.day+59;
               break;
        case 4:days = data.day+90;
               break;
       /***********SPACE***********/
        case 5:days = data.day+【?】;
               break;
        case 6:days = data.day+151;
               break;
        case 7:days = data.day+181;
               break;
        case 8:days = data.day+212;
               break;
        case 9:days = data.day+243;
               break;
       case 10:days = data.day+273;
               break;
       case 11:days = data.day+304;
               break;
       case 12:days = data.day+334;
               break;
      }
      /***********SPACE***********/
      if(data.year%4==0&&data.year%100!=0【?】data.year%400==0)
        if(data.month>=3)
          /***********SPACE***********/
          days =【?】;
      printf("%d月%d日是%d年的第%d天.\n", data.month, data.day, data.year, days);
    }
    答案:
       1). 31
       2). 120
       3). ||
       4). days + 1 或 1+days 或 ++days


    第50题 (9.0分)  题号:458
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:用等分法在有序的循环数组中,找到最小元素的位置。

    -------------------------------------------------------*/

    int  cyclic_min(int  x[], int n)
    {
      int  left  = 0;
      int  right = n - 1;
      int  mid;
      /***********SPACE***********/
      while (【?】) 
      {                        
        mid = (left + right)/2;
        if (x[mid] < x[right])
          /***********SPACE***********/
           【?】;                        
        else
          /***********SPACE***********/
          【?】;                        
      }
      return left;
    }


    #include  
    void  main(void)
    {
         int  x[] = { 20, 23, 28, 35, 39, 40, 42, 8, 10, 15, 17, 19};
         int  n   = sizeof(x)/sizeof(int);
         int  loc, i;

         printf("\nFind Cyclic Minimum");
         printf("\n===================");
         printf("\n\nGiven Array Sorted in Cyclic Fashion :\n");
         for (i = 0; i < n; i++)
              printf("%3d", x[i]);
         loc = cyclic_min(x, n);
         printf("\n\nMinimum is located at x[%d] = %d", loc, x[loc]);
    }
    答案:
       1). left < right 或 right>left
       2). right = mid
       3). left  = mid + 1 或 left  = 1+mid


    第51题 (9.0分)  题号:469
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:用递归法将一个整数n转换成字符串,例如输入483,应输出
          对应的字符串"483"。n的位数不确定,可以是任意位数的整
          数。

    -------------------------------------------------------*/

    #include

    void convert(int n)
    {
      int i;
      /***********SPACE***********/
      if((【?】)!=0)                        
        convert(i);
      /***********SPACE***********/
      putchar(n%10+【?】);                
    }

    main()
    {
      int number;
      printf("\nInput an integer:");
      scanf("%d",&number);
      printf("Output:");
      if(number<0)
      {
        putchar('-');
        /***********SPACE***********/
        【?】;                        
      }
      convert(number);
    }
    答案:
       1). i=n/10
       2). '0'
       3). number=-number


    第52题 (9.0分)  题号:481
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:一个自然数被 8 除余 1 ,所得的商被 8 除也余 1 ,再
          将第二次的商被8 除后余7 ,最后得到一个商为a。又知这
          个自然数被17除余4 ,所得的商被17除余15,最后得到一
          个商是a的2倍。编写程序求这个自然数。

    -------------------------------------------------------*/

    main( ) 
    {
      int i,n,a ;
      i=0 ;
      while(1)
      {
        if(i%8==1) 
        { 
          n=i/8 ;
          if(n%8==1)
          {
            n=n/8 ;
            /***********SPACE***********/
            if(n%8==7) 【?】 ;                        
          } 
        } 
        if(i%17==4) 
        {
          n=i/17 ;
          if(n%17==15) n=n/17 ;
        } 
        if(2*a==n) 
        { 
          printf("result=%d\n",i) ;
          /***********SPACE***********/
          【?】 ;                                        
        } 
        /***********SPACE***********/
        【?】;                                                
      } 

    答案:
       1). a=n/8
       2). break
       3). i++ 或 ++i 或 i=i+1


    第53题 (9.0分)  题号:450
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:一个40磅重的板碎成4块,每块正好是一个整数磅,且用这
          4块当砝码能称出1~40磅的整数重量的物体。编程求这4块
          的各自重量。

    -------------------------------------------------------*/

    main()
    {
      int i,j,k,l,p,t1,t2,t3,t4;
      for(i=1;i<38;i++)
        /***********SPACE***********/
        for(【?】;j<38-i;j++)
          /***********SPACE***********/
          for(k=j;k<【?】;k++)
          {
            l=40-i-j-k;
            for(p=1;p<40;p++)
            {
              for(t1=-1;t1<2;t1++)
                for(t2=-1;t2<2;t2++)
                  for(t3=-1;t3<2;t3++)
                    for(t4=-1;t4<2;t4++)
                      /***********SPACE***********/
                      if(【?】==p) goto next;
              break;
              /***********SPACE***********/
              next:if(p==【?】)
                   {
                      printf("%d,%d,%d,%d\n",i,j,k,l);
                      exit(0);
                   }
          }
      }
      printf("error.");
    }

    答案:
       1). j=i
       2). 39-i-j 或 39 -i -j
       3). i*t1+j*t2+k*t3+l*t4 或 i * t1 + j * t2 + k * t3 + l * t4
       4). 39


    第54题 (9.0分)  题号:27
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:统计一个字符串中的字母、数字、空格和其它字符的个数。

    -------------------------------------------------------*/

    #include "stdio.h"
    main ()
    {
      char s1[80];int a[4]={0};
      int k;
      /***********SPACE***********/
      【?】;
      gets(s1);
      /***********SPACE***********/
      【?】;
      puts(s1);
      for(k=0;k<4;k++)
        printf("%4d",a[k]);
    }
    void fun(char s[],int b[])
    {
      int i;
      for (i=0;s[i]!='\0';i++)
      if ('a'<=s[i]&&s[i]<='z'||'A'<=s[i]&&s[i]<='Z') 
        b[0]++;
      /***********SPACE***********/
      else if (【?】) 
        b[1]++;
      /***********SPACE***********/
      else if (【?】 ) 
        b[2]++;
      else
        b[3]++;
    }

    答案:
       1). void fun(char s[],int b[])
       2). fun(s1,a)
       3). '0'<=s[i] && s[i]<='9' 或 s[i]>='0' && s[i]<='9' 或 '0'<=s[i] && '9'>=s[i] 或 s[i]>='0' && '9'>=s[i] 或 48<=s[i] && s[i]<=57 或 s[i]>=48 && s[i]<=57 或 48<=s[i] && 57>=s[i] 或 s[i]>=48 && 57>=s[i] 或 !( x < 48 || x > 57 ) 或 !( x < '0' || x > '9' )
       4). s[i] == ' ' 或 s[i] == 32


    第55题 (9.0分)  题号:457
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:功能:定义一个结构变量(包括年、月、日)计算给定日
          期是该年的第几天。

    -------------------------------------------------------*/

    main()
    {
    /***********SPACE***********/
      【?】 date
      {
         int y,m,d;
      }da;
      
      int f,n,p,a[12]={31,28,31,30,31,30,31,31,30,31,30,31};
      printf("y,m,d=");
      scanf("%d,%d,%d",&da.y,&da.m,&da.d);
      /***********SPACE***********/
      f=da.y%4==0&&da.y%100【?】0||da.y%400==0;
      /***********SPACE***********/
      if(da.m<1【?】da.d>12) exit(0);
      a[11]+=f;
      if(da.d<1||da.d>a[da.m-1]) exit(0);
      /***********SPACE***********/
      for(n=【?】,p=1;p     printf("n=%d\n",n);
    }

    答案:
       1). struct
       2). !=
       3). ||
       4). da.d


    第56题 (9.0分)  题号:404
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:从键盘上输入两个复数的实部与虚部,求出并输出它们的
          和、差、积、商。

    -------------------------------------------------------*/

    #include
    void main()
    {
      float a,b,c,d,e,f;
      printf("输入第一个复数的实部与虚部:");
      scanf("%f, %f",&a,&b);
      printf("输入第二个复数的实部与虚部:");
      scanf("%f, %f",&c,&d);
      /***********SPACE***********/
      【?】;
      f=b+d;
      printf("相加后复数:实部:%f,虚部:%f\n",e,f);
      e=a*c-b*d;
      /***********SPACE***********/
      【?】;
      printf("相乘后复数:实部:%f,虚部:%f\n",e,f);
      e=(a*c+b*d)/(c*c+d*d);
      /***********SPACE***********/
      【?】;
      printf("相除后复数:实部:%f,虚部:%f\n",e,f);
    }
    答案:
       1). e=a+c 或 e=c+a
       2). f=a*d+b*c 或 f= a*d + b*c 或 f= a * d + b * c
       3). f=(b*c-a*d)/(c*c+d*d) 或 f=(b*c-a*d) / (c*c+d*d) 或 f=( b * c - a * d ) / ( c * c + d * d )


    第57题 (9.0分)  题号:9
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:以下程序的功能如(图1)。

    -------------------------------------------------------*/

    #include
    main()

      int f;
      /***********SPACE***********/
     【?】;
      float t,pi;
      t=1;pi=t;f=1;n=1.0;
      /***********SPACE***********/
      while(【?】 )
      {
        n=n+2;
        /***********SPACE***********/
        【?】;
        t=f/n;
        pi=pi+t;
      }
      /***********SPACE***********/
      【?】;
       printf("pi=%10.6f\n",pi);
    }

    答案:
       1). float n 或 duoble n
       2). fabs(t)>=1e-6 或 fabs(t)>=0.000001 或 1e-6<=fabs(t) 或 0.000001<=fabs(t)
       3). f=-f 或 f=-1*f 或 f=f*(-1) 或 f=f*-1 或 f=(-1)*f
       4). pi= pi * 4 或 pi*=4


    第58题 (9.0分)  题号:490
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:利用函数计算连续的数组元素累加和的最大值。如果最大
          值是负数则返回0;

    -------------------------------------------------------*/

    /***********SPACE***********/
    int  max_sum( 【?】, int n)                        
    {
      int  max_ending_here = 0;
      int  max_so_far      = 0;
      int  i;
      for (i = 0; i < n; i++) 
      {
        if (max_ending_here + x[i] < 0)
          /***********SPACE***********/
          【?】;                                
        else
          max_ending_here += x[i];
        if (max_ending_here > max_so_far)
          max_so_far = max_ending_here;
      }
      /***********SPACE***********/
      【?】;                                        
    }


    #include  
    void main(void)
    {
      int  x[] = { 2, -3, 1, -1, 3, -2, -3, 3};
      int  n   = sizeof(x)/sizeof(int);
      int  i;
      printf("\nMaximum Consecutive Elements Sum Program");
      printf("\n========================================");
      printf("\n\nGiven Array :");
      for (i = 0; i < n; i++)
        printf("%4d", x[i]);
      printf("\n\nMaximum Sum is %d", max_sum(x, n));
    }
    答案:
       1). int x[]
       2). max_ending_here = 0
       3). return max_so_far


    第59题 (9.0分)  题号:452
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:从键盘输入若干行字符,输入后把他们存储到一磁盘文件
          中。在从该文件中读出这些数据,将其中的小写字母转换
          成大写字母后在屏幕上输出。

    -------------------------------------------------------*/

    #include "stdio.h"
    #define N 100

    main()
    {
      FILE *fp;
      char c,*p,s[N][20];
      int i,n;
      printf("n=");scanf("%d",&n);
      /***********SPACE***********/
      if(n<1【?】n>N) exit(0);
      printf("Input%d string:\n",n);
      for(i=0;i     scanf("%s",s[i]);
      /***********SPACE***********/
      fp=fopen("text",【?】);
      for(i=0;i   {
        p=s[i];
        /***********SPACE***********/
        while(*p!='\0')
          if(!ferror(fp)) fputc(【?】,fp);
      }
      fclose(fp);
      printf("\n");
      /***********SPACE***********/
      fp=fopen("text",【?】);
      while((c=fgetc(fp))!=EOF)
      {
        if(c>'a'&&c<='z')c-+32;
        putchar(c);
      }
      printf("\n");
      fclose(fp);
    }

    答案:
       1). ||
       2). "w"
       3). *p++
       4). "r"


    第60题 (9.0分)  题号:20
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:求两个非负整数的最大公约数和最小公倍数。

    -------------------------------------------------------*/

    main()
    {
      int m,n,r,p,gcd,lcm;
      scanf("%d%d",&m,&n);
      if(m   p=m*n;
      r=m%n;
      /***********SPACE***********/
      while(【?】 )
      {
      /***********SPACE***********/
        m=n;n=r; 【?】;
       }
       /***********SPACE***********/
       gcd=【?】; 
       lcm=p/gcd;
       /***********SPACE***********/
       printf("gcd=%d,lcm=%d\n", 【?】);
    }

    答案:
       1). r != 0 或 r
       2). r=m%n 或 r=m-m/n*n
       3). n
       4). gcd,lcm 或 n,lcm


    第61题 (9.0分)  题号:487
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:输入一个整数,计算它可能是哪两个整数的平方和,并打印
         结果数据。
         如:34是5和3或3和5的平方和。

    -------------------------------------------------------*/

    #include             /* for I/O functions        */
    #include            /* for atoi()               */
    #include              /* for sqrt()               */

    void  main(void)
    {
      int  given;              /* the given number         */
      int  row, column;        /* row and column indicators*/
      int  count;              /* number of solutions      */
      char line[100];
      printf("\nRepresenting a Given Number as the Sum of Two Squares");
      printf("\n=====================================================\n");
      printf("\nAn Integer Please ---> ");
      gets(line);
      given = atoi(line);
      printf("\nCount      X      Y");
      printf("\n-----  -----  -----");
      row    = 1;              /* starts from far enough   */
      column = (int) (sqrt((double) given) + 0.5);
      count  = 0;              /* so solution yet          */
      while (row <= given && column > 0)  /* scan down...  */
        if (row*row + column*column == given) 
        {
          /***********SPACE***********/
          【?】;                                        
          printf("\n%5d%7d%7d", count, row, column);
          row++;
          column--;
        }
        else if (row*row + column*column > given)
          /***********SPACE***********/
          【?】;                                        
        else
          /***********SPACE***********/
          【?】;                                        
      if (count == 0)
        printf("\n\nSorry, NO ANSWER found.");
      else
        printf("\n\nThere are %d possible answers.",count);
    }
    答案:
       1). count++ 或 ++count 或 count=count++1
       2). column-- 或 --column 或 column=column-1
       3). row++ 或 ++row 或 row= row + 1


    第62题 (9.0分)  题号:455
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:要求输出结果为3。

    -------------------------------------------------------*/

    #include

    main() 
    {
      /***********SPACE***********/
      int m=1,n=1,【?】;
      s=akm(m,n);
      printf("%d",s); 

    /***********SPACE***********/
    akm(【?】,int n)

      if(m==0) 
        /***********SPACE***********/
       【?】 n+1;
      else if(m!=0&&n==0) 
        akm(m-1,1); 
      else if(m!=0&&n!=0) 
        akm(m-1,akm(m,n-1)); 
    }
    答案:
       1). s
       2). int m
       3). return


    第63题 (9.0分)  题号:8
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:以每行5个数来输出300以内能被7或17整除的偶数,并求出
          其和。

    -------------------------------------------------------*/

    #include
    #include
    main()
    {
      int i,n,sum;
      sum=0;
      /***********SPACE***********/
      【?】;
      /***********SPACE***********/
      for(i=1; 【?】 ;i++)
      /***********SPACE***********/
        if(【?】)
          if(i%2==0)
          {
             sum=sum+i;
             n++;
             printf("%6d",i);
             /***********SPACE***********/
             if(【?】)  
                printf("\n");
          }
       printf("\ntotal=%d",sum);
    }

    答案:
       1). n=0
       2). i<=300 或 i<300 或 300>=i 或 300>i
       3).  i%7 == 0 || i%17 == 0 或 !(i%7)||!(i%17) 或 !(i%17)||!(i%7) 或 !(i%7&&i%17)
       4).  n%5 == 0 或 !(n%5) 或 n/5*5==n


    第64题 (9.0分)  题号:34
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:以下程序的功能如(图1)。

    -------------------------------------------------------*/

    #include
    #include
    /***********SPACE***********/
    float fun(【?】, int n) 

      /***********SPACE***********/
      【?】;  
      float xa=0, s; 
      for (j=0; j     xa += x[j]/n;
      /***********SPACE***********/
      【?】;
       for (j=0; j      s += (x[j]-xa)*(x[j]-xa)/n;
      /***********SPACE***********/
      【?】; 
    }
    main ( )

      float x[100] = {193.199, 195.673, 195.757, 196.051, 196.092,196.596,196.579, 196.763};
      clrscr( );
      printf("%f\n", fun (x, 8));

    答案:
       1). float x[] 或 float *x
       2). int j
       3). s = 0 或 s = 0.0
       4). return s 或 return(s)


    第65题 (9.0分)  题号:482
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:找出三个增序数组中值相同的数。

    -------------------------------------------------------*/

    #define  FOUND       1
    #define  NOT_FOUND   0

    int  search(int x[], int y[], int z[], 
                int X, int Y, int Z,
                int *XX, int *YY, int *ZZ)
    {
      *XX = *YY = *ZZ = 0;
      while (*XX < X && *YY < Y && *ZZ < Z) 
      if(x[*XX] < y[*YY])
        (*XX)++;
      else if (y[*YY] < z[*ZZ])
        (*YY)++;
      /***********SPACE***********/
      else if (【?】)                                
        (*ZZ)++;
      else
        /***********SPACE***********/
        【?】;                                        
      return NOT_FOUND;
    }

    #include  
    void main(void)
    {
      int  x[] = { 1, 3, 5,  7,  9, 11, 13, 15, 17, 19};
      int  y[] = { 2, 4, 9, 10, 12, 14, 16, 18, 20, 21};
      int  z[] = { 1, 2, 3,  4,  5,  6,  7,  8,  9, 10};
      int  X   = sizeof(x)/sizeof(int);
      int  Y   = sizeof(y)/sizeof(int);
      int  Z   = sizeof(z)/sizeof(int);
      int  XX, YY, ZZ;
      printf("\nSearch for a Common Element from Three Arrays");
      printf("\n=============================================");
      printf("\n\nFirst Array :\n");
      for (XX = 0; XX < X; XX++)
        printf("%3d", x[XX]);
      printf("\n\nSecond Array :\n");
      for (YY = 0; YY < Y; YY++)
        printf("%3d", y[YY]);
      printf("\n\nThird Array :\n");
      for (ZZ = 0; ZZ < Z; ZZ++)
        printf("%3d", z[ZZ]);
      /***********SPACE***********/
      if (search(x, y, z, X, Y, Z, 【?】) > 0)                
        printf("\n\n%d is common to x[%d], y[%d] and z[%d]",
        x[XX], XX, YY, ZZ);
      else
        printf("\n\nNO COMMON ELEMENT FOUND.");
    }
    答案:
       1). z[*ZZ] < x[*XX] 或 x[*XX]>z[*ZZ]
       2). return FOUND 或 return 1
       3). &XX, &YY, &ZZ


    第66题 (9.0分)  题号:476
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:不用第三个变量,实现两个数的对调操作。

    -------------------------------------------------------*/

    #include
    main()

      int a,b;
      scanf("%d %d",&a,&b);
      printf("a=%d,b=%d\n",a,b);
      /***********SPACE***********/
      a= 【?】 ;                        
      /***********SPACE***********/
      b= 【?】 ;                        
      /***********SPACE***********/
      a= 【?】 ;                        
      printf("a=%d,b=%d\n",a,b);

    答案:
       1). a + b
       2). a-b 或 a -b
       3). a-b 或 a -b


    第67题 (9.0分)  题号:435
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:找出数组中最大值和此元素的下标,数组元素的值由键盘
          输入。

    -------------------------------------------------------*/

    #include "stdio.h"
    void main()
    {
      int a[10],*p,*s,i;
      for(i=0;i<10;i++)
        /***********SPACE***********/
        scanf("%d", 【?】);
      /***********SPACE***********/
      for(p=a,s=a;【?】<10;p++)
        /***********SPACE***********/
        if(*p【?】*s) s=p;
          /***********SPACE***********/
      printf("max=%d,index=%d\n",【?】,s-a);
    }
    答案:
       1). a + i 或 &a[i]
       2). p-a 或 -a+p
       3). >
       4). *s


    第68题 (9.0分)  题号:411
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:有n个人围成一圈,顺序排号。从第一个人开始报数(从1
          到3报数),凡报到3的人退出圈子,问最后留下的是原来
          第几号的那位。

    -------------------------------------------------------*/

    #define nmax 50
    main()
    {
      int i,k,m,n,num[nmax],*p;
      printf("please input the total of numbers:");
      scanf("%d",&n);
      p=num;
      /***********SPACE***********/
      for(i=0;【?】;i++)
       /***********SPACE***********/
      *(p+i)=【?】;
      i=0;
      k=0;
      m=0;
      while(m   {
        /***********SPACE***********/
        if(【?】!=0) k++;
        if(k==3)
        {
          *(p+i)=0;
          k=0;
          m++;
        }
        i++;
        if(i==n) i=0;
      }
      /***********SPACE***********/
      while(【?】) p++;
      printf("%d is left\n",*p);
    }
    答案:
       1). ii
       2). i+1 或 i + 1
       3). *(p+i) 或 *( p + i )
       4). *p==0 或 *p == 0


    第69题 (9.0分)  题号:479
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:十个小孩围成一圈分糖果,老师分给第一个小孩 10 块,第二
         个小孩 2 块,第三个小孩 8 块,第四个小孩 22 块,第五个
         小孩16 块,第六个小孩 4块,第七个小孩 10 块,第八个小孩
         6 块,第九个小孩 14 块,第十个小孩20 块。然后所有的小孩
         同时将自己手中的糖分一半给左边的小孩;糖块数为奇数的人
         可向老师要一块。问经过这样几次调整后大家手中的糖的块数
         都一样?每人各有多少块糖?

     -------------------------------------------------------*/

    main()

      int i,count=0,a[11]={0,10,2,8,22,16,4,10,6,14,20} ;
      /***********SPACE***********/
      while(【?】)                                 
      { 
        for(i=1 ; i<=10 ; i++)
        a[i-1]=a[i-1]/2+a[i]/2 ;
        a[10]=a[10]/2+a[0] ;
        for(i=1 ; i<=10 ; i++)
          /***********SPACE***********/
          if(【?】) a[i]++ ;                        
        for(i=1 ; i<10 ; i++)
          /***********SPACE***********/
          if(a[i]!=a[i+1]) 【?】;                
        if(i==10) 
          break ;
        else 
        {
          a[0]=0 ;
          count++ ;
        } 
      } 
      printf("count=%d number=%d\n",count,a[1]) ;
    }
    答案:
       1). 1
       2). a[i]%2 == 1
       3). break


    第70题 (9.0分)  题号:401
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:输入某年某月某日,判断这一天是这一年的第几天?

    -------------------------------------------------------*/

    main()
    {
      int day,month,year,sum,leap;
      printf("\nplease input year,month,day\n");
      scanf("%d,%d,%d",&year,&month,&day);
      switch(month)
      {
        case 1:sum=0;break;
        case 2:sum=31;break;
        case 3:sum=59;break;
        /***********SPACE***********/
        case 4:【?】;break;
        case 5:sum=120;break;
        case 6:sum=151;break;
        case 7:sum=181;break;
        case 8:sum=212;break;
        case 9:sum=243;break;
        case 10:sum=273;break;
        case 11:sum=304;break;
        case 12:sum=334;break;
        default:printf("data error");break;
      }
      /***********SPACE***********/
     【?】;
      /***********SPACE***********/
      if(year%400==0||(【?】)
        leap=1;
      else
        leap=0;
      /***********SPACE***********/
      if(【?】)
        sum++;
      printf("It is the %dth day.",sum);
    }

    答案:
       1). sum=90
       2). sum=sum+day 或 sum= sum + day
       3). year%4==0&&year%100!=0) 或 year%4 == 0 && year%100 != 0
       4). leap==1&&month>2 或 leap == 1 && month>2 或 leap == 1 && 2


    第71题 (9.0分)  题号:428
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:输入一个学生的生日(年:y0、月:m0、日:d0),并输
          入当前日期(年:y1、月:m1、日:d1)。求出该学生的
          年龄(实足年龄)。

    -------------------------------------------------------*/

    #include
    main()
    {int age,y0,y1,m0,m1,d0,d1;
     printf("输入生日日期(年,月,日)");
    /***********SPACE***********/
     【?】("%d,%d,%d",&y0,&m0,&d0);
     printf("输入当前日期(年,月,日)");
     scanf("%d,%d,%d",&y1,&m1,&d1);
     age=y1-y0;
    /***********SPACE***********/
     if(m0【?】m1)age--;
    /***********SPACE***********/
     if((m0【?】m1)&&(d0>d1))age--;
     printf("age=%3d",age);
    }
    答案:
       1). scanf
       2). >
       3). ==


    第72题 (9.0分)  题号:464
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:输入一奇数n,打印由1->n*n构成的魔方矩阵。魔方矩阵的
          行列及对角线的和都相等。
          魔方矩阵:8 1 6
                    3 5 7
                    4 9 2

    -------------------------------------------------------*/

    #include  
    #include  

    #define   MAXSIZE   20

    void main(void)
    {
      int  matrix[MAXSIZE][MAXSIZE]; 
      int  count;                    
      int  row;                      
      int  column;                   
      int  n;                    
      char line[100];
      printf("\nOdd n Magic Square Generator");
      printf("\n================================");
      printf("\n\nn Please --> ");
      gets(line);
      n = atoi(line);
      if (n > MAXSIZE)
        printf("\n*** ERROR ***  n should be <= %d", MAXSIZE);
      else if (n % 2 == 0)
        printf("\n*** ERROR ***  n must be an odd integer");
      else 
      {
        row    = 0;         
        column = n/2;   
        for (count = 1; count <= n*n; count++) 
        {
          matrix[row][column] = count; 
          /***********SPACE***********/
          if (【?】 == 0)                                          
            row++;    
          else 
          {         
            /***********SPACE***********/
            row= (row == 【?】) ? n - 1 : row - 1;                
            /***********SPACE***********/
            column = (column == 【?】) ? 0 : column + 1;        
          }
        }
        printf("\n\nMagic Square of n %d :\n\n", n);
        for (row = 0; row < n; row++) 
        {
          for (column = 0; column < n; column++)
            printf("%4d", matrix[row][column]);
          printf("\n");
        }
      }
    }
    答案:
       1). count % n
       2). 0
       3). n-1 或 n -1


    第73题 (9.0分)  题号:421
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:输入学生成绩并显示。

    -------------------------------------------------------*/

    # include

    struct student
    {
      char number[6];
      char name[6];
      int  score[3];
    } stu[2];

    void output(struct student stu[2]);

    void main()
    {
      int i, j;
      /***********SPACE***********/
      for(i=0; i<2; 【?】)
      {
        printf("请输入学生%d的成绩:\n", i+1);
        printf("学号:");
        /***********SPACE***********/
        scanf("%s", 【?】.number);
        printf("姓名:");
        scanf("%s", stu[i].name);
        for(j=0; j<3; j++)
        {
          printf("成绩 %d.  ", j+1);
          /***********SPACE***********/
          scanf("%d", 【?】.score[j]);
        }
        printf("\n");
      }
      output(stu);
    }

    void output(struct student stu[2])
    {
      int i, j;
      printf("学号  姓名  成绩1  成绩2  成绩3\n");
      for(i=0; i<2; i++)
      {
      /***********SPACE***********/
      【?】("%-6s%-6s", stu[i].number, stu[i].name);
      for(j=0; j<3; j++)
        printf("%-8d", stu[i].score[j]);
        printf("\n");
      }
    }
    答案:
       1). i++ 或 ++i 或 i=i+1
       2). &stu[i]
       3). &stu[i]
       4). printf


    第74题 (9.0分)  题号:463
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:输入一正整数n、打印1-n能够组成的所有自然数集合
         (包含空集)。

    -------------------------------------------------------*/

    #include  
    #include  

    #define   MAXSIZE      20
    #define   LOOP          1

    void main(void)
    {
      int  set[MAXSIZE];
      int  n, i;
      int  position;
      char line[100];
      printf("\nAll Possible Subsets Generation by Lexical Order");
      printf("\n================================================");
      printf("\n\nNumber of Elements in the Set --> ");
      gets(line);
      n = atoi(line);
      printf("\n{}");
      position      = 0;
      set[position] = 1;
      while (LOOP) 
      {
        /***********SPACE***********/
        printf("\n{%d", 【?】);                        
        for (i = 1; i <= position; i++)
          printf(",%d", set[i]);
        printf("}");
        if (set[position] < n) 
        {
          /***********SPACE***********/
          set[【?】] = set[position] + 1;        
          position++;
        }
        else if (position != 0)
          set[--position]++;
        else
        /***********SPACE***********/
          【?】;
      }                                
    }
    答案:
       1). set[0]
       2). position+1
       3). break


    第75题 (9.0分)  题号:426
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:百马百担问题:有100匹马,驮100担货,大马驮三担,中
          马驮2担,两匹小马驮一担,求大、中、小马各多少匹?

    -------------------------------------------------------*/

    #include
    main()
    {
      int hb,hm,hl,n=0;
      /***********SPACE***********/
      for(hb=0;hb<=100;hb+=【?】)
        /***********SPACE***********/
        for(hm=0;hm<=100-hb;hm+=【?】)
        {
          /***********SPACE***********/
          hl=100-hb-【?】;
          /***********SPACE***********/
          if(hb/3+hm/2+2*【?】==100)
          {
            n++;
            printf("hb=%d,hm=%d,hl=%d\n",hb/3,hm/2,2*hl);
          }
        }
      printf("n=%d\n",n);
      getch();
    }
    答案:
       1). 3
       2). 2
       3). hm
       4). hl


    第76题 (9.0分)  题号:432
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:计算平均成绩并统计90分以上人数。

    -------------------------------------------------------*/

    main()
    {
      int n,m;float grade,average;
      /***********SPACE***********/
      average=n=m=【?】;
      while(1)
      {
        /***********SPACE***********/
       【?】("%f",&grade);
        if(grade<0) break;
        n++;
        average+=grade;
        /***********SPACE***********/
        if(grade<90)【?】;
        m++;
      }
      if(n) printf("%.2f%d\n",average/n,m);
    }
    答案:
       1). 0
       2). scanf
       3). continue


    第77题 (9.0分)  题号:19
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:是将两个字符串连接为一个字符串,不许使用库函数strcat。

    -------------------------------------------------------*/

    #include "stdio.h"
    #include "string.h"
    main ( )
    {
      char str1[80],str2[40];
      int i,j,k;
      gets(str1);gets(str2);
      puts(str1);puts(str2);
      /***********SPACE***********/
      【?】;
      puts(str1);
    }

    JOIN(s1,s2)
    char s1[80],s2[40];
    {
      int i,j;
      /***********SPACE***********/
      【?】;
      /***********SPACE***********/
      for (i=0; 【?】'\0';i++)
         s1[i+j]=s2[i];
      /***********SPACE***********/
      s1[i+j]= 【?】  ;
    }

    答案:
       1). JOIN(str1,str2)
       2). j=strlen(s1) 或 for(j=0;s1[j]!='10';j++); 或 for(j=0;s1[j];j++);
       3). s2[i]!= 或 *(s2 + i)!=
       4). '\0' 或 NULL 或 0


    第78题 (9.0分)  题号:483
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:对数组 A 中的N( 0 <N<100)个整数从小到大进行连续编
          号,输出各个元素的编号。要求不能改变数组A中元素的
          顺序,且相同的整数要具有相同的编号。
    例如:数组是: A=(5,3,4,7,3,5,6)
          则输出为:(3,1,2,5,1,3,4)

    -------------------------------------------------------*/

    main() 
    {
      int i,j,k,n,m=1,r=1,a[2][100]={0} ;
      printf("Please enter n:") ;
      scanf("%d",&n) ;
      for(i=0 ; i   {
        printf("a[%d]= ",i) ;
        scanf("%d",&a[0][i]) ;
      } 
      /***********SPACE***********/
      while(【?】)                                                
      {
        for(i=0 ; i       if(a[1][i]==0)
            /***********SPACE***********/        
            【?】 ;                                                
        k=i ;
        for(j=i ; j     /***********SPACE***********/
        if(a[1][j]==0 && a[0][j]     a[1][k]=r++ ;
        m++ ;
        for(j=0 ; j       if(a[1][j]==0 && a[0][j]==a[0][k]) 
          {
            a[1][j]=a[1][k] ;
            m++ ;
          } 
      }
      for(i=0 ; i     printf("a[%d]=%d, %d\n",i,a[0][i],a[1][i]) ;

    答案:
       1). mm
       2). break
       3). k=j


    第79题 (9.0分)  题号:465
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:输入颜色字符串包含b、w、r,分别代表BLUE,WHITE,RED
       颜色。重新整理字符串,变为bbb....www...rrr形式。
       如:输入: bwwrbbrr
          整理后输出:bbbwwrrr  

    -------------------------------------------------------*/

    #include                        
    #define   BLUE    'b'
    #define   WHITE   'w'
    #define   RED     'r'

    #define   SWAP(x, y)  {  char temp;            \
                             temp     = color[x];  \
                             color[x] = color[y];  \
                             color[y] = temp;      \
                          }

    void  dutch_flag(char color[])
    {
      int  white = 0;
      int  blue  = 0;
      int  red   = strlen(color) - 1;
      while (white <= red)     
        if (color[white] == WHITE) 
          white++;       
        else if (color[white] == BLUE)
        {
          /***********SPACE***********/
          SWAP(【?】);                                 
          blue++, white++; 
        }
        else 
        {              
          /***********SPACE***********/
          while (【?】 && color[red] == RED)        
          red--;    
          /***********SPACE***********/
          SWAP(【?】);                                
          red--;        
        }
    }

    #include  

    #define   MAXSIZE  100

    void main(void)
    {
      char  flag[MAXSIZE];
      printf("\nDutch National Flag Problem");
      printf("\n===========================");
      printf("\n\nInput a String of Color Tokens (b, w and r)\n");
      gets(flag);
      dutch_flag(flag);
      printf("\nRearranged Flag is :");
      printf("\n%s", flag);
    }
    答案:
       1). blue, white
       2). whitewhite
       3). red, white


    第80题 (9.0分)  题号:445
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:编程求任意给定的n个数中的奇数的连乘积,偶数的平方和
          以及0的个数,n通过scanf()函数输入。

    -------------------------------------------------------*/

    main()
    {
      int r=1,s=0,t=0,n,a,i;
      printf("n=");scanf("%d",&n);
      for(i=1;i<=n;i++)
      {
        printf("a=");
        /***********SPACE***********/
        scanf("%d",【?】);
        /***********SPACE***********/
        if(【?】!=0)
          /***********SPACE***********/
          【?】=a;
        else if(a!=0)
          /***********SPACE***********/
          s+=【?】;
        else
          t++;
      }
      printf("r=%d,s=%d,t=%d\n",r,s,t);
    }

    答案:
       1). &a
       2). a%2
       3). r*
       4). a*a


    第81题 (9.0分)  题号:14
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:输出100到1000之间的各位数字之和能被15整除的所有数,
          输出时每10个一行。

    -------------------------------------------------------*/

    main()
    {
      int m,n,k,i=0;
      for(m=100;m<=1000;m++)
      {
        /***********SPACE***********/
        【?】;
        n=m;
        do
        {
         /***********SPACE***********/
           k=k+【?】 ;
           n=n/10;
         }
         /***********SPACE***********/
         【?】;
         if (k%15==0)
         {
            printf("%5d",m);i++;
            /***********SPACE***********/
            if(i%10==0) 【?】;
          }
       }
    }
    答案:
       1). k=0
       2). n%10 或 n-n/10*10 或 n-10*(n/10)
       3). while(n>0) 或 while(0    4). printf("\n")


    第82题 (9.0分)  题号:7
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:从键盘上输入一个字符串, 将该字符串升序排列后输出到
          文件test.txt中,然后从该文件读出字符串并显示出来。

    -------------------------------------------------------*/

    #include
    #include
    #include

    main()

       FILE  *fp;
       char t,str[100],str1[100];    int n,i,j;
       if((fp=fopen("test.txt","w"))==NULL)
       { 
           printf("can't open this file.\n");
           exit(0);
       }
       printf("input a string:\n"); gets(str);
       /***********SPACE***********/
       【?】;
       /***********SPACE***********/
       for(i=0; 【?】 ;i++)
         for(j=0;j      /***********SPACE***********/
         if(【?】)
         {
            t=str[j];
            str[j]=str[j+1];
            str[j+1]=t; 
          }
       /***********SPACE***********/
      【?】; 
       fclose(fp);
       fp=fopen("test.txt","r");
       fgets(str1,100,fp);
       printf("%s\n",str1);
       fclose(fp);    
    }

    答案:
       1). n=strlen(str) 或 for(n=0;str[n]!='\0';n++) 或 for(n=0;str[n];n++) 或 for(n=0;str[n]!=0;n++)
       2). ii 或 i<-1+n 或 ii 或 -1+n>i 或 i<=n-1 或 n-1>=i 或 -1+n>=i
       3). str[j]>str[ j + 1 ] 或 str[ j + 1 ]    4). fputs(str,fp) 或 fprintf(fp,"%s\n",str) 或 fprintf(fp,"%s",str)


    第83题 (9.0分)  题号:416
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:计算个人与各科平均成绩及全班平均成绩,并在屏幕上显
          示出来。

    -------------------------------------------------------*/

    #define M 5   /*定义符号常量 人数为5*/
    #define N 4   /*定义符号常量 课程为4*/
    #include "stdio.h"
    main()
    {
      int i,j;
      void aver(float sco[M+1][N+1]);
      static float score[M+1][N+1]={{78,85,83,65}, {88,91,89,93}, {72,65,54,75},{86,88,75,60},{69,60,50,72}};
      aver(score);              
      clrscr();
      printf("学生编号  课程1   课程2   课程3   课程4   个人平均\n");
      for(i=0;i   {
        printf("学生%d\t",i+1);
        /***********SPACE***********/
        for(j=0;j<【?】;j++)
          printf("%6.1f\t",score[i][j]);
        printf("\n");
      }
      for(j=0;j<8*(N+2);j++)
        printf("-");    
      printf("\n课程平均");
      for(j=0;j     printf("%6.1f\t",score[i][j]);
      printf("\n");
      getch();
    }

    void aver(float sco[][N+1])           
    {
      int i,j;
      /***********SPACE***********/
      for(i=0;i<【?】;i++)
      {
        for(j=0;j     {
          sco[i][N] += sco[i][j];
          sco[M][j] += sco[i][j];    
          sco[M][N] += sco[i][j];   
        }
        /***********SPACE***********/
        sco[i][N] 【?】 N;
      }
      for(j=0;j   /***********SPACE***********/
        sco[M][【?】] /= M; 
      sco[M][N]=sco[M][N]/M/N;   
    }
    答案:
       1). N+1 或 1+N 或 5
       2). M 或 5
       3). /=
       4). j


    第84题 (9.0分)  题号:472
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:现有两组有序数组(增序),x[i]、y[j]代表数组x、y的
          任一元素,问满足x[i]>y[i]的元素对有多少个?

    -------------------------------------------------------*/

    int  dominance_count(int f[], int g[], int m, int n)
    {
      int  index_f, index_g;
      int  count;
      count = index_f = index_g = 0;
      while (index_f < m && index_g < n)
        if (f[index_f] <= g[index_g])
          index_f++;
        else
        {
          index_g++;
          /***********SPACE***********/
          count += 【?】;
        }                        
      /***********SPACE***********/
     【?】;                                                
    }


    #include

    void main(void)
    {
      int  x[] = {  1,  6,  8  };
      int  nx  = sizeof(x)/sizeof(int);
      int  y[] = {  4,  5,  7  };
      int  ny  = sizeof(y)/sizeof(int);
      int  dominance_count(int [], int [], int, int), i;
      printf("\nDominance Count of two Increasing Arrays\n");
      printf("\n  #   Array 1   Array 2");
      printf("\n --   -------   -------");
      for (i = 0; i < nx; i++)
        printf("\n%3d%10d%10d", i, x[i], y[i]);
      printf("\n\nThere are %d Dominance Pairs.", 
     /***********SPACE***********/
     【?】);                                        
    }
    答案:
       1). m - index_f 或 m  - index_f
       2). return count
       3). dominance_count(x, y, nx, ny)


    第85题 (9.0分)  题号:400
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:用结构体调用的方法编程。要求输入A,B,C,D,E,F五
          个元素的数值,并按从大到小的顺序输出。

    -------------------------------------------------------*/

    #define N sizeof tbl/sizeof tbl[0]  /*取得数组有多少个元素*/
    int A,B,C,D,E,F;

    struct ele
    {
      char vn;
      /***********SPACE***********/
      int 【?】;  
    }tbl[]={{'A',&A},{'B',&B},{'C',&C},{'D',&D},{'E',&E},{'F',&F}},t;

    main()
    {
      int k,j,m;
      /***********SPACE***********/
      for(k=0;k<【?】;k++)
      {
        printf("Enter data for %c\n",tbl[k].vn);
        scanf("%d",tbl[k].vp);
      }
      m=N-1;
      while(m>0)
      {
        for(k=j=0;j       /***********SPACE***********/
          if(*tbl[j].vp<【?】) 
          {
            t=tbl[j];
            tbl[j]=tbl[j+1];
            tbl[j+1]=t;
            k=j;
          }
        /***********SPACE***********/
        【?】; 
      }
      for(k=0;k     printf("%c(%d)",tbl[k].vn,*tbl[k].vp);
      printf("\n");
      getch();
    }
    答案:
       1). *vp
       2). N
       3). *tbl[j+1].vp 或 *tbl[ j + 1 ].vp
       4). m=k


    第86题 (9.0分)  题号:417
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:利用全局变量计算长方体的体积及三个面的面积。

    -------------------------------------------------------*/

    int s1,s2,s3;
    int vs(int a,int b,int c)
    {
      int v;
      /***********SPACE***********/
      v=【?】;
      s1=a*b;
      /***********SPACE***********/  
      s2=【?】;
      s3=a*c;
      return  v;
    }

    main()
    {
      int v,l,w,h;
      clrscr();
      printf("\ninput length,width and height: ");
      /***********SPACE***********/
      scanf("%d%d%d",【?】,&w,&h);
      /***********SPACE***********/
      v=【?】;
      printf("v=%d    s1=%d    s2=%d    s3=%d\n",v,s1,s2,s3);
      getch();
    }
    答案:
       1). a*b*c 或 a * b * c
       2). b*c 或 b * c
       3). &l
       4). vs(l,w,h) 或 vs( l , w , h )


    第87题 (9.0分)  题号:405
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:要求输出结果为:
          A,B
          65,66

    -------------------------------------------------------*/

    #include
    void main()
    {
      /***********SPACE***********/
      char a,【?】;
      /***********SPACE***********/
      a=【?】;
      b='b';
      a=a-32;
      /***********SPACE***********/
      b=b-【?】;
      printf("%c, %c\n%d,%d\n",a,b,a,b);
    }

    答案:
       1). b
       2). 'a' 或 97
       3). 32


    第88题 (9.0分)  题号:430
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:计算一元二次方程的根。

    -------------------------------------------------------*/

    #include
    /***********SPACE***********/
    #include 【?】
    main()
    {
      float a,b,c,disc,x1,x2,realpart,imagpart;
      scanf("%f%f%f",&a,&b,&c);
      printf("the equation");
      /***********SPACE***********/
      if(【?】<=1e-6)
        printf("is not quadratic\n");
      else
        disc=b*b-4*a*c;
      if(fabs(disc)<=1e-6)
        printf("has two equal roots:%-8.4f\n",-b/(2*a));
      /***********SPACE***********/
      else if(【?】)
      {
        x1=(-b+sqrt(disc))/(2*a);
        x2=(-b-sqrt(disc))/(2*a);
        printf("has distinct real roots:%8.4f and %.4f\n",x1,x2);
      }
      else
      {
        realpart=-b/(2*a);
        imagpart=sqrt(-disc)/(2*a);
        printf("has complex roots:\n");
        printf("%8.4f=%.4fi\n",realpart,imagpart);
        printf("%8.4f-%.4fi\n",realpart,imagpart);
      }
    }
    答案:
       1).
       2). fabs(a)
       3). fabs(disc)  > 1e-6 或 1e-6


    第89题 (9.0分)  题号:437
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:建立一个如下的二维数组,并按以下格式输出。
    1 0 0 0 1
    0 1 0 1 0
    0 0 1 0 0
    0 1 0 1 0
    1 0 0 0 1

    -------------------------------------------------------*/

    #include "stdio.h"
    void main()
    {
     int a[5][5]={0},*p[5],i,j;
     for(i=0;i<5;i++)
     /***********SPACE***********/
        p[i]=【?】;
     for(i=0;i<5;i++)
     {
        /***********SPACE***********/
        *(【?】+i)=1;
        /***********SPACE***********/
        *(p[i]+5-(【?】))=1;
      }
      for(i=0;i<5;i++)
      {
        for(j=0;j<5;j++)printf("%2d",p[i][j]);
          /***********SPACE***********/
          【?】;
      }
    }
    答案:
       1). &a[i][0]
       2). p[i]
       3). i+1 或 1+i
       4). putchar('\n');


    第90题 (9.0分)  题号:3
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:已定义一个含有30个元素的数组s,函数fun1的功能是按
          顺序分别赋予各元素从2开始的偶数,函数fun2则按顺序
          每五个元素求一个平均值, 并将该值存放在数组w中。

    -------------------------------------------------------*/

    float s[30],w[6];
    fun1(float s[])
    {
      int k,i;
      for(k=2,i=0;i<30;i++)
      {
         /***********SPACE***********/
         【?】 ;
         k+=2;
      }
    }
    fun2(float s[],float w[])
    {
      float sum=0.0;
      int k,i;
      for(k=0,i=0;i<30;i++)
      {
         sum+=s[i];
         /***********SPACE***********/
         【?】;
         { 
            w[k]=sum/5;
            /***********SPACE***********/
            【?】 ;
            k++;
         }
      }
    }
    main()
    {
       int i;
       fun1(s);
       /***********SPACE***********/
       【?】;
       for(i=0;i<30;i++)
       {
         if(i%5==0) printf("\n");
           printf("%8.2f",s[i]);
       }
       printf("\n");
       for(i=0;i<6;i++)
       printf("%8.2f",w[i]);
    }


    答案:
       1). s[i]=k 或 s[i]=(i+1)*2
       2). if( ( i + 1 )%5 == 0 ) 或 if( ( i + 1 )/5*5 ==i+1)
       3). sum=0 或 sum=0.0
       4). fun2(s,w)


    第91题 (9.0分)  题号:402
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:输入三个整数x,y,z,请把这三个数由小到大输出。

    -------------------------------------------------------*/

    main()
    {
      int x,y,z,t;
      scanf("%d%d%d",&x,&y,&z);
      /***********SPACE***********/
      if (x>y){【?】}
      /***********SPACE***********/
      if(x>z){【?】}
      /***********SPACE***********/
      if(y>z){【?】}
      printf("small to big: %d %d %d\n",x,y,z);
    }

    答案:
       1). t=x;x=y;y=t;
       2). t=z;z=x;x=t;
       3). t=y;y=z;z=t;


    第92题 (9.0分)  题号:410
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:有n个整数,使其前面各数顺序向后移m个位置,最后m个数
          变成最前面的m个数

    -------------------------------------------------------*/

    main()
    {
      int number[20],n,m,i;
      printf("the total numbers is:");
      scanf("%d",&n);
      printf("back m:");
      scanf("%d",&m);
      for(i=0;i     scanf("%d,",&number[i]);
      scanf("%d",&number[n-1]);
      /***********SPACE***********/
      move(【?】);
      for(i=0;i     printf("%d,",number[i]);
      printf("%d",number[n-1]);
    }

    /***********SPACE***********/
    move(【?】)
    int n,m,array[20];
    {
      int *p,array_end;
      /***********SPACE***********/
      array_end=*(【?】);
      for(p=array+n-1;p>array;p--)
        /***********SPACE***********/
        *p=*(【?】);
      *array=array_end;
      m--;
      if(m>0) move(array,n,m);
    }
    答案:
       1). number,n,m
       2). array,n,m
       3). array+n-1 或 array + n -1
       4). p-1 或 p -1


    第93题 (9.0分)  题号:427
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:百鸡问题:100元买100只鸡,公鸡一只5元钱,母鸡一只3
          元钱,小鸡一元钱三只,求100元钱能买公鸡、母鸡、小鸡
          各多少只?

    -------------------------------------------------------*/

    #include
    main()
    {
      int cocks,hens,chicks;
      cocks=0;
      while(cocks<=19)
      {
      /***********SPACE***********/
       【?】=0;
        /***********SPACE***********/
        while(hens<=【?】)
        {
          chicks=100.0-cocks-hens;
          if(5.0*cocks+3.0*hens+chicks/3.0==100.0)
             printf("%d,%d,%d\n",cocks,hens,chicks);
          /***********SPACE***********/
         【?】;
        }
        /***********SPACE***********/
        【?】;
      } 
    }
    答案:
       1). hens
       2). 33
       3). hens++ 或 ++hens 或 hens=hens+1
       4). cocks++ 或 ++cocks 或 cocks=cocks+1 或 cocks= cocks + 1


    第94题 (9.0分)  题号:454
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:三角形的面积为:area=sqrt(s*(s-a)*(s-b)*(s-c)).其中
          ,s=(a+b+c)/2,a、b、c为三角形三条边的长。定义两个带
          参数的宏,一个用来求s,另一个用来求area。编写程序,
          在程序中用带参数的宏求面积area。

    -------------------------------------------------------*/

    #include "math.h"

    /***********SPACE***********/
    #【?】 S(x,y,z)(x+y+z)/2
    #define AREA(s,x,y,z)sqrt(s*(s-x)*(s-y)*(s-z))

    main()
    {
      float a,b,c,s,area;
      printf("a,b,c=");
      /***********SPACE***********/
      scanf("%f,%f,%f",&a,【?】,&c);
      if(a+b>c&&b+c>a&&c+a>b)
      {
        /***********SPACE***********/
        s=【?】;
        /***********SPACE***********/
        area=【?】;
        printf("area=%f\n",area);
      }
    }

    答案:
       1). define
       2). &b
       3). S(a,b,c)
       4). AREA(s,a,b,c)


    第95题 (9.0分)  题号:436
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:输出两个整数中大的那个数,两个整数由键盘输入。

    -------------------------------------------------------*/

    #include "stdio.h"
    void main()
    {
      int a,b,*p1,*p2;
      /***********SPACE***********/
      p1=【?】malloc(sizeof(int));
      p2=(int*)malloc(sizeof(int));
      /***********SPACE***********/
      scanf("%d%d",【?】,p2);
      if(*p2>*p1) *p1=*p2;
      free(p2);
      /***********SPACE***********/
      printf("max=%d\n",【?】);
    }

    答案:
       1). (int *)
       2). p1
       3). *p1


    第96题 (9.0分)  题号:29
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:下面函数为二分法查找key值。数组中元素已递增排序,
          若找到key则返回对应的下标,否则返回-1。

    -------------------------------------------------------*/

    fun(int a[],int n,int key)
    {
      int low,high,mid;
      low=0;
      high=n-1;
      /***********SPACE***********/
      while(【?】)
      {
        mid=(low+high)/2;
      if(key     /***********SPACE***********/
        【?】;
      else if(key>a[mid]) 
      /***********SPACE***********/
      【?】;
      else  
        /***********SPACE***********/
        【?】;
      }
      return -1;
    }
    main()
    {
      int a[10]={1,2,3,4,5,6,7,8,9,10};
      int b,c;
      b=4;
      c=fun(a,10,b);
      if(c==1) 
         printf("not found");
      else 
         printf("position %d\n",c);
    }

    答案:
       1). low<=high 或 high>=low
       2). high=mid-1
       3). low= mid + 1
       4). return  mid 或 return  (mid)


    第97题 (9.0分)  题号:423
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:考查字符串数组的应用。输出26个英文字母。

    -------------------------------------------------------*/

    #include
    void main (void)
    {
      char string[256];
      int i;
      /***********SPACE***********/
      for (i = 0; i < 26; 【?】)
      /***********SPACE***********/
        string[i] = 【?】;
      string[i] = '\0';
      /***********SPACE***********/
      printf ("the arrary contains %s\n",【?】);
    }
    答案:
       1). i++ 或 ++i 或 i=i+1 或 i+=1
       2). 'A' + i 或 i+'A' 或 65 + i 或 i+65
       3). string


    第98题 (9.0分)  题号:485
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能: 统计子字符串substr在字符串str中出现的次数。
    例如:若字符串为"aaas lkaaas",子字符串为"as",则应输出2。
          若字符串为"asasasa",子字符串为"asa",则应输出3

    -------------------------------------------------------*/

    #include

    fun (char *substr,char *str)
    {  
      int i,j,k,num=0;
      for(i=0; str[i]; i++)
        for(j=i,k=0;substr[k]==str[j];k++,j++)
          /***********SPACE***********/
          if(substr[【?】]=='\0')                
          {
            num++;
            /***********SPACE***********/
            【?】;                        
          }
      return num;
    }

    main()
    {
      char str[80],substr[80];
      printf("Input a string:") ;
      gets(str);
      printf("Input a substring:") ;
      gets(substr);
      /***********SPACE***********/
      printf("%d\n",【?】);        
    }
    答案:
       1). k + 1
       2). break
       3). fun(substr,str)


    第99题 (9.0分)  题号:33
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:以下程序的功能如(图1)。

    -------------------------------------------------------*/

    #include
    #include
    /***********SPACE***********/
    double  f(【?】)
    {  
      /***********SPACE***********/
      【?】; 
      /***********SPACE***********/
      if (【?】)
        y=2.0*x*x+3.0*x+4.0;
      else
        y=-2.0*x*x+3.0*x-4.0;
    /***********SPACE***********/
     【?】;
    }

    main ( )
    {  
      clrscr( );
      printf("%f\n", f(f(-1.0)+f(5.0)));
    }

    答案:
       1). float x 或 double x
       2). double y
       3). x<=2 或 2>=x
       4). return y 或 return (y)


    第100题 (9.0分)  题号:434
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:要求输出如下结果:
          b=-1  a=65535
          a=65534
          a=30 b=6 c=5
          按要求在空中填入合适的变量完善程序。

    -------------------------------------------------------*/

    main()
    {
      /***********SPACE***********/
      int b=-1,【?】;unsigned a;
      /***********SPACE***********/
      a=【?】;
      printf("b=%d a=%u\n",b,a);
      /***********SPACE***********/
      【?】+=b;
      printf("a=%u\n",a);
      /***********SPACE***********/
      b=(a=30)/【?】;
      printf("a=%d b=%d c=%d\n",a,b,c);
    }
    答案:
       1). c
       2). b
       3). a
       4). (c=5)


    第101题 (9.0分)  题号:418
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:用函数调用方式,实现字符串的复制。

    -------------------------------------------------------*/

    void string_copy(char *str_from, char *str_to)
    {
      int i=0;
      /***********SPACE***********/
      for(; (*(【?】)=*(str_from+i))!='\0'; i++) ;
    }

    main()
    {
      static char array_str1[20]="I am a teacher.";
      char array_str2[20];
      /***********SPACE***********/
      【?】(array_str1, array_str2);
      /***********SPACE***********/
      【?】("array_str2=%s\n",array_str2);
    }
    答案:
       1). str_to+i 或 i+str_to
       2). string_copy
       3). printf


    第102题 (9.0分)  题号:35
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:计算并输出high以内最大的10个素数之和,high由主函数传
          给fun函数,若high的值为100,则函数的值为732。

    -------------------------------------------------------*/

    #include
    #include
    #include
    int fun( int  high )

      int sum = 0,  n=0,  j,  yes;
      /***********SPACE***********/
      while ((high >= 2) && (【?】))
      {  
        yes = 1;
        for (j=2; j<=high/2; j++ )
          /***********SPACE***********/
          if (【?】)
          {
            yes=0;
            break;
          }
          if (yes)
          {
            sum +=high; 
            n++; 
          }
         high--;
      }
      /***********SPACE***********/
      【?】;
    }

    main ( )
    {  
       clrscr( );
       printf("%d\n", fun (100));
    }

    答案:
       1). n<10 或 10>n
       2). high%j == 0 或 !(high%j)
       3). return  sum 或 return  (sum)


    第103题 (9.0分)  题号:4
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:下面的程序是求1!+3!+5!+……+n!的和。

    -------------------------------------------------------*/

    main()
    {
      long int f,s;
      int i,j,n;
      /***********SPACE***********/
      【?】;
      scanf("%d",&n); 
      /***********SPACE***********/
      for(i=1;i<=n; 【?】) 
      { 
         f=1;                  
         /***********SPACE***********/
         for(j=1; 【?】;j++)
         /***********SPACE***********/
         【?】;
          s=s+f;
      }
      printf("n=%d,s=%ld\n",n,s);

    答案:
       1). s=0
       2). i+=2 或 i=i+2 或 i++,i++
       3). j<=i 或 i>=j 或 jj
       4). f= f * j 


    第104题 (9.0分)  题号:22
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:打印以下图形。

    *****
     *****
      *****
       *****
        *****

    -------------------------------------------------------*/
     
    main ( )
    {

      char a[5][9]={"     "};
      int i,j;
      for (i=0;i<5;i++)
      /***********SPACE***********/
      for(j=i; 【?】;j++)
        a[i][j]='*';
      /***********SPACE***********/
      for(【?】;i<5;i++)
      {
        for(j=0;j<9;j++)
        /***********SPACE***********/
        printf("%c", 【?】 );
        /***********SPACE***********/
        【?】;
       }
     }
    答案:
       1). j< i + 5 或  i + 5 >j 或 j<= i + 4 或  i + 4 >j
       2). i=0
       3). a[i][j]
       4). printf("\n")


    第105题 (9.0分)  题号:23
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:求一个二维数组中每行的最大值和每行的和。

    -------------------------------------------------------*/

    #include "stdlib.h"
    main()
    {
      int a[5][5],b[5],c[5],i,j,k,s=0;
      for(i=0;i<5;i++)
        for(j=0;j<5;j++)
          a[i][j]=random(40)+20;
      for(i=0;i<5;i++)
      { 
        /***********SPACE***********/
        k=a[i][0]; 【?】 ;
        for(j=0;j<5;j++)
        {
           /***********SPACE***********/
           if(k        s=s+a[i][j];
        }
        b[i]=k;
        /***********SPACE***********/
        【?】 ;
      }
      for(i=0;i<5;i++)
      {
        for(j=0;j<5;j++)
           /***********SPACE***********/
           printf("%5d", 【?】 );
        printf("%5d%5d",b[i],c[i]);
        printf("\n");
      }
    }

    答案:
       1). s=0
       2). k=a[i][j]
       3). c[i]=s
       4). a[i][j]


    第106题 (9.0分)  题号:17
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:删除字符串中的指定字符,字符串和要删除的字符均由键盘
          输入。

    -------------------------------------------------------*/

    #include "stdio.h"
    main()
    {
      char str[80],ch;
      int i,k=0;
      /***********SPACE***********/
      gets(【?】);
      ch=getchar();
      /***********SPACE***********/
      for(i=0;【?】;i++)
        if(str[i]!=ch) 
        {
           /***********SPACE***********/
           【?】;
            k++;
        }
      /***********SPACE***********/
      【?】;
      puts(str);
     }
    答案:
       1). str
       2). str[i]!='\0' 或 str[i]!=NULL 或 str[i]!=0 或 str[i]
       3). str[k]=str[i] 或 *(str+k)=*(str+i) 或 str[k]=*(str+i) 或 *(str+k)=str[i]
       4). str[k]='\0' 或 *(str+k)='\0' 或 str[k]=NULL 或 str[k]=0 或 *(str+k)=0 或 *(str+k)=NULL


    第107题 (9.0分)  题号:31
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:用冒泡法对数组a 进行由小到大的排序。

    -------------------------------------------------------*/

    void fun(int a[],int n)
    {
      int i,j,t;
      /***********SPACE***********/
      for (j=0; 【?】;j++)
        /***********SPACE***********/
        for (i=0; 【?】;i++)
          /***********SPACE***********/
          if(【?】)
          {
            t=a[i];
            a[i]=a[i+1];
            a[i+1]=t;
          }
    }
    main()
    {
      int i,a[10]={3,7,5,1,2,8,6,4,10,9};
      /***********SPACE***********/
      【?】;
      for(i=0;i<10;i++)
        printf("%3d",a[i]);
    }

    答案:
       1). j<=n-1 或 n-1>=j 或 j<=-1+n 或 -1+n>=j 或 jj 或 j    2). ii 或 ii 或 i<=n-j-2 或 i<=n-2-j
       3). a[i]>a[ i + 1 ] 或 a[ i + 1 ]    4). fun(a,10)


    第108题 (9.0分)  题号:489
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:h_sequence 是一组由0和1组成的数列,它定义如下:
          = 0
          = 1
          利用函数检测输入的字符串是否是h_sequence数列

    -------------------------------------------------------*/

    #include  
    #define   YES     1
    #define   NO      0

    int  h_sequence(char x[])
    {
      /***********SPACE***********/
      int  length = 【?】;                                
      int  count;
      int  i;
      for (count = 1, i = 0; count != 0 && i < length; i++)
        switch (x[i]) 
        {
          case '0':count--;
                   break;
          case '1':count++;
                   break;
          default:return NO;
        }
      /***********SPACE***********/
      return 【?】&& i >= length;                        
    }


    #include  

    void  main(void)
    {
      char  line[100];
      printf("\n\nInput a string of 0 and 1 --> ");
      gets(line);
      /***********SPACE***********/
      if (【?】 == YES)                                        
        printf("\n*** Input is a H sequence ***");
      else
       printf("\n*** Input is NOT a H sequence ***");
    }
    答案:
       1). strlen(x)
       2). count == 0
       3). h_sequence(line)


    第109题 (9.0分)  题号:448
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:已知X、Y、Z分别表示0~9中不同的数字,编程求出使算式
          XXXX+YYYY+ZZZZ=YXXXZ成立时X、Y、Z的值,并要求打印该
          算式。

    -------------------------------------------------------*/

    main()
    {
      int x,y,z;
      /***********SPACE***********/
      for(x=0;【?】;x++)
        for(y=0;y<10;y++)
        {
          if(y==x) continue;
          for(z=0;z<10;z++)
          {
          /***********SPACE***********/
          if(z==x【?】z==y) continue;
          /***********SPACE***********/
          if(1111*(x+y+z)==【?】+1110*x+z)
          {
            printf("x=%d,y=%d,z=%d\n",x,y,z);
            /***********SPACE***********/
            printf("%d+%d+%d=%d\n",1111*x,1111*y,1111*z,【?】);
            exit(0);
          }
        }
      }
    }

    答案:
       1). x<10 或 10>x
       2). ||
       3). 10000*y 或 y*10000
       4). 10000*y+1110*x+z 或 10000 * y + 1110 * x + z


    第110题 (9.0分)  题号:471
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:给出一个正整数,找到一组连续的数,使之累加和等于给
          定的正整数。输出存在多少组这样连续的数,及每组的左
          右边界。
    例如:15=1+2+3+4+5
          15=4+5+6
          15=7+8
          所以结果有3组值分别是1->5, 4->6, 7->8

    -------------------------------------------------------*/

    #include  
    #include  

    void main(void)
    {
      long  left, right;
      long  sum;
      long  GIVEN;
      int   count = 0;
      char  line[100];
      printf("\nConsecutive sum to a fixed given number");
      printf("\n=======================================\n");
      printf("\nYour number (> 0) please ---> ");
      gets(line);
      GIVEN = atol(line);
      for (sum = 0, right = 1; sum < GIVEN; sum += right, right++)
        ;
      for (left = 1, right--; left <= GIVEN/2; )
        if (sum > GIVEN)
        {
          sum -= left;
          /***********SPACE***********/
          【?】;                                        
        }
        else 
        {
           if (sum == GIVEN) 
           {
             printf("\n%ld = sum from %ld to %ld", 
             GIVEN, left, right);
             /***********SPACE***********/
             【?】;                                
           }
        /***********SPACE***********/
        【?】;                                        
        sum += right;
      }
      if (count > 0)
        printf("\n\nThere are %d solutions in total.", count);
      else
        printf("\n\nSorry, there is NO solution at all.");
    }
    答案:
       1). left++ 或 left=left+1 或 ++left
       2). count++ 或 count=count++ 或 ++count 或 count=count+1
       3). right++ 或 right=right++ 或 ++right 或 right=right+1


    第111题 (9.0分)  题号:413
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:用circle画圆形。

    -------------------------------------------------------*/

    #include "graphics.h"
    main()
    {
      int driver,mode,i;
      float j=1,k=1;
      driver=VGA;mode=VGAHI;
      /***********SPACE***********/
      initgraph(【?】,&mode,"");
      setbkcolor(YELLOW);
      /***********SPACE***********/
      for(i=0;i<=25;【?】)
      {
        setcolor(8);
        circle(310,250,k);
        /***********SPACE***********/
        k=【?】;
        j=j+0.3;
      }

    答案:
       1). &driver
       2). k+j 或 j+k
       3). i++ 或 ++i 或 i=i+1


    第112题 (9.0分)  题号:446
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:编程求某年第n天的日期。用数组表示月天数。

    -------------------------------------------------------*/

    main()
    {
      int y,m,f,n;
      int a[12]={31,28,31,30,31,30,31,31,30,31,30,31};
      printf("y,n=");
      scanf("%d,%d",&y,&n);
      /***********SPACE***********/
      f=y%4==0&&y%100!=0【?】y%400==0;
      /***********SPACE***********/
      a[1]【?】f;
      if(n<1||n>365+f)
      {
        printf("error!\n");exit(0);
      }
      /***********SPACE***********/
      for(m=1;m【?】a[m-1];n-=a[m-1],m++);
        printf("y=%d,m=%d,d=%d\n",y,m,n);
    }

    答案:
       1). ||
       2). += 或 =a+
       3). >


    第113题 (9.0分)  题号:438
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:求出二维数组中的最大元素值。

    -------------------------------------------------------*/

    #include "stdio.h"
    void main()
    {
      int a[3][4]={{1,3,5,7},{2,4,6,8},{15,17,34,12}};
      /***********SPACE***********/
      printf("max value is %d\n",【?】);
    }

    max_value(m,n,array)
    /***********SPACE***********/
    int m,n,【?】;
    {
      int i,j,max;
      max=array[0][0];
      for(i=0;i     for(j=0;j       /***********SPACE***********/
          if(max   return(max);
    }
    答案:
       1). max_value(3,4,a)
       2). array[][4] 或 array[3][4]
       3). max=array[i][j]


    第114题 (9.0分)  题号:12
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:产生并输出如下形式的方阵。
    1 2 2 2 2 2 1
    3 1 2 2 2 1 4
    3 3 1 2 1 4 4
    3 3 3 1 4 4 4
    3 3 1 5 1 4 4
    3 1 5 5 5 1 4
    1 5 5 5 5 5 1

    -------------------------------------------------------*/

    main()
    {
     int a[7][7];
     int i,j;
     for (i=0;i<7;i++)
       for (j=0;j<7;j++)
         {
    /***********SPACE***********/
          if (【?】) a[i][j]=1;
    /***********SPACE***********/
          else if (i       else if (i>j&&i+j<6) a[i][j]=3;
    /***********SPACE***********/
          else if (【?】) a[i][j]=4;
          else a[i][j]=5;
          }
       for (i=0;i<7;i++)
         {
         for (j=0;j<7;j++)
         printf("%4d",a[i][j]);
    /***********SPACE***********/
        【?】;
         }
    }

    答案:
       1).  i == j || i + j == 6 
       2). a[i][j]=2
       3).  i6  或  j>i && i + j>6  或  ii && i + 6    4). printf("\n")


    第115题 (9.0分)  题号:24
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:对任一整数N(N≠0),它都可以分解成1(或-1)和一些质数(素
          数)因子的形式。
    例如:当N=150时,可分解成1×2×3×5×5;
          当N=-150时,可分解为-1×2×3×5×5。
          下边程序能实现这种分解过程。当N=150,输出以下分解结
          果:N=  1*  2*   3*   5*   5

    -------------------------------------------------------*/

    main()

      int n,i,j,r;
      scanf("%d",&n);
      if (n==0)
      { 
        printf ("data error \n");
        exit(0);
      }
      /***********SPACE***********/
      else if (【?】) 
        printf("n=1");
      else
      { 
        printf("n=-1");
        n=-n;
      }
      /***********SPACE***********/
      for(【?】;i<=n;i++)           
      {  
        /***********SPACE***********/
        【?】  ;                  
        while(r==0)
        { 
          printf("*%d",i);
          /***********SPACE***********/
          【?】 ;                  
          r=n%i;
        }
      }
      printf("\n");
    }

    答案:
       1). n>0 或 0    2). i=2
       3). r=n%i
       4). n=n/i 或 n/=i


    第116题 (9.0分)  题号:26
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:删除一个字符串中的所有数字字符。

    -------------------------------------------------------*/

    #include "stdio.h"
    void delnum(char *s)
    {
      int i,j;
      /***********SPACE***********/
      for(i=0,j=0; 【?】'\0' ;i++)
      /***********SPACE***********/
      if(s[i]<'0'【?】 s[i]>'9')
      {
        /***********SPACE***********/
        【?】;
        j++;
      }
      s[j]='\0';
    }
    main ()
    {
      char *item;
      printf("\n input a string:\n");
      gets(item);
      /***********SPACE***********/
      【?】;
      printf("\n%s",item);
    }

    答案:
       1). s[i]!= 或 *(s+i)!= 或 *(i+s)!=
       2). ||
       3). s[j]=s[i] 或 *(s+j)=*(s+i) 或 s[j]=*(s+i) 或 *(s+j)=s[i]
       4). delnum(item)


    第117题 (9.0分)  题号:11
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:求100-999之间的水仙花数
    说明:水仙花数是指一个三位数的各位数字的立方和是这个数本身。
    例如:153=1^3+5^3+3^3)。

    -------------------------------------------------------*/

    int fun(int n)
    { int i,j,k,m;
      m=n;
      /***********SPACE***********/
     【?】;
      for(i=1;i<4;i++)
      { 
         /***********SPACE***********/
         【?】;
         m=(m-j)/10; 
         k=k+j*j*j; 
      }
      if(k==n) 
        /***********SPACE***********/
        【?】;
      else 
        return(0);}
    main()
    {  
      int i;
      for(i=100;i<1000;i++)
        /***********SPACE***********/
      if(【?】==1)
        printf("%d is ok!\n" ,i);
    }

    答案:
       1). k=0
       2). j=m%10 或 j=m-m/10*10 或 j=m-10*(m/10)
       3). return(1)
       4). fun(i)


    第118题 (9.0分)  题号:424
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:输出结果为:

    * * * * *
     * * * * *
      * * * * *
       * * * * * 
    -------------------------------------------------------*/

    main()
    {
      /***********SPACE***********/
      static char 【?】={'*','*','*','*','*'};
      int i,j,k;
      char space=' ';
      for(i=0;i<5;i++)
      {
        printf("\n");
        /***********SPACE***********/
        for(j=1;j<=3*i;j++)
          printf("%1c",【?】);
        /***********SPACE***********/
        for(k=0;k<【?】;k++)
          printf("%3c",a[k]);
      }
      printf("\n");;
    }
    答案:
       1). a[5] 或 a[]
       2). space 或 ' '
       3). 5 或 =4


    第119题 (9.0分)  题号:460
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------
    功能:有一整数数组x(正序排列),判断是否有数组元素x[i]=i
          的情况发生。

    -------------------------------------------------------*/

    int  index_search(int x[], int n)
    {
      int  first = 0;
      int  last  = n-1;
      int  middle, index;
      index = -1;
      while (first <= last) 
      {
        middle = (first + last) / 2;
        /***********SPACE***********/
        if (【?】) 
        {                               
          index = middle;
          break;
        }
        /***********SPACE***********/
        else if (【?】)                        
          last = middle - 1;
        else 
          first = middle + 1;
      }
      return index;
    }

    #include  
    void main(void)
    {
      int  x[] = { -1, 0, 1, 3, 5, 7, 9, 10};
      int  n   = sizeof(x)/sizeof(int);
      int  answer, i;
      printf("\nIndex Search Program");
      printf("\n====================");
      printf("\n\nGiven Array :");
      for (i = 0; i < n; i++)
        printf("%5d", x[i]);
      /***********SPACE***********/
      【?】;                        
      if (answer >= 0)
        printf("\n\nYES, x[%d] = %d has been found.", answer, answer);
      else
        printf("\n\nNO, there is no element with x[i] = i");
    }
    答案:
       1). x[middle] == middle
       2). x[middle] > middle 或 middle    3). answer = index_search(x, n)


    第120题 (9.0分)  题号:429
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:从读入的整数数据中,统计大于零的整数个数和小于零的
          整数个数。用输入零来结束输入,程序中用变量i统计大于
          零的整数个数,用变量j统计小于零的整数个数。

    -------------------------------------------------------*/

    #include
    main()
    {
      int k,n,i,j;
      printf("Enter INT number,with 0 to end\n");
      i=j=0;
      scanf("%d",&n);
      while(n!=0)
     {
       /***********SPACE***********/
       if(n>0)i=【?】;
       /***********SPACE***********/
       if(n<0)j=【?】;
       /***********SPACE***********/
       scanf("%d",【?】);
     }
      printf("i=%4d\n",i,j);
    }
    答案:
       1). i + 1
       2). j + 1
       3). &n


    第121题 (9.0分)  题号:394
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:用条件编译方法实现以下功能。输入一行电报文字,可以任
          选两种方式输出,一种为原文输出;另一种将字母变成下
          一个字母(如a变成b,C变成D,其他字符不变)输出。

    -------------------------------------------------------*/
    #define CHANGE
    main()
    {
      /***********SPACE***********/
      char str[80],【?】=str;
      int k;
      printf("Input string:");
      /***********SPACE***********/
      gets【?】;
      printf("Output string:");
      #ifdef CHANGE
        for(;*s!='\0';s++)
        {
          if(*s>='a'&&*s<='z'||*s>='A'&&*s<='Z')
          { 
            (*s)++;
            if(*s>'Z'&&*s<'Z'+2) 
            /***********SPACE***********/
              【?】;
            if(*s>'z')
            /***********SPACE***********/
              *s=【?】;
           }
         }
         printf("%s\n",str);
      #else
        printf("%s\n",str);
      #endif
    }
    答案:
       1). *s
       2). (str) 或 (s)
       3). *s='A'
       4). 'a'


    第122题 (9.0分)  题号:6
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:以下程序是用选择法对10个整数按升序排序。

    -------------------------------------------------------*/

    /***********SPACE***********/
    【?】

    main()
    {
       int i,j,k,t,a[N];
       for(i=0;i<=N-1;i++)
       scanf("%d",&a[i]);
       for(i=0;i    {
         /***********SPACE***********/
         【?】;
         /***********SPACE***********/
         for(j=i+1; 【?】;j++)
           if(a[j]      /***********SPACE***********/
         if(【?】)
         {
           t=a[i];
           a[i]=a[k];
           a[k]=t;
         }
      }
      printf("output the sorted array:\n");
      for(i=0;i<=N-1;i++)
      printf("%5d",a[i]);
      printf("\n");
    }
       
    答案:
       1). #define N 10
       2). k=i
       3). jj 或 j<=N-1 或 N-1>=j
       4).  k != i 


    第123题 (9.0分)  题号:92
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:将s所指字符串的正序和反序进行连接,形成一个新串放在t
          所指的数组中。
    例如:当s串为"ABCD"时,则t串的内容应为"ABCDDCBA"。 

    -------------------------------------------------------*/

    #include  
    #include  
    #include  
    void fun (char  *s, char  *t)
    {
      int   i, d;
      /***********SPACE***********/
      d = 【?】;
      /***********SPACE***********/
      for (i = 0; i     t[i] = s[i];
      for (i = 0; i     /***********SPACE***********/
        t[【?】] = s[d-1-i];
      /***********SPACE***********/
      t[【?】] ='\0';
    }
    main()
    {
      char  s[100], t[100];
      clrscr();
      printf("\nPlease enter string S:"); scanf("%s", s);
      fun(s, t);
      printf("\nThe result is: %s\n", t);
    }


    答案:
       1). strlen(s)
       2). i++ 或 i=i+1 或 i+=1 或 ++i
       3). d+i 或 i+d
       4). 2*d 或 d*2 或 i+d 或 d+i


    第124题 (9.0分)  题号:422
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:文件操作。

    -------------------------------------------------------*/

    # include
    # include

    void main()
    {
      /* 定义一个文件指针fp */
      /***********SPACE***********/
      【?】 *fp;
      char ch, filename[10];
      printf("Please input the name of file: ");
      scanf("%s", filename);  /* 输入字符串并赋给变量filename */
      /* 以读的使用方式打开文件filename */
      /***********SPACE***********/
      if((fp=fopen(filename, "【?】")) == NULL)
      {
        printf("Cannot open the file.\n");
        exit(0);  /* 正常跳出程序 */
      }
      /* 关闭文件 */
      /***********SPACE***********/
     【?】;
    }

    答案:
       1). FILE
       2). r
       3). fclose(fp)


    第125题 (9.0分)  题号:15
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:分别求出一批非零整数中的偶数、奇数的平均值,用零作
          为终止标记。

    -------------------------------------------------------*/

    main()
    {
      int x,i=0,j=0;
      float s1=0,s2=0,av1,av2;
      scanf("%d",&x);
      /***********SPACE***********/
      while(【?】)
      {
         if(x%2==0) {s1=s1+x;i++;}
         /***********SPACE***********/
         【?】
         {
            s2=s2+x;
            j++;
         }
         /***********SPACE***********/
         【?】;
       }
       if(i!=0) 
          av1=s1/i;
       else 
           av1=0;
       if(j!=0) 
         /***********SPACE***********/
         【?】 ;
       else 
         av2=0;
       printf("oushujunzhi:%7.2f,jishujunzhi:%7.2f\n",av1,av2);
    }

    答案:
       1). x != 0 或 x
       2). else 或 else  if(x%2==1) 或 else  if(x%2!=0) 或 if(x%2)
       3). scanf("%d",&x)
       4). av2=s2/j


    第126题 (9.0分)  题号:398
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:打印出如下图案(菱形)

       *
      ***
     *****
    *******
     *****
      ***
       *
    -------------------------------------------------------*/

    #include
    main()
    {
      int i,j,k;
      /***********SPACE***********/
      for(i=0;【?】;i++) 
      {
        for(j=0;j<=4-i;j++)
          printf(" ");
        /***********SPACE***********/
        for(k=1;k<=【?】;k++)
          printf("*");
        printf("\n");
      }
      /***********SPACE***********/
      for(【?】;j<3;j++)
      {
        for(k=0;k       printf(" ");
        for(k=0;k<5-2*j;k++)
          printf("*");
         printf("\n");
      }
    }

    答案:
       1). i<=3 或 i<4 或 3>=i 或 4>i
       2). 2*i+1 或 i*2+1 或 1+2*i 或 1+i*2
       3). j=0


    第127题 (9.0分)  题号:447
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:已知一个数列,它的头两项分别是0和1,从第三项开始以
          后的每项都是其前两项之和。编程打印此数,直到某项的
          值超过200为止。

    -------------------------------------------------------*/

    main()
    {
      int i,f1=0,f2=1;
      /***********SPACE***********/
      for(【?】;;i++)
      {
        printf("5%d",f1);
        /***********SPACE***********/
        if(f1>【?】) break;
        printf("5%d",f2);
        if(f2>200) break;
        if(i%2==0) printf("\n");
        f1+=f2;
        /***********SPACE***********/
        f2+=【?】;
      }
      printf("\n");
    }

    答案:
       1). i=1
       2). 200
       3). f1


    第128题 (9.0分)  题号:461
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:从键盘输入一个字符串,将小写字母全部转换成大写字母,
          然后输出到一个磁盘文件“test”中保存。输入的字符串
          以!结束。

    -------------------------------------------------------*/ 

    #include "stdio.h"

    main()
    {
      FILE *fp;
      char str[100],filename[10];
      int i=0;
      if((fp=fopen("test","w"))==NULL)
      {
        printf("cannot open the file\n");
        exit(0);
      }
      printf("please input a string:\n");
      gets(str);
      /***********SPACE***********/
      while(【?】)                                
      {
        if(str[i]>='a'&&str[i]<='z')
        /***********SPACE***********/
        【?】;                                
        fputc(str[i],fp);
        i++;
      }
      fclose(fp);
      /***********SPACE***********/
      fp=fopen("test",【?】);                        
      fgets(str,strlen(str)+1,fp);
      printf("%s\n",str);
      fclose(fp);
    }
    答案:
       1). str[i] != '!'
       2). str[i]=str[i]-32 或 str[i]= str[i] -32
       3). "r" 或 "wr" 或 "wr+"


    第129题 (9.0分)  题号:625
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:有一整数数组x(正序排列),判断是否有数组元素x[i]=i
          的情况发生。

    -------------------------------------------------------*/

    int  index_search(int x[], int n)
    {
      int  first = 0;
      int  last  = n-1;
      int  middle, index;
      index = -1;
      while (first <= last) 
      {
        middle = (first + last) / 2;
        /***********SPACE***********/
        if (【?】) 
        {                               
          index = middle;
          break;
        }
        /***********SPACE***********/
        else if (【?】)                        
          last = middle - 1;
        else 
          first = middle + 1;
      }
      return index;
    }

    #include  
    void main(void)
    {
      int  x[] = { -1, 0, 1, 3, 5, 7, 9, 10};
      int  n   = sizeof(x)/sizeof(int);
      int  answer, i;
      printf("\nIndex Search Program");
      printf("\n====================");
      printf("\n\nGiven Array :");
      for (i = 0; i < n; i++)
        printf("%5d", x[i]);
        /***********SPACE***********/
        【?】;                        
        if (answer >= 0)
          printf("\n\nYES, x[%d] = %d has been found.", answer, answer);
        else
          printf("\n\nNO, there is no element with x[i] = i");
    }
    答案:
       1). x[middle] == middle
       2). x[middle] > middle 或 middle    3). answer = index_search(x, n)


    第130题 (9.0分)  题号:412
    /*-------------------------------------------------------
    【程序填空】
    ---------------------------------------------------------

    功能:写一个函数,求一个字符串的长度,在main函数中输入字
          符串,并输出其长度。

    -------------------------------------------------------*/

    #include
    main()
    {
      int length(char *p);
      int len;
      char str[20];
      printf("please input a string:\n");
      scanf("%s",str);
      /***********SPACE***********/
      len=length(【?】);
      printf("the string has %d characters.",len);
    }

    /***********SPACE***********/
    【?】(p)
    char *p;
    {
      int n;
      n=0;
      while(*p!='\0')
      {
        /***********SPACE***********/
        【?】;
        /***********SPACE***********/
        【?】;
      }
      return n;
    }
    答案:
       1). str
       2). length 或 int length
       3). n++ 或 ++n 或 n=n+1 或 n+=1
       4). p++ 或 ++p 或 p=p+1 或 p+=1


     

  • 相关阅读:
    Vue 指令整理
    iLogtail 社区版使用入门 - 采集 MySQL Binlog
    PDAF简介
    2022牛客暑期多校训练营2 个人题解
    DDR4硬件原理图设计详解
    EXCEL里数值列如何显示序号?如何重新排序? 怎么取得排序后的序号?
    应用计量经济学问题~
    openGauss学习笔记-126 openGauss 数据库管理-设置账本数据库-归档账本数据库
    Unity丨自动巡航丨自动寻路丨NPC丨
    分布式事务与分布式锁区别及概念学习
  • 原文地址:https://blog.csdn.net/qq_38220914/article/details/127662665