填空题(C) 29
main()
{ char c1, c2;
printf(\ c1='2'; c2 = fun(c1);
printf(\ c1='8'; c2 = fun(c1);
printf(\ c1='a'; c2 = fun(c1);
printf(\} 答案:【1】char 【2】ch<='9' 【3】'0'
82.函数fun的功能是:统计所有小于等于n(n>2)的素数的个数,素数的个数作为函数值返回。 #include
{ int i,j, count=0;
printf(\ for (i=3; i<=n; i++) { /**********found**********/ for (___1___; j
/**********found**********/ if (___3___>=i)
{ count++; printf( count? \ }
return count; }
main()
{ int n=20, r; r = fun(n);
printf(\} 答案:【1】j=2 【2】i 【3】j 83.用筛选法可得到2~n(n<10000)之间的所有素数,方法是:首先从素数2开始,将所有2的倍数的数从数表中删去(把数表中相应位置的值置成O);接着从数表中找下一个非0数,并从数表中删去该数的所有倍数;依此类推,直到所找的下一个数等于n为止。这样会得到一个序列:2,3,5,7,11,13,17,19,23,??,函数fun用筛选法找出所有小于等于n的素数,并统计素数的个数作为函数值返回。 #include
{ int a[10000], i,j, count=0; for (i=2; i<=n; i++) a[i] = i;
i = 2;
while (i /**********found**********/ for (j=a[i]*2; j<=n; j+=___1___) a[j] = 0; i++; /**********found**********/ while (___2___==0) i++; } printf(\ for (i=2; i<=n; i++) /**********found**********/ if (a[i]!=___3___) { count++; printf( count?\ return count; } main() { int n=20, r; r = fun(n); printf(\} 答案:【1】a[i] 【2】a[i] 【3】0 84.甲乙丙丁四人同时开始放鞭炮,甲每隔t1秒放一次,乙每隔t2秒放一次,丙每隔t3秒放一次,丁每隔t4秒放一次,每人各放n次。函数fun的功能是根据形参提供的值,求出总共听到多少次鞭炮声作为函数值返回。注意,当几个鞭炮同时炸响,只算一次响声,第一次响声是在第O秒。 例如,若t1=7,t2=5,t3=6,t4=4,n=10,则总共可听到28次鞭炮声。 #include /**********found**********/ #define OK(i, t, n) ((___1___%t==0) && (i/t int fun(int t1, int t2, int t3, int t4, int n) { int count, t , maxt=t1; if (maxt < t2) maxt = t2; if (maxt < t3) maxt = t3; if (maxt < t4) maxt = t4; count=1; /* 给count赋初值 */ /**********found**********/ for(t=1; t< maxt*(n-1); ___2___) { if(OK(t, t1, n) || OK(t, t2, n)|| OK(t, t3, n) || OK(t, t4, n) ) count++; } /**********found**********/ 填空题(C) 30 return ___3___; } main() { int t1=7, t2=5, t3=6, t4=4, n=10, r; r = fun(t1, t2, t3, t4, n); printf(\} 答案:【1】i 【2】t++ 【3】count /**********found**********/ p[j]=___3___; } main() { char s[80]=\ printf(\ fun(s,p); printf(\} 85.函数fun的功能是:从三个形参a,b,c中找出中间 的那个数,作为函数值返回。例如,当a=3,b=5,c=4时,中数为4。 #include int fun(int a, int b, int c) { int t; /**********found**********/ t = (a>b) ? (b>c? b :(a>c?c:___1___)) : ((a>c)?___2___ : ((b>c)?c:___3___)); return t; } main() { int a1=3, a2=5, a3=4, r; r = fun(a1, a2, a3); printf(\} 答案:【1】a 【2】a 【3】b 86.给定程序中,函数fun的功能是:对形参s所指字符串中下标为奇数的字符按ASCII码大小递增排序,并将排序后下标为奇数的字符取出,存入形参p所指字符数组中,形成一个新串。 例如,形参s所指的字符串为:baawrskighzlicda,执行后p所指字符数组中的字符串应为:aachjlsw。#include void fun(char *s, char *p) { int i, j, n, x, t; n=0; for(i=0; s[i]!='\\0'; i++) n++; for(i=1; i /**********found**********/ for(j=___2___+2 ; j { x=s[i]; s[i]=s[t]; s[t]=x; } } for(i=1,j=0; i 答案:【1】t=i 【2】i 【3】0 90.给定程序中,函数fun的功能是:对形参ss所指字符串数组中的M个字符串按长度由短到长进行排序。ss所指字符串数组中共有M个字符串,且串长 #include void fun(char (*ss)[N]) { int i, j, k, n[M]; char t[N]; for(i=0; i /**********found**********/ for(j=___1___; j if(n[k]>n[j]) ___2___; if(k!=i) { strcpy(t,ss[i]); strcpy(ss[i],ss[k]); /**********found**********/ strcpy(ss[k],___3___); n[k]=n[i]; } } } main() { char ss[M][N]={\ int i; printf(\ for(i=0; i printf(\ for(i=0; i 答案:【1】i+1 【2】k=j 【3】t 93.函数fun的功能是:逆置数组元素中的值。例如: 填空题(C) 31 若a所指数组中的数据依次为:1、2、3、4、5、6、7、8、9,则逆置后依次为:9、8、7、6、5、4、3、2、1。 { vector[i]=rand(); 形参n给出数组中数据的个数。 #include void fun(int a[], int n) { int i,t; /**********found**********/ for (i=0; i<___1___; i++) { t=a[i]; /**********found**********/ a[i] = a[n-1-___2___]; /**********found**********/ ___3___ = t; } } main() { int b[9]={1,2,3,4,5,6,7,8,9}, i; printf(\ for (i=0; i<9; i++) printf(\ printf(\ fun(b, 9); printf(\ for (i=0; i<9; i++) printf(\ printf(\} 答案:【1】n/2 【2】i 【3】a[n-i-1] 补充编程题: 320.要求程序的功能是:把20个随机数存入一个数组,然后输出该数组中的最小值.其中确定最小值的下标的操作在fun函数中实现,请给出该函数的定义. #include int vector[VSIZE]; int fun(int list[],int size) { } main() { int i; for (i=0;i printf(\ } i=fun(vector,VSIZE); printf(\ } 答案: int fun(int list[],int size) { int x,i; x=0; for (i=1;i if (list[x]>list[i]) x=i; return x; } 208.编写函数fun,它的功能是:根据以下公式计算s,计算结果通过形参指针sn传回;s通过形参传入 sn?1111?13?5?7?...?(?1)^n2n?1 例如:若n的值为11时,输出的结果是:S=0.764601 N=11 #include void fun(float *sn,int n) {} main() { int n=11;float s; fun(&s,n); printf(\} 答案: void fun(float *sn,int n) { int i; float s=1; *sn=0; for (i=0;i<=n;i++) { *sn=*sn+s*(1.0/(2*i+1)); s=-s; } } 420.请编写一个函数,它的功能是:求出一个M*N二维数组每行元素的和值,并依次放入一个一维数组中传回主函数. 例如,若有以下二维数组: 6 10 2 10 16 17 15 15 8 6 填空题(C) 32 4 18 11 19 12 0 12 1 3 7 则输出:44 61 64 23 #define M 4 #define N 5 #include fun(int a[][N],int b[]) {} main() { int x[M][N],y[M],i,j; printf(\ for (i=0;i { for (j=0;j printf(\ for (i=0;i 答案: fun ( int a[][N] ,int b[]) { int i,j,sum=0,n=0; for(i=0;i 421.请编写函数int fun(int a[M][N]),a是一个M行N列的二维数组,函数的功能是求出二维数组周边元素之和,作为函数值返回.二维数组中的值由主函数传入. 例如:二维数组中的值为: 1 3 5 7 9 2 9 9 9 4 6 9 9 9 8 1 3 5 7 0 则函数返回为61. #include int fun ( int a[M][N] ) {} main( ) { int aa[M][N]={{1,3,5,7,9}, {2,9,9,9,4}, {6,9,9,9,8}, {1,3,5,7,0}}; int i, j, y; printf ( \ for ( i=0; i { for ( j =0; j y = fun ( aa ); printf( \ printf(\} 答案: int fun ( int a[M][N] ) { int i, j, sum = 0; for (i = 0; i < M; i++) for (j = 0; j < N; j++) if ((i == 0)||(i == M - 1)||(j == 0)||(j == N - 1) ) sum += a[i][j]; return sum; } 422.请编写一个函数fun,它的功能是:求出一个M×N二维数组每行元素的和值,并依次放入一个一维数组中传回主函数.例如,若有以下二维数组: 6 10 2 10 16 17 15 15 8 6 4 18 11 19 12 0 12 1 3 7 则输出:44 61 64 23 #define M 4 #define N 5 #include fun ( int a[][N] ,int b[]) {} main( ) { int x[M][N], y[M], i , j; printf(\ for ( i = 0 ; i < M; i++ ) { for ( j = 0 ; j < N ; j++ ) { x[i][j] = rand() ; printf(\x[i][j]); } printf(\ fun (x , y ); printf(\ for (i = 0 ;i < M ; i++) printf(\y[i]); printf(\} 答案: