}
main( )
{ int limit,i,sum;int aa[MAX];
printf(\ scanf(\ sum=fun(limit,aa); for(i=0; i printf(\ 21.编写函数fun,对长度为7个字符的字符串,除首、尾字符外,将其余5个字符按ASCII码降序排列。 例如,若原来的字符串为CEAedca,则排序后输出为CedcEAa。 ????????????????????????????????????????????????????????????? /*该题采用的排序法是选择法进行降序排序,算法是用外for()循环从字符串的前端往后端走动,每走动一个字符都用内嵌的for()循环在该字符后找出最小的字符与该字符进行换位。直到外for()循环走到最后一个字符。此外,此题还要注意把首尾字符除开,即在最外层for()循环中从1开始,只到num-2即可。*/ #include for(i=1;i for(j=i+1;j { t=s[i];s[i]=s[j];s[j]=t;} } main( ) { char s[10]; printf(\输入7个字符的字符串:\ gets(s); fun(s,7); printf(\ 22.N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。请编写函数fun,它的功能是:找出学生的最高分,由函数值返回。 #include struct slist *next;}; typedef struct slist STREC; double fun( STREC *h ) -11- { double max ; int i ; max=h->s; for(i=0 ; i if((h+i)->s>max) max=(h+i)->s; return max; } STREC * creat( double *s) { STREC *h,*p,*q; int i=0; h=p=(STREC*)malloc(sizeof(STREC));p->s=0; while(i { q=(STREC*)malloc(sizeof(STREC)); q->s=s[i]; i++; p->next=q; p=q;} p->next=0; return h;} outlist( STREC *h) { STREC *p; p=h->next; printf(\ do { printf(\ printf(\main( ) { double s[N]={85,76,69,85,91,72,64,87}, max; STREC *h; h=creat(s); outlist(h); max=fun( h ); printf(\ 23.请编写函数fun,该函数的功能是:判断字符串是否为回文?若是则函数返回1,主函数中输出YES,否则返回0,主函数中输出N0。回文是指顺读和倒读都一样的字符串。 例如,字符串LEVEL是回文,而字符串123312就不是回文。 #include while (*p) {n++; p++;} for (i=0;i if (str[i]==str[n-1-i]); else {fg=0;break;} return fg; } main( ) { char s[N] ; -12- printf(\ printf(\ if(fun(s)) printf(\ YES\\n\ else printf(\ NO\\n\} 24.请编写一个函数fun,它的功能是:将一个数字字符串转换为一个整数(不得调用C语言提供的将字符串转换为整数的函数)。例如,若输入字符串“-1234”,则函数把它转换为整数值-1234。 #include int i=0,j,n=strlen(p),k,s1; if(p[0]=='-') i++; for(j=i;j<=n-1;j++) { t=p[j]-'0'; s1=10; for (k=j;k if(p[0]=='-') return -s; else return s; } main( ) { char s[6];long n; printf(\ gets(s); n=fun(s); printf(\ 25.请编写一个函数fun,它的功能是:比较两个字符串的长度,(不得调用C语言提供的求字符串长度的函数),函数返回较长的字符串。若两个字符串长度相同,则返回第一个字符串。例如,输入:beijing shanghai char *fun ( char *s, char *t) { char *ss=s, *tt=t; while((*ss)&&(*tt)) { ss++; tt++; } if(*tt) return(t); else return(s); } main( ) { char a[20],b[10],*p,*q; int i; printf(\ gets( a); printf(\ gets( b); -13- printf(\ 26.请编写一个函数fun,它的功能是:根据以下公式求π的值(要求满足精度0.0005,即某项小于0.0005时停止迭代): X/2=1+1/3+1×2/3×5+1×2×3/3×5×7+1×2×3×4/3×5×7×9+...+1×2×3×...×n/3×5×7×(2n+1) 程序运行后,如果输入精度0.0005,则程序输出为3.14…。 #include double fun ( double eps) { double s; float n,t,pi; t=1;pi=0;n=1.0;s=1.0; while((fabs(s))>=eps) {pi+=s; t=n/(2*n+1); s*=t; n++;} pi=pi*2; return pi; } main( ) { double x; printf(\ scanf(\ } 27.请编写一个函数fun,它的功能是:求出1到m之内(含m)能被7或11整除的所有整数放在数组a中,通过n返回这些数的个数。例如,若传送给m的值为50,则程序输出:7 11 14 21 22 28 33 35 42 44 49 #include void fun ( int m, int *a , int *n ) { int i,k; *n=0; for(i=1,k=0; i<=m; i++) if((i%7==0)||(i==0)) { a[k++]=i; (*n)++; } } main( ) { int aa[M], n, k; fun ( 50, aa, &n ); for ( k=0; k if((k+1) ==0) printf(\ else printf( \ -14- printf(\ 28.请编写一个函数fun,它的功能是:找出一维整型数组元素中最大的值和它所在的下标,最大的值和它所在的下标通过形参传回。数组元素中的值已在主函数中赋予。主函数中x是数组名,n是x中的数据个数,max存放最大值,index存放最大值所在元素的下标。 #include void fun(int a[], int n , int *max, int *d ) { int i; *max=a[0]; *d=0; for(i=0;i main( ) {int i, x[20], max , index, n=10; for (i=0;i fun( x, n , &max, &index); printf(\ Index =M\\n\ } 29.请编写一个函数fun,它的功能是:将ss所指字符串中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。 例如,若输入abc4Efg,则应输出aBc4EFg。 #include for(i=0;ss[i]!='\\0';i++) if(i%2==1&&ss[i]>='a'&&ss[i]<='z') ss[i]=ss[i]-32; } main( ) { FILE *wf; char tt[81],s[10]=\ printf(\ gets(tt); printf(\ fun(tt); printf(\ wf=fopen(\ -15-