C语言考试题库之填空题
━━━━━━━━━━━━━━━━━━
一、程序填空 共130题
━━━━━━━━━━━━━━━━━━
第1题 (9.0分) 题号:441
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:从低位开始取出长整型变量s中奇数位上的数,依次构成一
个新数放在t中。
-------------------------------------------------------*/
#include <conio.h>
#include <stdio.h>
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<stdio.h>
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<stdio.h>
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 <stdio.h>
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<m ; 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). j<k 或 k>j
第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<i;r++)printf(" ");
printf("w");
/***********SPACE***********/
for(k=1; 【?】 ;k++)printf(" ");
printf("w");
for(m=1;m<i;m++)printf(" ");
}
/***********SPACE***********/
【?】;
}
}
#include <conio.h>
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 <limits.h>
/***********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 <stdio.h>
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). x<y?x:y 或 y>x?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 <stdio.h>
#include <stdlib.h>
#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<n1 或 *pointer1>*pointer2 或 *pointer2<*pointer1
2). n1>n3 或 n3<n1 或 *pointer1>*pointer3 或 *pointer3<*pointer1
3). n2>n3 或 n3<n2 或 *pointer2>*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<m
3). m=m/10 或 m/=10
第14题 (9.0分) 题号:442
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:将长整型数中每一位上为奇数的数依次取出,构成一个新数
放在t中。高位仍在高位,低位仍在低位。
-------------------------------------------------------*/
#include <conio.h>
#include <stdio.h>
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 <stdio.h>
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 <math.h>
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<stdio.h>
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<score
3). score<min 或 min>score
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 <math.h>
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 <stdio.h>
#include <stdio.h>
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<b)
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 或 j<i+1 或 i+1>j 或 j-1<i 或 i>j-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<b 或 b!=0 或 0!=b 或 b
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<N;k++)
printf("%4d",a[k]);
/***********SPACE***********/
for (k=0;k<N/2; 【?】 )
{
s=a[k];
/***********SPACE***********/
【?】 ;
/***********SPACE***********/
【?】 ;
}
printf("\n the changed array:\n");
for (k=0;k<N;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 <string.h>
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<y2;i++) n+=365+f(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]<a[k]
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). i<n 或 n>i 或 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 <string.h>
#include <stdio.h>
#include <ctype.h>
#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 <stdio.h>
#include <stdlib.h>
#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<arr_end;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<array+9;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 <stdio.h>
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<stdio.h>
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 <stdio.h>
#include <math.h>
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<arr_end;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<array+9;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 <stdio.h>
/***********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 <stdio.h>
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 <stdio.h>
#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 <stdio.h>
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 <stdio.h>
#include <string.h>
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 <conio.h>
#include <stdio.h>
#include <string.h>
void fun (char *s, char *t)
{
int i, sl;
/***********SPACE***********/
sl = 【?】;
for(i=0; i<sl; i++)
t[i] = s[i];
for (i=0; i<sl; 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 <stdio.h>
#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<n;i++)str[i]=name[i];
printf("Input %d strings:\n",n);
for(i=0;i<n;i++)
{
printf("name[%d]=",i);
/***********SPACE***********/
scanf("%s",【?】);
}
printf("String arry:\n");
for(i=0;i<n;i++)
{
p=str+i;
printf("%s\n",*p);
}
p=str;
sort(p,n);
printf("String sort:\n");
for(i=0;i<n;i++)
{
p=str+i;
printf("%s\n",*p);
}
getch();
}
/***********SPACE***********/
void sort(char 【?】,int n)
{
int i,j;
char *s;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;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 <conio.h>
#include <stdio.h>
/***********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<x.m-1;k++)x.n+=a[k];
/***********SPACE***********/
printf("n=%d\n",【?】);
}
答案:
1). struct
2). x
3). f
4). x.n
第49题 (9.0分) 题号:420
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:计算某日是当年的第几天。
-------------------------------------------------------*/
#include <stdio.h>
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 <stdio.h>
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 <stdio.h>
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<da.m;p++)n+=a[p-1];
printf("n=%d\n",n);
}
答案:
1). struct
2). !=
3). ||
4). da.d
第56题 (9.0分) 题号:404
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:从键盘上输入两个复数的实部与虚部,求出并输出它们的
和、差、积、商。
-------------------------------------------------------*/
#include<stdio.h>
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 <math.h>
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 <stdio.h>
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<n;i++)
scanf("%s",s[i]);
/***********SPACE***********/
fp=fopen("text",【?】);
for(i=0;i<n;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<n) {p=m,m=n;n=p;}
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 <stdio.h> /* for I/O functions */
#include <stdlib.h> /* for atoi() */
#include <math.h> /* 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 <stdio.h>
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 <stdio.h>
#include <conio.h>
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 <conio.h>
#include <stdio.h>
/***********SPACE***********/
float fun(【?】, int n)
{
/***********SPACE***********/
【?】;
float xa=0, s;
for (j=0; j<n; j++ )
xa += x[j]/n;
/***********SPACE***********/
【?】;
for (j=0; j<n; 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 <stdio.h>
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 <stdio.h>
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<n-1)
{
/***********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). i<n 或 n>i
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<month
第71题 (9.0分) 题号:428
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:输入一个学生的生日(年:y0、月:m0、日:d0),并输
入当前日期(年:y1、月:m1、日:d1)。求出该学生的
年龄(实足年龄)。
-------------------------------------------------------*/
#include <stdio.h>
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 <stdio.h>
#include <stdlib.h>
#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 <stdio.h>
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 <stdio.h>
#include <stdlib.h>
#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 <stdio.h>
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<n ; i++)
{
printf("a[%d]= ",i) ;
scanf("%d",&a[0][i]) ;
}
/***********SPACE***********/
while(【?】)
{
for(i=0 ; i<n ; i++)
if(a[1][i]==0)
/***********SPACE***********/
【?】 ;
k=i ;
for(j=i ; j<n ; j++)
/***********SPACE***********/
if(a[1][j]==0 && a[0][j]<a[0][k]) 【?】 ;
a[1][k]=r++ ;
m++ ;
for(j=0 ; j<n ; j++)
if(a[1][j]==0 && a[0][j]==a[0][k])
{
a[1][j]=a[1][k] ;
m++ ;
}
}
for(i=0 ; i<n ; i++)
printf("a[%d]=%d, %d\n",i,a[0][i],a[1][i]) ;
}
答案:
1). m<n 或 n>m
2). break
3). k=j
第79题 (9.0分) 题号:465
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:输入颜色字符串包含b、w、r,分别代表BLUE,WHITE,RED
颜色。重新整理字符串,变为bbb....www...rrr形式。
如:输入: bwwrbbrr
整理后输出:bbbwwrrr
-------------------------------------------------------*/
#include <string.h>
#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 <stdio.h>
#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). white<red 或 red>white
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<n) 或 while(n!=0) 或 while(0!=n)
4). printf("\n")
第82题 (9.0分) 题号:7
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:从键盘上输入一个字符串, 将该字符串升序排列后输出到
文件test.txt中,然后从该文件读出字符串并显示出来。
-------------------------------------------------------*/
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
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<n-i-1;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). i<n 或 n>i 或 i<-1+n 或 i<n-1 或 n-1>i 或 -1+n>i 或 i<=n-1 或 n-1>=i 或 -1+n>=i
3). str[j]>str[ j + 1 ] 或 str[ j + 1 ]<str[j] 或 str[j+1]<str[j] 或 str[j+1]<=str[j]
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<M;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<N+1;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<N;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<N;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 <stdio.h>
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<m;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<N;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<stdio.h>
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 <stdio.h>
/***********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). <math.h>
2). fabs(a)
3). fabs(disc) > 1e-6 或 1e-6 <fabs(disc)
第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<n-1;i++)
scanf("%d,",&number[i]);
scanf("%d",&number[n-1]);
/***********SPACE***********/
move(【?】);
for(i=0;i<n-1;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 <stdio.h>
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<a[mid])
/***********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 <stdio.h>
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 <stdio.h>
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 <conio.h>
#include <stdio.h>
/***********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 <conio.h>
#include <stdio.h>
#include <math.h>
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 或 j<i+1 或 i+1>j
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<a[i][j]) 【?】 ;
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 或 j<n 或 n>j 或 j<n-1
2). i<n-j-1 或 n-j-1>i 或 i<n-1-j 或 n-1-j>i 或 i<=n-j-2 或 i<=n-2-j
3). a[i]>a[ i + 1 ] 或 a[ i + 1 ]<a[i]
4). fun(a,10)
第108题 (9.0分) 题号:489
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:h_sequence 是一组由0和1组成的数列,它定义如下:
<h-seq> = 0
<h-seq> = 1 <h-seq> <h-seq>
利用函数检测输入的字符串是否是h_sequence数列
-------------------------------------------------------*/
#include <string.h>
#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 <stdio.h>
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 <stdio.h>
#include <stdlib.h>
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<m;i++)
for(j=0;j<n;j++)
/***********SPACE***********/
if(max<array[i][j])【?】;
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<j&&i+j<6) 【?】;
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). i<j && i + j>6 或 j>i && i + j>6 或 i<j && i + 6<j 或 j>i && i + 6<j
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<n
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 <stdio.h>
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<x[middle]
3). answer = index_search(x, n)
第120题 (9.0分) 题号:429
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:从读入的整数数据中,统计大于零的整数个数和小于零的
整数个数。用输入零来结束输入,程序中用变量i统计大于
零的整数个数,用变量j统计小于零的整数个数。
-------------------------------------------------------*/
#include <stdio.h>
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<N-1;i++)
{
/***********SPACE***********/
【?】;
/***********SPACE***********/
for(j=i+1; 【?】;j++)
if(a[j]<a[k]) k=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). j<N 或 N>j 或 j<=N-1 或 N-1>=j
4). k != i
第123题 (9.0分) 题号:92
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:将s所指字符串的正序和反序进行连接,形成一个新串放在t
所指的数组中。
例如:当s串为"ABCD"时,则t串的内容应为"ABCDDCBA"。
-------------------------------------------------------*/
#include <conio.h>
#include <stdio.h>
#include <string.h>
void fun (char *s, char *t)
{
int i, d;
/***********SPACE***********/
d = 【?】;
/***********SPACE***********/
for (i = 0; i<d; 【?】)
t[i] = s[i];
for (i = 0; i<d; 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 <stdio.h>
# include <stdlib.h>
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 <stdio.h>
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<j+3;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 <stdio.h>
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<x[middle]
3). answer = index_search(x, n)
第130题 (9.0分) 题号:412
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:写一个函数,求一个字符串的长度,在main函数中输入字
符串,并输出其长度。
-------------------------------------------------------*/
#include <stdio.h>
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
C语言考试题库之填空题相关推荐
- c语言判断非法字符题目,C语言考试题库之判断题-c语言考试判断题
<C语言考试题库之判断题-c语言考试判断题>由会员分享,可在线阅读,更多相关<C语言考试题库之判断题-c语言考试判断题(7页珍藏版)>请在人人文库网上搜索. 1.三.判断题(1 ...
- c语言程序填空题库,C语言程序设计题考试题库选择填空题完整答案精美篇
※试题说明: 选择题共15道,2分/道:数据类型1个.选择结构2个.循环结构2个.数组3个.函数3个.预处理1个.指针2个.结构体1个.基本操作题.程序改错题.程序填空题.程序设计题.考试时间90分钟 ...
- 雨课堂c语言考试题库,考试查题神器,大学章节搜题,超星章节搜题,雨课堂期末查题app...
考试查题神器,大学章节搜题,超星章节搜题,雨课堂期末查题app 更多相关问题 目前我国开征的税种有().A.增值税B.营业税C.所得税D.遗产税 以下属于高级语言的有(). (A) 汇编语言 (B) ...
- 陕科大c语言题库,C语言考试题库
<C语言考试题库>由会员分享,可在线阅读,更多相关<C语言考试题库(30页珍藏版)>请在人人文库网上搜索. 1.1. 编程题请编写函数fun,其功能是:将两个两位数的正整数a. ...
- 东北大学C语言期末考试题库--期末原题试题(6)
东北大学C语言期末考试题库–期末原题试题(6) 大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博客地址为:亓官劼的博客,微信公众号为[亓 ...
- c语言二级考试真题新疆,新疆自治区计算机二级C语言考试题库.doc
新疆自治区计算机二级C语言考试题库.doc 一单选题1.已知 int a,b;下列 switch语句中正确的是 b . A. switchacase a a;break;case b b;break; ...
- 下面合法的C语言字符常量是( ),C语言考试题库及答案
<C语言考试题库及答案>由会员分享,可在线阅读,更多相关<C语言考试题库及答案(52页珍藏版)>请在人人文库网上搜索. 1.C语言考试题库及答案C语言理论上机考试选择题部分(共 ...
- c语言第一章考试题及答案,C语言考试题库及答案整理版.doc
C语言考试题库及答案整理版.doc C语言理论上机考试选择题部分(共200题) 1.下面程序的输出是___D______ #include void main() { int k=11; printf ...
- kij是不是c语言语句,C语言考试题库及答案分析(总35页).doc
C语言考试题库及答案分析(总35页).doc C语言理论上机考试选择题部分(共200题,仅针对11级定向专业)1.下面程序的输出是_Dincludestdio.hvoid main int k11; ...
- 北师大c语言2019在线作业,2019最新C语言考试题库及答案
<2019最新C语言考试题库及答案>由会员分享,可在线阅读,更多相关<2019最新C语言考试题库及答案(100页珍藏版)>请在人人文库网上搜索. 1.2019最新C语言考试题库 ...
最新文章
- 瘦了!光荣!都是忙工作忙的!
- 算法---找到数组中第二大的数
- JavaScript标准参考教材(alpha)--笔记
- Oracle 原理: 初步认识程序包
- Shader学习笔记_函数探索_tex2D(sampler2D tex, float2 s)
- 瓶子个数计数halcon
- HDU-4145 A Simple Problem 简单数论
- Sass学习笔记 -- 混合器
- 开源点云数据处理 开源_开源云–充满希望的未来
- C、C++编程学习资料收藏
- 世纪佳缘 助手 免 邮票 群发 照片下载 信息检索等(完全功能版)
- win10 android叹号,win10系统设备管理器驱动显示黄色感叹号的详细技巧
- 安卓手机m3u8转为mp4格式100%有效的方法
- 【机器学习实战】利用KNN和其他分类器对手写数字进行识别
- 软件外包的五点管理技巧
- Python3《机器学习实战》学习笔记(三):决策树实战篇之为自己配个隐形眼镜
- Python unittest使用
- 固态硬盘多大合适 php,固态硬盘温度一般多少度
- 将form改为ajax提交
- [测试] 调查问卷相关测试
热门文章
- 网络安全-使用PGP实现电子邮件安全
- 【公开课报名】腾讯产品经理教你如何用好腾讯会议
- 苹果6显示连接id服务器出错,科技知识:如果连接appleid时发生服务器出错应该如何处理...
- iphone手机如何修改Apple ID密码
- 【全自动网盘扩容软件使用教程】百度网盘自助无限扩容+自助无限修复软件使用步骤说明
- android手机闹钟程序,Android手机闹钟用法实例
- 创建博客园 博客阅读器(使用 JavaScript 和 HTML 的 Metro 风格应用)源码
- 紫微斗数排盘JS算法 源码 和解析
- Linux如何查看和设置DNS服务器地址
- 树莓派实现实时视频监控