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)