文档库 最新最全的文档下载
当前位置:文档库 › 程序填空

程序填空

功能:以下程序的功能如(图1)。
题号:34
-------------------------------------------------------*/

#include
#include
/***********SPACE***********/
float fun(【?】, int n)
{
/***********SPACE***********/
【?】;
float xa=0, s;
for (j=0; jxa += x[j]/n;
/***********SPACE***********/
【?】;
for (j=0; js += (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)

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

#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

题号: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');


功能:计算某日是当年的第几天。
题号: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
题号: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 (ielse 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 + 64). printf("\n")
题号: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

题号: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 == NUL 题号: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;kprintf("%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
---------------------------------------
【程序填空】
---------------------------------------------------------

功能: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

题号: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题号: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

题号: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)

题号: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
号: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 或 02). i=2
3). r=n%i
4). n=n/i 或 n/=i
题号: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;pif(*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;pprintf("%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

题号: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

题号:440
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------

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

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

#include
#include
#include

void fun (char *s, char *t)
{
int i, sl;
/***********SPACE***********/
sl = 【?】;
for(i=0; it[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
题号: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+"

题号: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;ifor(j=0;j/***********SPACE***********/
if(maxreturn(max);
}
答案:
1). max_value(3,4,a)
2). array[][4] 或 array[3][4]
3). max=array[i][j]
题号: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 )
题号: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

题号: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;pif(*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;pprintf("%d,",*p);
printf("%d\n",array[9]);
}
答案:
1). i<9 或 9>i
2). min=p
3). l=*p
4). array[9]=k
题号: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 )


题号: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;pprintf("n=%d\n",n);
}

答案:
1). struct
2). !=
3). ||
4). da.d
题号: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 或 middle3). answer = index_search(x, n)

题号: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
题号: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;iprintf("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;ifor(j=i+1;jif(strcmp(p[i],p[j])>0)
{
s=p[i];
/***********SPACE***********/
【?】;
p[j]=s;
}
}
答案:
1). ||
2). str[i]
3). **p
4). p[i]=p[j]

题号: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 或 02). i=2
3). r=n%i
4). n=n/i 或 n/=i

题号: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 题号: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
题号: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<=1

000000 或 1000000>=i
4). printf

题号: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 或 03). m=m/10 或 m/=10
题号: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 或 middle3). answer = index_search(x, n)
题号: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

题号: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

题号: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)
题号: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
题号: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
题号: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
题号: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)
题号: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
题号: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
题号: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
题号: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)
题号: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
题号: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
题号: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 )
题号: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)
题号: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
题号: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")
题号:20
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------

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

倍数。

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

main()
{
int m,n,r,p,gcd,lcm;
scanf("%d%d",&m,&n);
if(mp=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
题号: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

题号: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

相关文档