vlambda博客
学习文章列表

C语言程序填空(一)

1程序填空

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

【程序填空】

---------------------------------------------------------

 

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

 

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

 

#include "stdio.h"

#include"string.h"

c10_16(char p[],int b)

{

  int j,i=0;

  /**********FILL**********/

  while (_____)

  {

    j=b%16;

    if(j>=0&&j<=9)

      /**********FILL**********/

      _____;

    else p[i]=j+55;

      b=b/16;

    i++;

  }

  /**********FILL**********/

  _____;

}

main ()

{

  int a,i;

  char s[20];

  printf("input a integer:\n");

  scanf("%d",&a);

  c10_16(s,a);

  for(i=strlen(s)-1;i>=0;i--)

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

  printf("\n");

}

 

【空 1】   错误

【学生答案】

while(_____)

 

【参考答案】

b>0

0<b

b!=0

0!=b

b

 

 

============================================================

 

【空 2】   错误

【学生答案】

_____;

 

【参考答案】

p[i]=j+'0'

p[i]=j+48

*(p+i)=j+'0'

*(p+i)=j+48

 

 

============================================================

 

【空 3】   错误

【学生答案】

_____;

 

【参考答案】

p[i]='\0'

p[i]=0

p[i]=NULL

*(p+i)='\0'

*(p+i)=0

*(p+i)=NULL

 

 

 

 

 

 

 

2【程序填空】

---------------------------------------------------------

 

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

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

#include "stdio.h"

/***********FILL***********/

float fun(_____, int n)

{

  /***********FILL***********/

  _____; 

  float xa=0, s;

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

    xa += x[j]/n;

  /***********FILL***********/

  _____;

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

     s += (x[j]-xa)*(x[j]-xa)/n;

  /***********FILL***********/

  _____;

}

main ( )

{

  float x[100] = {193.199, 195.673, 195.757,196.051, 196.092,196.596,196.579, 196.763};

  printf("%f\n", fun (x, 8));

}

 

【空 1】   错误

【学生答案】

floatfun(_____,intn)

 

【参考答案】

floatx[]

float*x

 

 

============================================================

 

【空 2】   错误

【学生答案】

_____;

 

【参考答案】

intj

 

 

============================================================

 

【空 3】   错误

【学生答案】

_____;

 

【参考答案】

s =0

s =0.0

 

 

============================================================

 

【空 4】   错误

【学生答案】

_____;

 

【参考答案】

returns

return(s)

 

 

============================================================

 

3【程序填空】

---------------------------------------------------------

 

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

 

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

#include "stdio.h"

int  cyclic_min(int  x[], int n)

{

  int left  = 0;

  int right = n - 1;

  int mid;

  /***********FILL***********/

  while (_____)

  {                       

    mid = (left + right)/2;

    if (x[mid] < x[right])

      /***********FILL***********/

       _____;                       

    else

      /***********FILL***********/

      _____;                       

  }

  return left;

}

main()

{

     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 inCyclic Fashion :\n");

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

          printf("%3d", x[i]);

     loc = cyclic_min(x, n);

     printf("\n\nMinimum is located atx[%d] = %d", loc, x[loc]);

}

【空1 】  错误

【学生答案】

while(_____)

 

【参考答案】

left< right

right>left

 

【空2 】  错误

【学生答案】

_____;

 

【参考答案】

right= mid

 

【空3 】  错误

【学生答案】

_____;

 

【参考答案】

left  = mid + 1

left  = 1+mid

4【程序填空】

---------------------------------------------------------

 

功能s所指字符串的正序和反序进行连接形成一个新串放在t

      所指的数组中。

例如:当s串为"ABCD"时,则t串的内容应为"ABCDDCBA"。

 

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

 

#include  <stdio.h>

#include  <string.h>

void fun(char  *s, char *t)

{

  int  i, d;

  /**********FILL**********/

  _____= strlen(s);

  /**********FILL**********/

  for (i = 0; i<d; _____) 

    t[i] = s[i];

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

    t[d+i] = s[d-1-i];

  /**********FILL**********/

  t[_____] ='\0';

}

void main()

{

  char s[100], t[100];

  printf("\nPlease enter string S:");scanf("%s", s);

  fun(s, t);

  printf("\nThe result is: %s\n", t);

}

 

【空 1】   错误

【学生答案】

_____=strlen(s);

 

【参考答案】

d

 

 

============================================================

 

【空 2】   错误

【学生答案】

for(i=0;i<d;_____)

 

【参考答案】

i++

i=i+1

i+=1

++i

i=1+i

 

 

============================================================

 

【空 3】   错误

【学生答案】

t[_____]='\0';

 

【参考答案】

2*d

d*2

i+d

d+i

2*i

i*2

 

 

============================================================

 

 

5【程序填空】

---------------------------------------------------------

 

功能:输入字符串,再输入一个字符,将字符串中与输入字符相

      同的字符删除。

 

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

 

#include "stdio.h"

void fun(char a[],char c)

{

  int i,j;

  /***********FILL***********/

  for(i=j=0; _____;i++)

    if(a[i]!=c) a[j++]=a[i];

  /***********FILL***********/

  _____;

}

main()

{

  char a[20],cc;

  gets(a);

  /***********FILL***********/

  _____;

  /***********FILL***********/

  _____;

  puts(a);

}

1 错误

【学生答案】

for(i=j=0;_____;i++)

 

