int fun(char *fname ) if(p.num[0]==0) { FILE *fp; int i,n; float x; printf(\ if((fp=fopen(fname, \ else for(i=1;i<=10;i++) { printf(\/**********found**********/ printf(\ %d-%d-%d\\n\fprintf(___1___,\ } printf(\!\\n\} /**********found**********/
1.给定程序中,函数fun的功能是:求出形参ss所指 ___2___;
字符串数组中最长字符串的长度,其余字符串左边用字 printf(\
/**********found**********/ 符*补齐,使其与最长的字符串等长。字符串数组中共有 if((fp=fopen(___3___,\M个字符串,且串长 #define M 5 { printf(\%f\\n\#define N 20 fscanf(fp,\ void fun(char (*ss)[N]) fclose(fp); { int i, j, k=0, n, m, len; return 1; } for(i=0; i if(len>n) { } /**********found**********/ n=len; ___1___=i;} } //kk 第一空:fp 第二空:fclose(fp) 第三空:fname for(i=0; i if (i!=k) { m=n; 112.人员的记录由编号和出生年、月、日组成,N名 len=strlen(ss[i]); 人员的数据已在主函数中存入结构体数组std中,且编 号唯一。函数fun的功能是:找出指定编号人员的数据,/**********found**********/ 作为函数返回值,由主函数输出,若指定编号不存在, for(j=___2___; j>=0; j--) //len ss[i][m--]=ss[i][j]; 返回数据中的编号为空串。 #define N 8 for(j=0; j main(){char ss[M][N]={\/**********found**********/ \___1___fun(STU*std,char*num) //STU cchongqing\ printf(\{ int i; STU a={\ for (i=0; i for(i=0; i return (___3___); //std[i] printf(\ return a; } main() { STU std[N]={ {\1},{\ {\66\ {\ STU p; char n[10]=\ p=fun(std,n); 26 2. 给定程序中,函数fun的功能是:求ss所指字符串数组中长度最长的字符串所在的行下标,作为函数值返回,并把其串长放在形参n所指变量中。ss所指字符串数组中共有M个字符串,且串长 /**********found**********/ int fun(char (*ss) ___1___, int *n) //[N] { int i, k=0, len=0; for(i=0; i /**********found**********/ if(i==0) *n=___2___; //len if(len>*n) { /**********found**********/ ___3___; //*n=len k=i; } } return(k);} main() { char ss[M][N]={\\cchongqing\ printf(\ for(i=0;i printf(\leng longest string is : %d\\n\printf(\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 ___1___, int n) //*a { int i, j, max, min, px, pn, t; /**********found**********/ for (i=0; i /**********found**********/ for (j=___3___; 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(\ for (i=0; i printf(\for (i=0; i 4. (7)给定程序的功能是:调用函数fun将指定源文件中的内容复制到指定的目标文件中,复制成功时函数返回值为1,失败时返回值为0。在复制过程中,把复制的内容 27 输出到终端屏幕.主函数中源文件中入在变量sfname k ,目标文件名放在变量tfname中。 int fun(char *source, char *target) { FILE *fs,*ft; char ch; /**********found**********/ if((fs=fopen(source, ___1___))==NULL) //”r’ return 0; if((ft=fopen(target, \ return 0; printf(\ ch=fgetc(fs); /**********found**********/ while(!feof(___2___)) // fs { putchar( ch ); /**********found**********/ fputc(ch,___3___); //ft ch=fgetc(fs); } fclose(fs); fclose(ft); printf(\ main(){char sfname[20] =\tfname[20]=\ FILE *myf; int i; char c; myf=fopen(sfname,\ printf(\ for(i=1; i<30; i++) {c='A'+rand()%;fprintf(myf,\printf(\ fclose(myf);printf(\ if (fun(sfname, tfname)) printf(\ else printf(\ 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 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(\第一空:a[i] 第二空:a[i] 第三空0 6.函数fun的功能是:从三个形参a,b,c中找出中间的那个数,作为函数值返回。例如:当a=3,b=5,c=4时,中数为4。 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(\第一空:a 第二空:a 第三空:b 7. 函数fun的功能是:计算 x2xnf(x)?1?x???? 2!n!xn?10?6。若x=2.5,函数值为:12.182494。 直到n!double fun(double x) { double f, t; int n; /**********found**********/ f = 1.0+___1___; t = x; n = 1; do { n++; /**********found**********/ t *= x/___2___; /**********found**********/ f += ___3___; } while (fabs(t) >= 1e-6); return f;} main(){ double x, y; x=2.5; y = fun(x); printf(\ printf(\第一空:x 第二空:n 第三空:t 8. 给定程序中,函数fun的功能是:对形参ss所指字符串数组中的M个字符串按长度由短到长进行排序。ss所指字符串数组中共有M个字符串,且串长 void fun(char (*ss)[N]) { int i, j, k, n[M]; char t[N]; for(i=0; i 28 for(i=0; i /**********found**********/ for(j=___1___; j { 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 第一空:i+1 第二空:k=j 第三空:t 9. 函数fun的功能是:把形参a所指数组中的最小值放在元素a[0]中,接着把形参a所指数组中的最大值放在a[1]元素中;再把a所指数组元素中的次小值放在a[2]中,把a所指数组元素中的次大值放在a[3];其余以此类推。例如:若a所指数组中的数据最初排列为:9、1、4、2、3、6、5、8、7;则按规则移动后,数据排列为:1、9、2、8、3、7、4、6、5。形参n中存放a所指数组中数据的个数。 #define N 9 void fun(int a[], int n) { int i,j, max, min, px, pn, t; for (i=0; i {/**********found**********/ max = min = ___1___; px = pn = i; for (j=i+1; j { max = a[j]; px = j; } /**********found**********/ if (min>___3___) { min = a[j]; pn = j; } } if (pn != i) { t = a[i]; a[i] = min; a[pn] = t; if (px == i) px =pn; } if (px != i+1) { t = a[i+1]; a[i+1] = max; a[px] = t; } }} main() { int b[N]={9,1,4,2,3,6,5,8,7}, i; printf(\ for (i=0; i printf(\ for (i=0; i 第一空:a[i] 第二空:a[j] 第三空:a[j] 10. 给定程序中,函数fun的功能是:将形参std所指结构体数组中年龄最大者的数据作为函数值返回,并在main函数中输出。 typedef struct { char name[10]; int age; }STD; STD fun(STD std[], int n) { STD max; int i; /**********found**********/ max= ___1___; for(i=1; i /**********found**********/ if(max.age<___2___) max=std[i]; return max;} main( ) { STD std[5]={\ \ STD max; max=fun(std,5); printf(\/**********found**********/ printf(\ ___3___,max.age);} 第一空:*std 第二空:std[i].age 第三空:max.name 11.给定程序中,函数fun的功能是:将s所指字符串中的所有数字字符移到所有非数字字符之后,并保持数字字符串和非数字字符串原有的先后次序。例如,形参s所指的字符串为:def35adh3kjsdf7。执行结果为:defadhkjsdf3537。 void fun(char *s) { int i, j=0, k=0; char t1[80], t2[80]; for(i=0; s[i]!='\\0'; i++) if(s[i]>='0' && s[i]<='9'){ /**********found**********/ t2[j]=s[i]; ___1___; } else t1[k++]=s[i]; t2[j]=0; t1[k]=0; /**********found**********/ for(i=0; i for(i=0; i<___3___; i++) s[k+i]=t2[i];} main() 29 { char s[80]=\ printf(\ fun(s); printf(\第一空:j++; 第二空:s[i]=t1[i];第三空:j 12. 函数fun的功能是:把形参a所指数组中的奇数原顺序依次放到a[0]、a[1]、a[2]、??中,把偶数从数组中删除,奇数个数通过函数值返回。例如:若a所指数组中数据最初排列为:9、1、4、2、3、6、5、8、7,删除偶数后a所指数组中数据为:9、1、3、5、7,返回值为5。 #define N 9 int fun(int a[], int n) { int i,j; j = 0; for (i=0; i /**********found**********/ if (a[i]%2==___1___){ /**********found**********/ a[j] = a[i]; ___2___; } /**********found**********/ return ___3___;} main() { int b[N]={9,1,4,2,3,6,5,8,7}, i, n; printf(\ for (i=0; i printf(\ printf(\ for (i=0; i printf(\第一空:1 第二空:j++ 第三空j 13. 给定程序中,函数fun的功能是:对形参s所指字符串下标为奇数的字符按ASCII码大小递增排序,并将排序后下标为奇数的字符取出,存入形参p所指字符数组中,形成一个新串。例如,形参s所指的字符串为:baawrskjghzlicda,执行后p所指字符数组中的字符串应为:aachjlsw。 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 /**********found**********/ p[j]=___3___;} main() { char s[80]=\ printf(\ fun(s,p); printf(\第一空:t=i 第二空:i 第三空 0 14. 给定函数int MySearch(char *str,char *s)的功能是:统计字符串s在字符串str中出现的次数。例如,若输入字符串”12 123 12345”和”23”,则应输出2(表示字符串”23”在字符串”12 123 12345”中出现了两次)。若输入字符串”33333”和”33”,则应输出4(表示字符串”33”在字符串”33333”出现了四次)。 int MySearch( char* str, char* s ){ char* p; int n =0; for( ; *str; ) /***************found***************/ if( ( p = strstr( str, s ) ) != ___1___ ) { n++; str=p+1; } else /***************found***************/ ___2___; /***************found***************/ return( ___3___ );} main() { char str1[81], str2[21]; printf(\ gets(str1); printf(\ gets(str2); printf( \times\\n\第一空:NULL 第二空:*str=0 第三空:n char string[81], x; clrscr(); printf(\ gets(string); printf(\ scanf(\ printf( \deleting %d '%c'(s), the string becomes:\\n%s\\n\x), x, string);} 第一空:j++ 第二空:0 第三空:k 16. 给定程序中已建立一个带有头结点的单向链表,链表中的各结点按结点数据域中的数据从小到大顺序链接。函数fun的功能是:把形参x的值放入一个新结点并插入到链表中,插入后各结点仍保持从小到大顺序排序。 #define N 8 typedef struct list { int data; struct list *next; } SLIST; void fun( SLIST *h, int x) { SLIST *p, *q, *s; s=(SLIST *)malloc(sizeof(SLIST)); /**********found**********/ s->data=___1___; q=h; p=h->next; while(p!=NULL && x>p->data) { /**********found**********/ q=___2___; p=p->next; } s->next=p; /**********found**********/ q->next=___3___;} SLIST *creatlist(int *a) { SLIST *h,*p,*q; int i; h=p=(SLIST *)malloc(sizeof(SLIST)); 15. 给定函数 char *MyDelete(char *str,char c)的功 for(i=0; i 能是:在字符串str中删除变量c中的字符,有几个删几 { q=(SLIST *)malloc(sizeof(SLIST)); 个,并返回所删字符的个数。例如,若输入字符串”ab abc q->data=a[i]; p->next=q; p=q; bcdef”和字符’b’,则应输出字符串”a ac cdef”和 } 3(表示删了3个字符’b’)。 p->next=0; int MyDelete( char* str, char c ) return h;} { int i, j=0, k=0; void outlist(SLIST *h) for( i = 0; str[i]; i++ ) { SLIST *p; if( str[i] != c ) p=h->next; /***************found**************/ if (p==NULL) { str[ j ]= str[i]; ___1___; } printf(\ else else k++; { printf(\ /***************found**************/ do{printf(\ str[j]=___2___ ; while(p!=NULL); /***************found**************/ printf(\ return( ___3___ );} main() main(){ 30