C语言选择题 子函数里的if(dma flag feif?*(b+i)>*(b+j):*(b+i)<*(b+j))

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, 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]; } stu[5]; main() { int i,j, FILE * /*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= s=0 ; k=0 ; for(j=1 ; j& j++) /***********SPACE***********/ if(【?】) { s=s+ /***********SPACE***********/ 【?】= } 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() { clrscr(); printf(&input a number:&); /***********SPACE***********/ 【?】; draw(n); } 答案: 1). i&=n 或 n&=i 2). k&= 2 * n - 2 * i 或 3). printf(&\n&) 4). scanf(&%d&,&n)2 * n - 2 * i &=k第 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***********/ 【?】; } } #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 & i++) printf(&%5d&, x[i]); printf(&\n\nGiven Array #2 :&); for (i = 0; i & 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], 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 #include &stdio.h& &stdlib.h&#define MAXSIZE 20 #define ROTATE(p) { int i, temp = perm[p]; for (i = p-1; i &= 0; i--) \ perm[i+1] = perm[i]; perm[0] = } void main(void) { int perm[MAXSIZE];\ \ \ \
char line[100]; printf(&\nPermutation by Rotation Method&); printf(&\n==============================&); printf(&\n\nNumber of Elements --& &); gets(line); n = atoi(line); for (i = 0; i & i++) perm[i] = i + 1; position = n - 1; /***********SPACE***********/ while (【?】) { printf(&\n&); for (i = 0; i & 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; { 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() { int bonus1,bonus2,bonus4,bonus6,bonus10, scanf(&%ld&,&i); bonus1=.1;bonus2=bonus1+.75; bonus4=bonus2+.5; bonus6=bonus4+.3; bonus10=bonus6+.15; if(i&=100000) bonus=i*0.1; /***********SPACE***********/ else if(【?】) bonus=bonus1+(i-.075; /***********SPACE***********/ else if(【?】) bonus=bonus2+(i-.05; /***********SPACE***********/ else if(【?】) bonus=bonus4+(i-.03; else if(i&=1000000) bonus=bonus6+(i-.015; else bonus=bonus10+(i-.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) { long sl=1; /***********SPACE***********/ 【?】 = 0; while ( s & 0) { /***********SPACE***********/ d = 【?】; if(d%2) { /***********SPACE***********/ *t = 【?】 + *t; /***********SPACE***********/ sl 【?】 10; } s /= 10; } } main() { long s, 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() { /***********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_ /***********SPACE***********/ 【?】=*(pnt_row+1); for(; i&3; i++) if(*(*pnt_row+i)&60) { pnt_col=*pnt_
/*退出循环*/ } /***********SPACE***********/ return(【?】); } main() { static int grade[3][3]={{55,65,75},{65,75,85},{75,80,90}}; int i,j,* 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, max=-32768; min=32767; sum=0; for(i=1;i&=10;i++) { printf(&Input number %d=&,i); /***********SPACE***********/ scanf(&%d&,【?】); sum+= /***********SPACE***********/ if(【?】) max= /***********SPACE***********/ if(【?】) min= } 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, 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 1 1 11 2 3 4 5 61 3 6 10 151 4 10 201 5 151 61-------------------------------------------------------*/ 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)=NULL*(p+i)=0 或第 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 * 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, 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[ ]) */ { float av,s=a[0]; /*定义求平均值函数,形参为一浮点型数组名 for(i=1;i&5;i++) /***********SPACE***********/ s+=【?】[i]; av=s/5; /***********SPACE***********/ return 【?】; } void main() { float sco[5], 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 #include #define #define &stdio.h& &stdlib.h& MAXSIZE 100 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 i, j, MIN; char line[100]; printf(&\n============================&); printf(&\n\nBase Values : &); for (i = 0; i & 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 &= i++) { /***********SPACE***********/ 【?】; for (j = 0; j & 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]; { /***********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_ arr_end=array+10; max=min= for(p=array+1;p&arr_p++) if(*p&*max) max=p; else if(*p&*min) /***********SPACE***********/ 【?】; k=* l=* *p=array[0]; array[0]=l; /***********SPACE***********/ 【?】; *p=array[9]; /***********SPACE***********/ 【?】; k=*p;
} output(array) int array[10]; { int *p; for(p=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) { if(n&1) /***********SPACE***********/ f=【?】; else f=1; return(f); } main() { 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() { /***********SPACE***********/ float n,【?】; 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]; { /***********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_ /***********SPACE***********/ arr_end=【?】; max=min= for(p=array+1;p&arr_p++) if(*p&*max) max=p; /***********SPACE***********/ else if(【?】) min=p; k=* l=* *p=array[0];array[0]=l;l=*p; *p=array[9];array[9]=k;k=*p; } output(array) int array[10]; { int *p; for(p=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 { struct node * } *top,*p; top=NULL; /***********SPACE***********/ while((c= 【?】) != '\n' ) { p=(struct node *)malloc(sizeof(struct node)); p-&info=c; p-&link= /***********SPACE***********/ 【?】; } while( top ) { p= /***********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 { struct student * }; struct student *creat() { struct student *head=NULL,* /***********SPACE***********/ tail=(【?】)malloc(LEN); printf(&please input date\n&); do { scanf(&%ld&,&num); /***********SPACE***********/ if(【?】) { /***********SPACE***********/ if(【?】) head= else tail=tail-& tail-&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-& } } 答案: 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--]; } } #include &stdio.h&void main(void) { int x[] = { 3, 6, 2, 1, 4, 5, 2}; int n = sizeof(x)/sizeof(int); printf(&\nHead Sum == Tail Sum Counting Program&); printf(&\n=====================================\n&); printf(&\nGiven Array :&); for (i = 0; i & 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() {
/***********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, /***********SPACE***********/ sl = 【?】; for(i=0; i& i++) t[i] = s[i]; for (i=0; i& 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= 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, /***********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 { } /* 定义一个结构并声明对象为 data */ void main() { printf(&请输入日期(年,月,日):&); scanf(&%d, %d, %d&, &data.year, &data.month, &data.day); switch(data.month) { case 1:days = data. /***********SPACE***********/ case 2:days = data.day+【?】; case 3:days = data.day+59; case 4:days = data.day+90; /***********SPACE***********/ case 5:days = data.day+【?】; case 6:days = data.day+151; case 7:days = data.day+181; case 8:days = data.day+212; case 9:days = data.day+243; case 10:days = data.day+273; case 11:days = data.day+304; case 12:days = data.day+334; } /***********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; /***********SPACE***********/ while (【?】) { mid = (left + right)/2; if (x[mid] & x[right]) /***********SPACE***********/ 【?】; else /***********SPACE***********/ 【?】; } }#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); intloc,printf(&\nFind Cyclic Minimum&); printf(&\n===================&); printf(&\n\nGiven Array Sorted in Cyclic Fashion :\n&); for (i = 0; i & 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) { /***********SPACE***********/ if((【?】)!=0) convert(i); /***********SPACE***********/ putchar(n%10+【?】); } main() { 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, 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) /***********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}; /***********SPACE***********/ 【?】; gets(s1); /***********SPACE***********/ 【?】; puts(s1); for(k=0;k&4;k++) printf(&%4d&,a[k]); } void fun(char s[],int b[]) { 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; } 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() { /***********SPACE***********/ 【?】; float t, 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; for (i = 0; i & 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_ } /***********SPACE***********/ 【?】; }#include &stdio.h& void main(void) { int x[] = { 2, -3, 1, -1, 3, -2, -3, 3}; int n = sizeof(x)/sizeof(int); printf(&\nMaximum Consecutive Elements Sum Program&); printf(&\n========================================&); printf(&\n\nGiven Array :&); for (i = 0; i & 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 * 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, 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/ /***********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 #include #include &stdio.h& &stdlib.h& &math.h& /* for I/O functions /* for atoi() /* for sqrt() */ */ */void main(void) { /* the given number */ int row, /* row and column indicators*/ /* 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=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%7&&i%17) 4). n%5 == 0 或 !(n%5) 或 n/5*5==n!(i%17)||!(i%7)第 64 题(9.0 分)题号:34 /*------------------------------------------------------【程序填空】 --------------------------------------------------------功能:以下程序的功能如(图 1)。 -------------------------------------------------------*/ #include &conio.h& #include &stdio.h& /***********SPACE***********/ float fun(【?】, int n) { /***********SPACE***********/ 【?】; float xa=0, 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 #define int FOUND NOT_FOUND 1 0search(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= /***********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) 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, printf(&\nplease input year,month,day\n&); scanf(&%d,%d,%d&,&year,&month,&day); switch(month) { case 1:sum=0; case 2:sum=31; case 3:sum=59; /***********SPACE***********/ case 4:【?】; case 5:sum=120; case 6:sum=151; case 7:sum=181; case 8:sum=212; case 9:sum=243; case 10:sum=273; case 11:sum=304; case 12:sum=334; default:printf(&data error&); } /***********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 357 492 -------------------------------------------------------*/ #include #include #define &stdio.h& &stdlib.h& MAXSIZE 20void main(void) { int matrix[MAXSIZE][MAXSIZE]; 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] = /***********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 & row++) { for (column = 0; column & 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, /***********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, 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 #include #define #define &stdio.h& &stdlib.h& MAXSIZE LOOP 20 1void main(void) { int set[MAXSIZE]; int n, 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 &= 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-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, /***********SPACE*

我要回帖

更多关于 if exitflag 的文章

 

随机推荐