【参考答案】

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)

 

 

6【程序填空】

---------------------------------------------------------

 

功能:下面create函数的功能是建立一个带头结点的单向链表,

      新产生的结点总是插入在链表的末尾。输入0代表结束,单

      向链表的头指针作为函数值返回。

 

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

 

#include <stdio.h>

 

#define LEN sizeof(structstudent)

 

struct student

{

  long num;

  struct student *next;

};

 

struct student *creat()

{

  struct student *head=NULL,*tail;

  long num;

  int a;

  /**********FILL**********/

  tail=(_____)malloc(LEN);                               

  printf("please input date\n");

  do

  {

    scanf("%ld",&num);

    if(num!=0)                                               

    {

      if(head==NULL)

        head=tail;                                       

      else

      /**********FILL**********/

       _____;

      tail->num=num;

      tail->next=(struct list *)malloc(LEN);

    }

    else

      tail->next=NULL;

   }while(num!=0);

    /**********FILL**********/

  return(_____) ;

}

 

void main()

{

  struct student *p;

  p=creat();

  printf("you input  is\n");

  while(p)

  {

    printf("%d\n",p->num);

    p=p->next;

  }

}

【空 1    错误

【学生答案】

tail=(_____)malloc(LEN);

 

【参考答案】

structstudent*

 

 

============================================================

 

【空 2    错误

【学生答案】

_____;

 

【参考答案】

tail=tail->next

 

 

============================================================

 

【空 3    错误

【学生答案】

return(_____);

 

【参考答案】

head

 

 

============================================================

 

 

 

7【程序填空】

---------------------------------------------------------

 

功能产生并输出如下形式的方阵。

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

 

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

#include <stdio.h>

void main()

{

 int a[7][7];

 int i,j;

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

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

     {

/**********FILL**********/

      if (i==j_____i+j==6) a[i][j]=1;

/**********FILL**********/

      else if (i<j&&i+j<6)a[i][j]=_____;

      else if (i>j&&i+j<6)a[i][j]=3;

      else if (i<j&&i+j>6)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]);

/**********FILL**********/

    putchar(_____);

     }

}

 

【空 1    错误

【学生答案】

if(i==j_____i+j==6)a[i][j]=1;

 

【参考答案】

||

 

 

============================================================

 

【空 2    错误

【学生答案】

elseif(i<j&&i+j<6)a[i][j]=_____;

 

【参考答案】

2

 

 

============================================================

 

【空 3    错误

【学生答案】

putchar(_____);

 

【参考答案】

'\n'

 

 

============================================================

 

8【程序填空】

---------------------------------------------------------

 

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

      一个字符串。

 

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

 

#include<stdio.h>

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

{

   char*p1,*p2;

  p1=str1+m; 

  /**********FILL**********/

  p2=_____;

  /**********FILL**********/

  while(_____)

  *p2++=*p1++;

  *p2='\0';

}

void main()

{

   inti,m;

   charstr1[80],str2[80];

  gets(str1);

  scanf("%d",&m);

  /**********FILL**********/

  _____;

  puts(str1);puts(str2);

}

【空 1   错误

【学生答案】

p2=_____;

 

【参考答案】

str2

 

 

============================================================

 

【空 2   错误

【学生答案】

while(_____)

 

【参考答案】

*p1

 

 

============================================================

 

【空 3   错误

【学生答案】

_____;

 

【参考答案】

strcopy(str1,str2,m)

 

 

 

9【程序填空】

---------------------------------------------------------

 

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

      素交换输出数组。

 

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

#include <stdio.h>

void input(int number[10])

{

  int i;

  /**********FILL**********/

  for(i=0;_____;i++)

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

}

void max_min(int array[10])

{

  int *max,*min,t;

  int *p,*arr_end;

  arr_end=array+10;

  max=min=array;

  for(p=array;p<arr_end;p++)

    if(*p>*max)

      max=p;

  else if(*p<*min)

    /**********FILL**********/

   _____;

  t=array[0];

  array[0]=*min;

  *min=t; 

  t=array[9];

  /**********FILL**********/

  _____;

  *max=t;

}

void output(int array[10])

{

  int *p;

  for(p=array;p<array+9;p++)

  printf("%d,",*p);

  printf("%d\n",array[9]);

}

void main()

{

  int number[10];

  input(number);

  max_min(number);

  output(number);

}

【空 1

i<=9

9>=i

i<10

10>i

【空 2 min=p

【空 3 array[9]=*max

 

10四.【程序填空】

---------------------------------------------------------

 

题目:下面程序的功能是用递归法求n!。

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

#include "stdio.h"

main()

{

  /***********FILL***********/

  _____;  

  int n;

  long y;

  printf("input an integer number:");

  scanf("%d",&n);

  /***********FILL***********/

  y=_____;

  printf("%d!=%ld\n",n,y);

}

 

long fac(int n)

{

  long f;

  if(n<0)

     printf("n<0,data error!");

  else if(n==0,n==1)

    f=1;

  else 

    /***********FILL***********/

    f=_____;

  return(f);

}

【空 1    错误

【学生答案】

_____;

 

【参考答案】

longfac(int n)

 

 

============================================================

 

【空 2    错误

【学生答案】

y=_____;

 

【参考答案】

fac(n)

 

 

============================================================

 

【空 3    错误

【学生答案】

f=_____;

 

【参考答案】

fac(n-1)*n

n*fac(n-1)