当前位置:文档之家› 程序填空题

程序填空题

程序填空题1.给定程序中,函数fun 的功能是:求出形参ss 所指字符串数组中最长字符串的长度,其余字符串左边用字符*补齐,使其与最长的字符串等长。

字符串数组中共有M 个字符串,且串长<N 。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

注意:源程序存放在考生文件夹下的BLANK1.C 中。

#define M 5 #define N 20 void fun(char (*ss)[N]) { int i, j, k=0, n, m, len; for(i=0; i<M; i++) { len=strlen(ss[i]); if(i==0) n=len; if(len>n) { /**********found**********/ n=len; ___kk ___=i;} } //kk for(i=0; i<M; i++) if (i!=k) { m=n; len=strlen(ss[i]); /**********found**********/ for(j=___len ___; j>=0; j--) //len ss[i][m--]=ss[i][j]; for(j=0; j<n-len; j++) /**********found**********/ __ss[i][j]___='*'; }} //ss[i]][j] main(){char ss[M][N]={"shanghai", "guangzhou","beijing","tianjing"," cchongqing"}; int i; printf("The original strings are :\n"); for(i=0; i<M; i++) printf("%s\n",ss[i]);printf("\n"); fun(ss);printf("\nThe result:\n"); for(i=0; i<M; i++) printf("%s\n",ss[i]);} 2. 给定程序中,函数fun 的功能是:求ss 所指字符串数组中长度最长的字符串所在的行下标,作为函数值返回,并把其串长放在形参n 所指变量中。

ss 所指字符串数组中共有M 个字符串,且串长<N 。

#define M 5 #define N 20/**********found**********/ int fun(char (*ss) ___[N]___, int *n) //[N] { int i, k=0, len=0; for(i=0; i<M; i++) { len=strlen(ss[i]); /**********found**********/ if(i==0) *n=___len ___; //len if(len>*n) { /**********found**********/ ___n=len ___; //*n=len k=i; } } return(k);} main() { char ss[M][N]={"shanghai", "guangzhou","beijing","tianjing"," cchongqing"}; int n,k,i;printf("\nThe string are :\n"); for(i=0;i<M;i++)puts(ss[i]); k=fun(ss,&n);printf("\nThe leng longest string is : %d\n",n); printf("\nThe longest string is : %s\n",ss[k]);}3.函数fun 的功能是:把形参a 所指数组中最大值放在a[0]中,接着求出a 所指数组中最小值放在a[1]中;再把a 所指数组元素中的次大值放在a[2]中,把a 数组元素中次小值放在a[3]中;其余依次类推。

例如:若a 所指数组中的数组最初排列为:1、4、2、3、9、6、5、8、7,则按规则移动后,数据排列为:9、1、8、2、7、3、6、4、5.形参n 中存放a 所指数组中数据的个数。

#define N 9 /**********found**********/ void fun(int ___a ___, int n) //*a { int i, j, max, min, px, pn, t; /**********found**********/ for (i=0; i<n-1; i+=___2___) //2 { max = min = a[i]; px = pn = i; /**********found**********/ for (j=___i+1___; j<n; j++) //i+1 { if (max < a[j]) { max = a[j]; px = j; } if (min > a[j]) { min = a[j]; pn = j; }} if (px != i) { t = a[i]; a[i] = max; a[px] = t; if (pn == i) pn= px; } if (pn != i+1) { t = a[i+1]; a[i+1] = min; a[pn] = t; }}} main() { int b[N]={1,4,2,3,9,6,5,8,7}, i;printf("\nThe original data :\n");for (i=0; i<N; i++) printf("%4d ", b[i]); printf("\n");fun(b, N); printf("\nThe data after moving :\n"); for (i=0; i<N; i++)printf("%4d ", b[i]); printf("\n");} 4. (7)给定程序的功能是:调用函数fun 将指定源文件中的内容复制到指定的目标文件中,复制成功时函数返回值为1,失败时返回值为0。

在复制过程中,把复制的内容输出到终端屏幕.主函数中源文件中入在变量sfname k ,目标文件名放在变量tfname 中。

int fun(char *source, char *target) { FILE *fs,*ft; char ch; /**********found**********/ if((fs=fopen(source, ___r ___))==NULL) //”r ’ return 0; if((ft=fopen(target, "w"))==NULL) return 0; printf("\nThe data in file :\n"); ch=fgetc(fs); /**********found**********/ while(!feof(___fs __)) // fs { putchar( ch );/**********found**********/fputc(ch,___ft___); //ftch=fgetc(fs); }fclose(fs); fclose(ft);printf("\n\n"); return 1;}main(){char sfname[20] ="myfile1",tfname[20]="myfile2";FILE *myf; int i; char c;myf=fopen(sfname,"w");printf("\nThe original data :\n");for(i=1; i<30; i++){c='A'+rand()%25;fprintf(myf,"%c",c);printf("%c",c); }fclose(myf);printf("\n\n");if (fun(sfname, tfname))printf("Succeed!");else printf("Fail!");}5. 用筛选法可得到2~n(n<10000)之间的所有素数,方法是:首先从素数2开始,将所有2的倍数的数从数表中删去(把数表中相应位置的值置成0);接着从数表中找下一个非0数,并从数表中删去该数的所表倍数;依次类推,直到所找的下一个数等于n为止。

这样会得一个序列:2,3,5,7,11,13,17,19,23……函数fun用筛选法找出所有小于等于n的素数,并统计素数的个数作为函数值返回。

int fun(int n){ int a[10000], i,j, count=0;for (i=2; i<=n; i++) a[i] = i;i = 2; while (i<n) {/**********found**********/for (j=a[i]*2; j<=n; j+=___a[i] ___)a[j] = 0; i++;/**********found**********/while (___a[i]___==0)i++; }printf("The prime num between 2 to %d\n", n); for (i=2; i<=n; i++)/**********found**********/if (a[i]!=___0___){count++;printf( count%15?"%5d":"\n%5d",a[i]);}return count;}main(){ int n=20, r;r = fun(n);printf("\nThe number of prime is : %d\n", r);} 第一空:a[i] 第二空:a[i] 第三空06.函数fun的功能是:从三个形参a,b,c中找出中间的那个数,作为函数值返回。

相关主题