c语言填空 下载本文

试卷编号:10097 所属语言:Turbo C 试卷方案:cx1 试卷总分:1260分 共有题型:1种 一、程序填空 共126题 (共计1260分) 第1题 (10.0分) 题号:425

/*------------------------------------------------------- 【程序填空】

--------------------------------------------------------- 功能:当输入“2,5”的时候输出为“2 5 5” -------------------------------------------------------*/ #include #define max 100

main() {

int f[max],i,j,k,m;

scanf(\

/***********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(\}

答案: 1). M 2). k-1 或 k -1 3). += 或 =1+

第2题 (10.0分) 题号:466

/*------------------------------------------------------- 【程序填空】

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

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

-------------------------------------------------------*/ # include main() {

float x0,x1,x2,fx0,fx1,fx2; do {

printf(\ scanf(\ fx1=x1*((2*x1-4)*x1+3)-6; fx2=x2*((2*x2-4)*x2+3)-6;

/***********SPACE***********/

1

}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(\}

答案: 1). >0 2). <0 3). fabs(fx0)

第3题 (10.0分) 题号:476

/*------------------------------------------------------- 【程序填空】

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

功能:不用第三个变量,实现两个数的对调操作。 -------------------------------------------------------*/ #include main() {

int a,b;

scanf(\ printf(\

/***********SPACE***********/

a= 【?】 ; /***********SPACE***********/

b= 【?】 ; /***********SPACE***********/

a= 【?】 ; printf(\}

2

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

第4题 (10.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(\ scanf(\ for(i=0 ; i

printf(\ scanf(\ }

/***********SPACE***********/

while(【?】) {

for(i=0 ; i

/***********SPACE***********/

【?】 ; k=i ;

for(j=i ; j

/***********SPACE***********/

if(a[1][j]==0 && a[0][j]

for(j=0 ; j

if(a[1][j]==0 && a[0][j]==a[0][k]) {

a[1][j]=a[1][k] ; m++ ; } }

for(i=0 ; i

printf(\

3

}

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

第5题 (10.0分) 题号:458

/*------------------------------------------------------- 【程序填空】

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

功能:用等分法在有序的循环数组中,找到最小元素的位置。 -------------------------------------------------------*/ int cyclic_min(int x[], int n) {

int left = 0; int right = n - 1; int mid;

/***********SPACE***********/ while (【?】)

{ mid = (left + right)/2; if (x[mid] < x[right])

/***********SPACE***********/ 【?】; else

/***********SPACE***********/ 【?】; }

return left; }

#include void main(void) {

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

printf(\ printf(\

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

printf(\ loc = cyclic_min(x, n);

printf(\}

答案1). left < right 或 right>left 2). right = mid 3). left = mid + 1 或 left = 1+mid

4

第6题 (10.0分) 题号:34

/*------------------------------------------------------- 【程序填空】

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

-------------------------------------------------------*/ #include #include

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

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

float xa=0, s; for (j=0; j

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

for (j=0; j

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

/***********SPACE***********/ 【?】; }

main ( ) {

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

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

第7题 (10.0分) 题号:430

/*------------------------------------------------------- 【程序填空】

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

-------------------------------------------------------*/ #include

/***********SPACE***********/ #include 【?】 main() {

float a,b,c,disc,x1,x2,realpart,imagpart; scanf(\

5

printf(\

/***********SPACE***********/ if(【?】<=1e-6)

printf(\ else

disc=b*b-4*a*c; if(fabs(disc)<=1e-6)

printf(\ /***********SPACE***********/ else if(【?】) {

x1=(-b+sqrt(disc))/(2*a); x2=(-b-sqrt(disc))/(2*a);

printf(\ } else {

realpart=-b/(2*a);

imagpart=sqrt(-disc)/(2*a); printf(\

printf(\ printf(\ } }

答案: 1). 2). fabs(a) 3). fabs(disc) > 1e-6 或 1e-6

第8题 (10.0分) 题号:410

/*------------------------------------------------------- 【程序填空】

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

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

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

int number[20],n,m,i;

printf(\ scanf(\ printf(\ scanf(\ for(i=0;i

scanf(\ scanf(\

/***********SPACE***********/

6

move(【?】); for(i=0;i

printf(\ printf(\}

/***********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

第9题 (10.0分) 题号:15

/*------------------------------------------------------- 【程序填空】

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

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

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

int x,i=0,j=0;

float s1=0,s2=0,av1,av2; scanf(\

/***********SPACE***********/ while(【?】) {

if(x%2==0) {s1=s1+x;i++;}

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

s2=s2+x; j++; }

4). p-1 或 p -1 7

/***********SPACE***********/ 【?】; }

if(i!=0) av1=s1/i; else

av1=0; if(j!=0)

/***********SPACE***********/ 【?】 ; else av2=0;

printf(\}

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

第10题 (10.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(\

scanf(\

f=x.y%4==0&&x.y0!=0||x.y@0==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

if(x%2!=0) 或 if(x%2) 8

}

答案: 1). Struct 2). X 3). F 4). x.n

第11题 (10.0分) 题号:462

/*------------------------------------------------------- 【程序填空】

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

功能:把字符串中所有的字母改写成该字母的下一个字母,最后 一个字母z改写成字母a。大字母仍为大写字母,小写字母 仍为小写字母,其它的字符不变。

例如:原有的字符串为:“Mn.123xyZ”,调用该函数后,串中的 内容为:“No.123yzA”。

-------------------------------------------------------*/ #include #include #include #define N 81

main( ) {

char a[N],*s;

printf ( \ \ gets ( a );

printf ( \ \ puts( a );

/***********SPACE***********/

【?】; while(*s) {

if(*s=='z') *s='a';

else if(*s=='Z') *s='A';

else if(isalpha(*s))

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

【?】; }

printf ( \ \ puts ( a ); }

答案:1). s=a 2). *s+=1 或 *s=*s+1 或 (*s)++ 或 ++(*s)

3). s++ 或 s=s+1 或 ++s 或 s= s + 1

9

第12题 (10.0分) 题号:27

/*------------------------------------------------------- 【程序填空】

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

功能:统计一个字符串中的字母、数字、空格和其它字符的个数。 -------------------------------------------------------*/ #include \main () {

char s1[80];int a[4]={0}; int k;

/***********SPACE***********/ 【?】; gets(s1);

/***********SPACE***********/ 【?】; puts(s1);

for(k=0;k<4;k++) printf(\}

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

第13题 (10.0分) 题号:452

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

10

【程序填空】

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

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

-------------------------------------------------------*/ #include \#define N 100

main() {

FILE *fp;

char c,*p,s[N][20]; int i,n;

printf(\

/***********SPACE***********/ if(n<1【?】n>N) exit(0); printf(\ for(i=0;i

/***********SPACE***********/ fp=fopen(\【?】); for(i=0;i

p=s[i];

/***********SPACE***********/ while(*p!='\\0')

if(!ferror(fp)) fputc(【?】,fp); }

fclose(fp); printf(\

/***********SPACE***********/ fp=fopen(\【?】); while((c=fgetc(fp))!=EOF) {

if(c>'a'&&c<='z')c-+32; putchar(c); }

printf(\ fclose(fp); }

答案: 1). || 2). \

3). *p++ 4). \11

第14题 (10.0分) 题号:469

/*------------------------------------------------------- 【程序填空】

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

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

-------------------------------------------------------*/ #include

void convert(int n) {

int i;

/***********SPACE***********/

if((【?】)!=0) convert(i);

/***********SPACE***********/

putchar(n+【?】); }

main() {

int number;

printf(\ scanf(\ printf(\ if(number<0) {

putchar('-');

/***********SPACE***********/ 【?】; }

convert(number); }

答案: 1). i=n/10 2). '0' 3). number=-number

第15题 (10.0分) 题号:14

/*------------------------------------------------------- 【程序填空】

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

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

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

12

{

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==0) {

printf(\

/***********SPACE***********/ if(i==0) 【?】; } } }

答案:1). k=0 2). n 或 n-n/10*10 或 n-10*(n/10) 3). while(n>0) 或 while(0

第16题 (10.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***********/

13

for(k='x';【?】;k++) {

/***********SPACE***********/ if(【?】) {

/***********SPACE***********/ if(i!='x'&&k!=【?】)

printf(\ } } } }

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

第17题 (10.0分) 题号:447

/*------------------------------------------------------- 【程序填空】

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

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

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

int i,f1=0,f2=1;

/***********SPACE***********/ for(【?】;;i++) {

printf(\

/***********SPACE***********/ if(f1>【?】) break; printf(\ if(f2>200) break;

if(i%2==0) printf(\ f1+=f2;

/***********SPACE***********/ f2+=【?】; }

printf(\}

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

第18题 (10.0分) 题号:486

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

4). 'z' 14

【程序填空】

--------------------------------------------------------- 功能:删除字符串中的数字字符。

例如:输入字符串:48CTYP9E6,则输出:CTYPE。 -------------------------------------------------------*/ #include

/***********SPACE***********/

void fun (【?】) {

char *p=s; while(*p)

if((*p>='0')&&(*p<='9')) p++; /***********SPACE***********/

else *s++=【?】; /***********SPACE***********/

【?】; }

main( ) {

char item[100] ;

printf(\ gets(item); fun(item);

printf(\}

答案:1). char *s 或 char s[] 2). *p++ 3). *s='\\0' 或 *s=0

第19题 (10.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++)

15

{

/***********SPACE***********/ if(z==x【?】z==y) continue;

/***********SPACE***********/ if(1111*(x+y+z)==【?】+1110*x+z) {

printf(\ /***********SPACE***********/

printf(\【?】); exit(0); } } } }

答案:1). x<10 或 10>x 2). ||

3). 10000*y 或 y*10000 4). 10000*y+1110*x+z 或 10000 * y + 1110 * x + z

第20题 (10.0分) 题号:416

/*------------------------------------------------------- 【程序填空】

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

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

------------------------------------------------------*/ #define M 5 /*定义符号常量 人数为5*/ #define N 4 /*定义符号常量 课程为4*/ #include \main() {

int i,j;

void aver(float sco[M+1][N+1]); static float score[M+1][N+1]={{78,85,83,65}, {88,91,89,93}, {72,65,54,75},{86,88,75,60},{69,60,50,72}}; aver(score); clrscr();

printf(\学生编号 课程1 课程2 课程3 课程4 个人平均\\n\ for(i=0;i

printf(\学生%d\\t\

/***********SPACE***********/ for(j=0;j<【?】;j++)

printf(\ printf(\ }

16

for(j=0;j<8*(N+2);j++) printf(\ printf(\课程平均\ for(j=0;j

printf(\ printf(\ getch(); }

void aver(float sco[][N+1]) {

int i,j;

/***********SPACE***********/ for(i=0;i<【?】;i++) {

for(j=0;j

sco[i][N] += sco[i][j];

sco[M][j] += sco[i][j]; sco[M][N] += sco[i][j]; }

/***********SPACE***********/ sco[i][N] 【?】 N; }

for(j=0;j

/***********SPACE***********/ sco[M][【?】] /= M;

sco[M][N]=sco[M][N]/M/N; }

答案:1). N+1 或 1+N 或 5 2). M 或 5 3). /=

第21题 (10.0分) 题号:488

/*------------------------------------------------------- 【程序填空】

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

#define MAXSIZE 100

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

4). j 17

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(\ printf(\ for (i = 0; i < k; i++) printf(\

printf(\ 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(\【?】); }

答案:1). MIN = n 2). num[i] = MIN

第22题 (10.0分) 题号:408

/*------------------------------------------------------- 【程序填空】

--------------------------------------------------------- 功能:输入两个整数,求他们的按位与。 -------------------------------------------------------*/ #include void main() {

int x,y,z=0,a,b,k=1;

scanf(\

3). num[n] 18

while(x>0&&y>0) {

a=x%2;

/***********SPACE***********/ x=【?】; b=y%2; y=y/2;

/***********SPACE***********/ z=z+【?】; k=k*2; }

/***********SPACE***********/ 【?】(\}

答案:1). x/2 2). a*b*k 或 a * b * k 3). printf

第23题 (10.0分) 题号:406

/*------------------------------------------------------- 【程序填空】

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

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

-------------------------------------------------------*/ #include \#include main() {

FILE *fp; char str[100]; int i=0;

/***********SPACE***********/ if((fp=fopen(\【?】))==NULL) {

printf(\ exit(0); }

printf(\ /***********SPACE***********/ gets(【?】); while(str[i]!='!')

/***********SPACE***********/ {

if(str[i]>='a'&&【?】)

19

str[i]=str[i]-32; fputc(str[i],fp); i++; }

/***********SPACE***********/ fclose(【?】);

fp=fopen(\ fgets(str,strlen(str)+1,fp); printf(\ fclose(fp); }

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

第24题 (10.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

20

{

a[0]=0 ; count++ ; } }

printf(\}

答案:1). 1 2). a[i]%2 == 1 3). break

第25题 (10.0分) 题号:429

/*------------------------------------------------------- 【程序填空】

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

功能:从读入的整数数据中,统计大于零的整数个数和小于零的 整数个数。用输入零来结束输入,程序中用变量i统计大于 零的整数个数,用变量j统计小于零的整数个数。 ------------------------------------------------------*/ #include main() {

int k,n,i,j;

printf(\ i=j=0;

scanf(\ while(n!=0) {

/***********SPACE***********/ if(n>0)i=【?】;

/***********SPACE***********/ if(n<0)j=【?】;

/***********SPACE***********/ scanf(\【?】); }

printf(\}

答案: 1). i + 1 2). j + 1 3). &n

第26题 (10.0分) 题号:475

/*------------------------------------------------------- 【程序填空】

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

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

21

-------------------------------------------------------*/ #include

#define LEN sizeof(struct student)

struct student {

long num;

struct student *next; };

struct student *creat() {

struct student *head=NULL,*tail; long num; int a;

/***********SPACE***********/

tail=(【?】)malloc(LEN); printf(\ do {

scanf(\

/***********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(\ is\\n\

22

while(p) {

printf(\ p=p->next; } }

答案:1). struct student *2). num!=0 或 0!=num3). head == NULL

第27题 (10.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 \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(\ /***********SPACE***********/ 【?】; } }

答案:1). &a[i][0] 2). p[i] 3). i+1 或 1+I

第28题 (10.0分) 题号:445

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

4). putchar('\\n'); 23

【程序填空】

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

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

int r=1,s=0,t=0,n,a,i;

printf(\ for(i=1;i<=n;i++) {

printf(\

/***********SPACE***********/ scanf(\【?】);

/***********SPACE***********/ if(【?】!=0)

/***********SPACE***********/ 【?】=a; else if(a!=0)

/***********SPACE***********/ s+=【?】; else t++; }

printf(\}

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

第29题 (10.0分) 题号:25

/*------------------------------------------------------- 【程序填空】

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

-------------------------------------------------------*/ /***********SPACE***********/ 【?】 main() {

float x,f;

scanf(\

/***********SPACE***********/ if(x<0) 【?】;

/***********SPACE***********/

4). a*a 24

else if(【?】) f=2*x+1; else

f=sin(x)+5;

/***********SPACE***********/ printf(\ 【?】); }

答案:

1). #include \或 #include 3). x<=5 或 5>=x 或 x<6 或 6>x 或 x>=0&&x<=5 或x>=0&&5>=x 或 0<=x&&5>=x 或 !(x>5)

第30题 (10.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(\

scanf(\

/***********SPACE***********/

f=y%4==0&&y0!=0【?】y@0==0; /***********SPACE***********/ a[1]【?】f;

if(n<1||n>365+f) {

printf(\ }

/***********SPACE***********/

for(m=1;m【?】a[m-1];n-=a[m-1],m++); printf(\}

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

第31题 (10.0分) 题号:481

/*------------------------------------------------------- 【程序填空】

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

2). f=fabs( x + 1 ) 0<=x&&x<=5 或4). x,f 25

功能:一个自然数被 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==4) {

n=i/17 ;

if(n==15) n=n/17 ; }

if(2*a==n) {

printf(\

/***********SPACE***********/

【?】 ; }

/***********SPACE***********/

【?】; } }

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

第32题 (10.0分) 题号:461

/*------------------------------------------------------- 【程序填空】

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

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

26

以!结束。

-------------------------------------------------------*/ #include \

main() {

FILE *fp;

char str[100],filename[10]; int i=0;

if((fp=fopen(\ {

printf(\ exit(0); }

printf(\ gets(str);

/***********SPACE***********/

while(【?】) {

if(str[i]>='a'&&str[i]<='z')

/***********SPACE***********/

【?】; fputc(str[i],fp); i++; }

fclose(fp);

/***********SPACE***********/

fp=fopen(\【?】); fgets(str,strlen(str)+1,fp); printf(\ fclose(fp); }

答案:1). str[i] != '!' 2). str[i]=str[i]-32 或 str[i]= str[i] -32

第33题 (10.0分) 题号:21

/*------------------------------------------------------- 【程序填空】

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

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

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

char str1[80],str2[80];

3). \或 \或 \27

int i,n;

/***********SPACE***********/ gets(【?】); scanf(\

/***********SPACE***********/ for (i=0; 【?】 ;i++)

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

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

printf(\ }

答案:

1). str1 2). ii 或 i<=n-1 或 n-1>=i 3). str2[i]=str1[i] 或 *(str2+i)=*(str1+i) 或 *(str2+i)=str1[i] 或 str2[i]=*(str1+i)

4). str2[n]='\\0' 或 str2[i]='\\0' 或 str2[n]=0 或 str2[i]=0 或 *(str2+n)='\\0' 或 *(str2+i)='\\0' 或 *(str+n)=0 或 *(str2+i)=0

第34题 (10.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++)

28

/***********SPACE***********/ for (j=1;j<【?】;j++)

/***********SPACE***********/ a[i][j]= 【?】; for (i=0;i<7;i++) {

/***********SPACE***********/ for (j=0; 【?】;j++) printf(\ printf(\ } }

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

4). j<=i 或 i>=j 或 jj 或 j-1j-1

第35题 (10.0分) 题号:424

/*------------------------------------------------------- 【程序填空】

--------------------------------------------------------- 功能:输出结果为: * * * * * * * * * * * * * * * * * * * *

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

/***********SPACE***********/ static char 【?】={'*','*','*','*','*'}; int i,j,k;

char space=' '; for(i=0;i<5;i++) {

printf(\

/***********SPACE***********/ for(j=1;j<=3*i;j++) printf(\【?】);

/***********SPACE***********/ for(k=0;k<【?】;k++) printf(\ }

printf(\

29

}

答案:1). a[5] 或 a[] 2). space 或 ' ' 3). 5 或 =4

第36题 (10.0分) 题号:485

/*------------------------------------------------------- 【程序填空】

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

功能: 统计子字符串substr在字符串str中出现的次数。

例如:若字符串为\,子字符串为\,则应输出2。 若字符串为\,子字符串为\,则应输出3 ------------------------------------------------------*/ #include

fun (char *substr,char *str) {

int i,j,k,num=0; for(i=0; str[i]; i++)

for(j=i,k=0;substr[k]==str[j];k++,j++) /***********SPACE***********/

if(substr[【?】]=='\\0') {

num++;

/***********SPACE***********/ 【?】; }

return num; }

main() {

char str[80],substr[80]; printf(\ gets(str);

printf(\ gets(substr);

/***********SPACE***********/ printf(\【?】); }

答案:1). k + 1 2). Break 3). fun(substr,str)

第37题 (10.0分) 题号:411

/*------------------------------------------------------- 【程序填空】

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

30

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

-------------------------------------------------------*/ #define nmax 50 main() {

int i,k,m,n,num[nmax],*p;

printf(\ scanf(\ p=num;

/***********SPACE***********/ for(i=0;【?】;i++)

/***********SPACE***********/ *(p+i)=【?】; i=0; k=0; m=0;

while(m

/***********SPACE***********/ if(【?】!=0) k++; if(k==3) {

*(p+i)=0; k=0; m++; } i++;

if(i==n) i=0; }

/***********SPACE***********/ while(【?】) p++;

printf(\}

答案:1). iI 2). i+1 或 i + 1 3). *(p+i) 或 *( p + i ) 4). *p==0 或 *p == 0

第38题 (10.0分) 题号:35

/*------------------------------------------------------- 【程序填空】

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

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

31

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

int sum = 0, n=0, j, yes;

/***********SPACE***********/ while ((high >= 2) && (【?】)) {

yes = 1;

for (j=2; j<=high/2; j++ )

/***********SPACE***********/ if (【?】) {

yes=0; break; }

if (yes) {

sum +=high; n++; } high--; }

/***********SPACE***********/ 【?】; }

main ( ) {

clrscr( );

printf(\}

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

第39题 (10.0分) 题号:28

/*------------------------------------------------------- 【程序填空】

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

-------------------------------------------------------*/ #include \#include \

3). return sum 或 return (sum) 32

main () {

int a,i; char s[20];

printf(\ scanf(\ c10_16(s,a);

/***********SPACE***********/ for(【?】;i>=0;i--) printf(\ printf(\}

c10_16(char p[],int b) {

int j,i=0;

/***********SPACE***********/ while (【?】) {

j=b;

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

4). p[i]='\\0' 或 p[i]=0 或 p[i]=NULL 或 *(p+i)='\\0' 或 *(p+i)=0 或 *(p+i)=NULL

第40题 (10.0分) 题号:414

/*------------------------------------------------------- 【程序填空】

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

-------------------------------------------------------*/ long power(int n) {

long f; if(n>1)

33

/***********SPACE***********/ f=【?】; else f=1; return(f); }

main() {

int n; long y;

printf(\ /***********SPACE***********/ scanf(\【?】); y=power(n);

/***********SPACE***********/ printf(\【?】); getch(); }

答案:1). power(n-1)*n 或 power( n - 1 ) * n 或 n*power(n-1) 2). &n

第41题 (10.0分) 题号:454

/*------------------------------------------------------- 【程序填空】

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

功能:三角形的面积为:area=sqrt(s*(s-a)*(s-b)*(s-c)).其中

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

/***********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(\

/***********SPACE***********/ scanf(\【?】,&c); if(a+b>c&&b+c>a&&c+a>b) {

/***********SPACE***********/

3). power(n) 或 y 34

s=【?】;

/***********SPACE***********/ area=【?】;

printf(\ } }

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

第42题 (10.0分) 题号:6

/*------------------------------------------------------- 【程序填空】

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

功能:以下程序是用选择法对10个整数按升序排序。 -------------------------------------------------------*/ /***********SPACE***********/ 【?】

main() {

int i,j,k,t,a[N];

for(i=0;i<=N-1;i++) scanf(\ for(i=0;i

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

/***********SPACE***********/ for(j=i+1; 【?】;j++) if(a[j]

/***********SPACE***********/ if(【?】) {

t=a[i]; a[i]=a[k]; a[k]=t; } }

printf(\ for(i=0;i<=N-1;i++) printf(\ printf(\}

答案:1). #define N 10 3). jj 或 j<=N-1 或 N-1>=j

2). k=i 4). k != i

35

第43题 (10.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(\: \ /***********SPACE***********/ scanf(\【?】,&w,&h); /***********SPACE***********/ v=【?】;

printf(\ s1=%d s2=%d s3=%d\\n\ getch(); }

答案:1). a*b*c 或 a * b * c 2). b*c 或 b * c

3). &l 4). vs(l,w,h) 或 vs( l , w , h )

第44题 (10.0分) 题号:30

/*------------------------------------------------------- 【程序填空】

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

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

-------------------------------------------------------*/ #include \

void fun(char a[],char c) {

36

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(\ 4). fun(a,cc)

第45题 (10.0分) 题号:407

/*------------------------------------------------------- 【程序填空】

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

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

-------------------------------------------------------*/ #include \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++)

37

{

printf(\ printf(\

scanf(\ printf(\

scanf(\ sum=0;

/***********SPACE***********/ for(j=0;【?】;j++) {

printf(\

scanf(\

/***********SPACE***********/ sum+=stu[i].【?】; }

stu[i].avr=sum/3.0; }

fp=fopen(\

/***********SPACE***********/ for(i=0;i<5;【?】)

/***********SPACE***********/

if(fwrite(&stu[i],sizeof(【?】),1,fp)!=1) printf(\ fclose(fp); }

答案:1). j<3 或 3>j 2). score[j] 3). i++ 或 ++i 或 i=i+1

第46题 (10.0分) 题号:471

/*------------------------------------------------------- 【程序填空】

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

功能:给出一个正整数,找到一组连续的数,使之累加和等于给 定的正整数。输出存在多少组这样连续的数,及每组的左 右边界。

例如:15=1+2+3+4+5 15=4+5+6 15=7+8

所以结果有3组值分别是1->5, 4->6, 7->8 -------------------------------------------------------*/ #include #include

void main(void) {

4). struct student 38

long left, right; long sum; long GIVEN; int count = 0; char line[100];

printf(\

printf(\ printf(\ 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(\ GIVEN, left, right);

/***********SPACE***********/

【?】; }

/***********SPACE***********/

【?】; sum += right; }

if (count > 0)

printf(\ else

printf(\}

答案:1). left++ 或 left=left+1 或 ++left

2). count++ 或 count=count++ 或 ++count 或 count=count+1 3). right++ 或 right=right++ 或 ++right 或 right=right+1

第47题 (10.0分) 题号:451

/*------------------------------------------------------- 【程序填空】

39

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

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

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

int y1,m1,d1,y2,m2,d2,n,i; printf(\

scanf(\ /***********SPACE***********/

if(m1<1||m1>12||d1<1||d1>【?】) exit(0);

printf(\ /***********SPACE***********/

if(m2<1||m2>12||d2<1||d2>【?】) exit(0);

if(y1>y2||y1==y2&&m1>m2||y1==y2&&m1==m2&&d1>d2) {

n=y1; y1=y2; y2=n; n=m1; m1=m2; m2=n; n=d1; d1=d2; d2=n; } else {

/***********SPACE***********/ n=yend(y1,m1,d1)+【?】;

/***********SPACE***********/ for(i=【?】;i

printf(\}

int f(int y) {

return(y%4==0&&y0!=0||y@0==0); }

int mday(int y,int m) {

return(31-((m==4)+(m==6)+(m==9)+(m==11))-(3-f(y))*(m==2));

40

}

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)

第48题 (10.0分) 题号:398

/*------------------------------------------------------- 【程序填空】

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

-------------------------------------------------------*/ #include main() {

int i,j,k;

/***********SPACE***********/ for(i=0;【?】;i++) {

for(j=0;j<=4-i;j++) printf(\

/***********SPACE***********/ for(k=1;k<=【?】;k++) printf(\ printf(\ }

/***********SPACE***********/ for(【?】;j<3;j++)

3). yday(y2,m2,d2) 4). y1+1 或 1+y1 41

{

for(k=0;k

for(k=0;k<5-2*j;k++) printf(\ printf(\ } }

答案: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

第49题 (10.0分) 题号:402

/*------------------------------------------------------- 【程序填空】

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

功能:输入三个整数x,y,z,请把这三个数由小到大输出。 -------------------------------------------------------*/ main() {

int x,y,z,t;

scanf(\

/***********SPACE***********/ if (x>y){【?】}

/***********SPACE***********/ if(x>z){【?】}

/***********SPACE***********/ if(y>z){【?】}

printf(\}

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

第50题 (10.0分) 题号:489

/*------------------------------------------------------- 【程序填空】

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

功能:h_sequence 是一组由0和1组成的数列,它定义如下: = 0

= 1

利用函数检测输入的字符串是否是h_sequence数列 -------------------------------------------------------*/ #include #define YES 1 #define NO 0

42

int h_sequence(char x[]) {

/***********SPACE***********/

int length = 【?】; int count; int i;

for (count = 1, i = 0; count != 0 && i < length; i++) switch (x[i]) {

case '0':count--; break; case '1':count++; break; default:return NO; }

/***********SPACE***********/

return 【?】&& i >= length; }

#include

void main(void) {

char line[100];

printf(\ gets(line);

/***********SPACE***********/

if (【?】 == YES) printf(\ else

printf(\}

答案:1). strlen(x) 2). count == 0

第51题 (10.0分) 题号:403

/*------------------------------------------------------- 【程序填空】

--------------------------------------------------------- 功能:输出9*9口诀。

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

int i,j,result;

3). h_sequence(line) 43

printf(\

/***********SPACE***********/ for (i=1;【?】;i++) {

/***********SPACE***********/ for(j=1;j<10;【?】) {

result=i*j;

/***********SPACE***********/ printf(\【?】); }

printf(\ } }

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

第52题 (10.0分) 题号:421

/*------------------------------------------------------- 【程序填空】

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

-------------------------------------------------------*/ # include

struct student {

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

void output(struct student stu[2]);

void main() {

int i, j;

/***********SPACE***********/ for(i=0; i<2; 【?】) {

printf(\请输入学生%d的成绩:\\n\ printf(\学号:\

/***********SPACE***********/ scanf(\【?】.number); printf(\姓名:\

3). result 44

scanf(\ for(j=0; j<3; j++) {

printf(\成绩 %d. \

/***********SPACE***********/ scanf(\【?】.score[j]); }

printf(\ }

output(stu); }

void output(struct student stu[2]) {

int i, j;

printf(\学号 姓名 成绩1 成绩2 成绩3\\n\ for(i=0; i<2; i++) {

/***********SPACE***********/

【?】(\ for(j=0; j<3; j++)

printf(\ printf(\ } }

答案:1). i++ 或 ++i 或 i=i+1 2). &stu[i]

第53题 (10.0分) 题号:438

/*------------------------------------------------------- 【程序填空】

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

-------------------------------------------------------*/ #include \void main() {

int a[3][4]={{1,3,5,7},{2,4,6,8},{15,17,34,12}}; /***********SPACE***********/ printf(\【?】); }

max_value(m,n,array)

/***********SPACE***********/ int m,n,【?】;

3). &stu[i] 4). printf 45

{

int i,j,max;

max=array[0][0]; for(i=0;i

/***********SPACE***********/ if(max

答案:1). max_value(3,4,a) 2). array[][4] 或 array[3][4] 3). max=array[i][j]

第54题 (10.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(\ for(i=0;i<5;i++)

/***********SPACE***********/ scanf(\【?】);

/***********SPACE***********/ av=aver(【?】);

printf(\ getch(); }

答案:1). A 2). av 或 (av) 3). &sco[i] 或 sco+I 4). sco

46

第55题 (10.0分) 题号:5

/*------------------------------------------------------- 【程序填空】

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

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

-------------------------------------------------------*/ #include

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

char *p1,*p2;

/***********SPACE***********/ 【?】; p2=str2; while(*p1)

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

/***********SPACE***********/ 【?】; }

main() {

int i,m;

char str1[80],str2[80]; gets(str1);

scanf(\

/***********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)

第56题 (10.0分) 题号:24

/*------------------------------------------------------- 【程序填空】

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

功能:对任一整数N(N≠0),它都可以分解成1(或-1)和一些质数(素 数)因子的形式。

例如:当N=150时,可分解成1×2×3×5×5; 当N=-150时,可分解为-1×2×3×5×5。

47

下边程序能实现这种分解过程。当N=150,输出以下分解结 果:N= 1* 2* 3* 5* 5 -------------------------------------------------------*/ main() {

int n,i,j,r;

scanf(\ if (n==0) {

printf (\ exit(0); }

/***********SPACE***********/ else if (【?】) printf(\ else {

printf(\ n=-n; }

/***********SPACE***********/ for(【?】;i<=n;i++) {

/***********SPACE***********/ 【?】 ; while(r==0) {

printf(\

/***********SPACE***********/ 【?】 ; r=n%i; } }

printf(\}

答案:1). n>0 或 0

第57题 (10.0分) 题号:29

/*------------------------------------------------------- 【程序填空】

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

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

4). n=n/i 或 n/=i 48

fun(int a[],int n,int key) {

int low,high,mid; low=0; high=n-1;

/***********SPACE***********/ while(【?】) {

mid=(low+high)/2; if(key

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

else if(key>a[mid])

/***********SPACE***********/ 【?】; else

/***********SPACE***********/ 【?】; }

return -1; }

main() {

int a[10]={1,2,3,4,5,6,7,8,9,10}; int b,c; b=4;

c=fun(a,10,b); if(c==1)

printf(\ else

printf(\}

答案:1). low<=high 或 high>=low 3). low= mid + 1

第58题 (10.0分) 题号:23

/*------------------------------------------------------- 【程序填空】

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

功能:求一个二维数组中每行的最大值和每行的和。-------------------------------------------------------*/ #include \main() {

2). high=mid-1

4). return mid 或 return (mid) 49

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

b[i]=k;

/***********SPACE***********/ 【?】 ; }

for(i=0;i<5;i++) {

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

/***********SPACE***********/ printf(\【?】 ); printf(\ printf(\ } }

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

第59题 (10.0分) 题号:395

/*------------------------------------------------------- 【程序填空】

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

功能:输入3个数a,b,c,按从小到大的顺序输出。 -------------------------------------------------------*/ main() {

void swap(int *p1, int *p2); int n1,n2,n3;

int *pointer1,*pointer2,*pointer3;

printf(\ scanf(\ pointer1=&n1; pointer2=&n2;

4). a[i][j] 50