1、C语言程序设计练习题-程序填空第2题(练习题所在文件夹:30)/*-【程序填空】-题目:以下程序的功能是用冒泡法对数组a 进行由小到大的 排序。-*/void fun(int a,int n) int i,j,t;/*SPACE*/ for (j=0; 【?】;j+)/*SPACE*/ for (i=0; 【?】;i+)/*SPACE*/ if(【?】) t=ai;ai=ai+1;ai+1=t;main() int i,a10=3,7,5,1,2,8,6,4,10,9;/*SPACE*/ 【?】; for(i=0;i10;i+) printf(%3d,ai);答案: 1). j=j 或 j=j
2、 或 jj 或 jn-1 或 j=j 2). ii 或 ii 或 i=n-j-2 或 iai+1 或 ai+1ai 4). fun(a,10)第4题(练习题所在文件夹:628)/*-【程序填空】-函数fun的功能是: 求有5个元素的一维数组各元素的和。-*/float fun(float a )int i;float s=a0;for(i=1;i5;i+)/*SPACE*/s+=【?】i;/*SPACE*/return 【?】;void main()float sco5,sum;int i;printf(ninput 5 scores:n);for(i=0;i5;i+)/*SPACE*/sca
3、nf(%f,【?】);/*SPACE*/sum=fun(【?】);printf(sum score is %5.2fn,sum);答案: 1). a 2). s 3). &scoi 或 sco+i 4). sco 或 &sco0第5题(练习题所在文件夹:5)/*-【程序填空】-题目:以下程序是用选择法对10个整数按升序排列,程序中有4个空, 填空使程序完整。-*/*SPACE*/【?】main() int i,j,k,t,aN; for(i=0;i=N-1;i+) scanf(%d,&ai); for(i=0;iN-1;i+) /*SPACE*/ 【?】/*SPACE*/ for(j=i+1;
4、 【?】;j+) if(ajak) k=j;/*SPACE*/ if(【?】)t=ai;ai=ak;ak=t; printf(output the sorted array:n); for(i=0;i=N-1;i+) printf(%5d,ai); printf(n);答案: 1). #define N 10 2). k=i; 3). jj 或 j=j 或 jj 或 j=j 4). k!=i 或 j=j第6题(练习题所在文件夹:17)/*-【程序填空】-题目:以下程序的功能是将一个数组中的元素按逆序存放。-*/#define N 7main () static int aN=12,9,16,5
5、,7,2,1,k,s; printf(n the origanal array:n); for (k=0;kN;k+) printf(%4d,ak);/*SPACE*/ for (k=0;kN/2; 【?】 ) s=ak;/*SPACE*/ 【?】 ;/*SPACE*/ 【?】 ; printf(n the changed array:n); for (k=0;kN;k+)/*SPACE*/ 【?】 (%4d,ak);答案: 1). k+ 或 k=k+1 或 k+=1 或 +k 2). ak=aN-k-1 或 ak=aN-1-k 或 ak=a6-k 或 a*(a+k)=*(a+N-k-1 或
6、*(a+k)=*(a+N-1-k 或 ak=a-1+N-k 或 ak=a-1-k+N 或 ak=a-k-1+N 或 ak=a-k+N-1 或 *(a+k)=*(a+N-k-1) 或 a6-k=s 3). aN-k-1=s 或 aN-1-k=s 或 a6-k=s 或 aN-k-1=s 或 *(a+N-k-1)=s 4). printf第7题(练习题所在文件夹:604)/*-【程序填空】-题目:从键盘上输入20个元素的值存入一维数组m中,然后将下标 为(0、2、4、6、8、1018)的元素值赋值给数组n,最 后输出数组n的内容。请填空-*/main() int m20,n10; int a,b=0
7、; for(a=0;a20;a+) /*SPACE*/ scanf(%d,【?】);/*SPACE*/ if(【?】) nb=ma;/*SPACE*/ 【?】 /*SPACE*/ for(a=0;【?】;a+) printf(%dt,na);答案: 1). &ma 2). a%2=0 或 a%2 或 a%2!=1 3). b+; 或 b+=1; 或 b=b+1; 或 b=1+b; 4). a10 或 a=9 或 ab第8题(练习题所在文件夹:3)/*-【程序填空】-题目:下面的程序是求1!+3!+5!+n!的和,程序中有4个 空,填空使程序完整。-*/main() long int f,s;
8、int i,j,n;/*SPACE*/【?】 scanf(%d,&n);/*SPACE*/ for(i=1;i=n; 【?】) f=1;/*SPACE*/ for(j=1; 【?】;j+)/*SPACE*/ 【?】 s=s+f; printf(n=%d,s=%ldn,n,s);答案: 1). s=0; 2). i+=2 或 i=i+2 或 i+,i+ 或 i=2+i 3). j=j 或 jj 4). f=f*j; 或 f*=j;第10题(练习题所在文件夹:28)/*-【程序填空】-题目:下面函数为二分法查找key值。数组中元素已递增排序, 若找到key则返回对应的下标,否则返回-1。-*/fu
9、n(int a,int n,int key) int low,high,mid; low=0; high=n-1;/*SPACE*/ while(【?】) mid=(low+high)/2;/*SPACE*/ if(keyamid) 【?】;/*SPACE*/ else 【?】; return -1;main() int a10=1,2,3,4,5,6,7,8,9,10; int b,c; b=4; c=fun(a,10,b); if(c=-1)printf(not found); else printf(position %dn,c);答案: 1). low=low 2). high=mid
10、-1 3). low=mid+1 4). return mid 或 return (mid)第14题(练习题所在文件夹:611)/*-【程序填空】-题目:以每行5个数输出500以内能被7或17整除的偶数,并求出其和。 程序中有4个空,填空使程序完整。-*/#include #include main() int i,n,sum; clrscr(); n=0;/*SPACE*/【?】/*SPACE*/ for(i=1; 【?】 ;i+)/*SPACE*/ if(【?】) if(i%2=0) sum=sum+i; n+; printf(%6d,i);/*SPACE*/ if(【?】)printf(
11、n); printf(ntotal=%d,sum);答案: 1). sum=0; 2). i=i 或 ii 或 !(i500) 3). i%7=0|i%17=0 或 i%17=0|i%7=0 或 (i%7=0)|(i%17=0) 或 (i%17=0)|(i%7=0) 或 i/7*7=i|i/17*17=i 或 (i/7*7=i)|(i/17*17=i) 4). n%5=0 或 n/5*5=n第15题(练习题所在文件夹:11)/*-【程序填空】-题目:以下程序的功能是产生并输出如下形式的方阵。1 2 2 2 2 2 13 1 2 2 2 1 43 3 1 2 1 4 43 3 3 1 4 4 4
12、3 3 1 5 1 4 43 1 5 5 5 1 41 5 5 5 5 5 1-*/main() int a77; int i,j; for (i=0;i7;i+) for (j=0;j7;j+) /*SPACE*/ if (【?】) aij=1;/*SPACE*/ else if (ij&i+jj&i+j6) aij=3;/*SPACE*/ else if (【?】) aij=4; else aij=5; for (i=0;i7;i+) for (j=0;j7;j+) printf(%4d,aij);/*SPACE*/ 【?】; 答案: 1). i=j|i+j=6 2). aij=2 3).
13、 i6 或 ji&i+j6 或 ij&i+6i&i+6j 4). printf(n)第17题(练习题所在文件夹:595)/*-【程序填空】-题目:输出斐波那契(Fibonacci)数列(1,1,2,3,5,8,13)的前20项。-*/main() /*SPACE*/ int f1,f2,f3,【?】; f1=1;/*SPACE*/ 【?】; printf(%8d%8d,f1,f2); for(j=3;j=20;j+) /*SPACE*/ 【?】; printf(%8d,f3); f1=f2;/*SPACE*/ 【?】; 答案: 1). j 2). f2=1 3). f3=f1+f2 或 f3=
14、f2+f1 4). f2=f3第18题(练习题所在文件夹:22)/*-【程序填空】-题目:以下程序的功能是求一个二维数组中每行的最大值和每行 的和。-*/#include stdlib.hmain() int a55,b5,c5,i,j,k,s=0; for(i=0;i5;i+) for(j=0;j5;j+) aij=random(40)+20; for(i=0;i5;i+) /*SPACE*/ k=ai0; 【?】 ; for(j=0;j5;j+) /*SPACE*/ if(kaij) 【?】 ; s=s+aij; bi=k;/*SPACE*/ 【?】 ; for(i=0;i5;i+) fo
15、r(j=0;j5;j+)/*SPACE*/ printf(%5d, 【?】 ); printf(%5d%5d,bi,ci); printf(n); 答案: 1). s=0 2). k=aij 3). ci=s 4). aij第20题(练习题所在文件夹:601)/*-【程序填空】-题目:求 1-3+5-7+-99+101 的值。请填空-*/main()/*SPACE*/ int i,j=1,【?】;/*SPACE*/ for(i=1;i=101;【?】) /*SPACE*/ sum+=【?】; j*=(-1); printf(sum=%d,sum);答案: 1). sum=0 2). i+=2
16、或 i=i+2 或 i=2+i 3). i*j 或 j*i第21题(练习题所在文件夹:21)/*-【程序填空】-题目:以下程序的功能是打印以下图形。* * * * *-*/main ( ) char a59= ; int i,j; for (i=0;i5;i+)/*SPACE*/ for(j=i; 【?】;j+) aij=*;/*SPACE*/ for(【?】;i5;i+) for(j=0;j9;j+)/*SPACE*/ printf(%c, 【?】 );/*SPACE*/ 【?】; 答案: 1). jj 或 j=j 2). i=0 3). aij 4). printf(n)第23题(练习题所
17、在文件夹:596)/*-【程序填空】- 以下程序不借助任何中间变量把a、b的值进行交换,请填空。-*/#include main() int a,b; printf(Input a,b); scanf(%d,%d,&a,&b);/*SPACE*/ a+=【?】;/*SPACE*/ b=【?】;/*SPACE*/ a-=【?】; printf(a=%d,b=%d,a,b); 答案: 1). b 2). a-b 3). b第24题(练习题所在文件夹:592)/*-【程序填空】-题目:产生15个20,80上的随机整数,用顺序法(比较法)按从 小到大排序后输出。-*/ #include stdlib.
18、h #define N 15 main() int i,j,k,aN; for(i=0;iN;i+) ai=random(61)+20; for(i=0;iN-1;i+)/*SPACE*/ for(【?】;jN;j+)/*SPACE*/ if(【?】) k=ai;/*SPACE*/ 【?】; aj=k; for(i=0;iaj 或 aj=aj 或 aj=ai 3). ai=aj 4). ai第26题(练习题所在文件夹:438)/*-【程序填空】-题目:求出二维数组中的最大元素值。-*/#include stdio.hvoid main()int a34=1,3,5,7,2,4,6,8,15,1
19、7,34,12;/*SPACE*/ printf(max value is %dn,【?】); max_value(m,n,array)/*SPACE*/int m,n,【?】;int i,j,max;max=array00;for(i=0;im;i+) for(j=0;jn;j+)/*SPACE*/ if(maxN,则求M%N, 若余数r为0,则N即为是所求,若余数r不为0, 用N除 r,再求其余数直到余数为0, 则除数就是最大公约数。)-*/main( ) int x,y,t,r; scanf(%d,%d,&x,&y);/*SPACE*/ if(【?】)/*SPACE*/ t=x; 【?】
20、; y=t; while(x%y) /*SPACE*/ r=【?】; x=y;/*SPACE*/ y=【?】; printf(%dn,y);答案: 1). xx 2). x=y 3). x%y 4). r第28题(练习题所在文件夹:630)/*-【程序填空】-题目:下面程序用09之间不同的3个数构成一个3位数,统计出共有多少种方法。请填空,完善程序。-*/#include main()/*SPACE*/ int i,j,k,【?】; for(i=1;i=9;i+) for(j=0;j=9;j+)/*SPACE*/ if(【?】 ) continue; else for(k=0;k=9;k+)/
21、*SPACE*/ if(【?】)count+; printf(count=%d,count);答案: 1). count=0 2). i=j 或 j=i 3). k!=i&k!=j 或 (i!=k)&(j!=k)第29题(练习题所在文件夹:423)/*-【程序填空】-题目:按字母表顺序输出26个大写英文字母。-*/#include void main () char string256; int i;/*SPACE*/ for (i = 0; i 26; 【?】)/*SPACE*/ stringi = 【?】; stringi = 0;/*SPACE*/ printf (the arrary
22、contains %sn,【?】); 答案: 1). i+ 或 +i 或 i=i+1 或 i+=1 或 i=1+i 2). A + i 或 i+A 或 65 + i 或 i+65 3). string第30题(练习题所在文件夹:599)/*-【程序填空】- 题目:从键盘上输入若干个学生的成绩,统计计算出平均成绩, 并输出低于平均分的学生成绩,用输入负数结束输入。-*/#include main( ) float x1000,sum=0.0,ave,a; int n=0,i; printf(Enter mark:n);scanf(%f,&a); while(a=0.0 & n1000) /*SPACE*/ sum+=【?】; xn