25.请编写一个函数fun,它的功能是:比较两个字符串的长度,(不得调用C语言提供的求字符串长度的函数),函数返回较长的字符串。若两个字符串长度相同,则返回第一个字符串。例如,输入:beijing shanghai<CR>(<CR>为回车键),函数将返回shanghai。
♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣
#include <stdio.h>
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("Input 1th string:") ;
gets( a);
printf("Input 2th string:") ;
gets( b);
printf("%s\n",fun (a, b ));
NONO ();
}
NONO ( )
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
FILE *fp, *wf ;
int i ;
char a[20], b[20] ;
fp = fopen("bc03.in","r") ;
if(fp == NULL) {
printf("数据文件bc03.in不存在!") ;
return ;
}
wf = fopen("bc03.out","w") ;
for(i = 0 ; i < 10 ; i ) {
fscanf(fp, "%s %s", a, b) ;
fprintf(wf, "%s\n", fun(a, b)) ;
}
fclose(fp) ;
fclose(wf) ;
}
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 <stdio.h>
#include <math.h>
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("Input eps:") ;
scanf("%lf",&x); printf("\neps = %lf, PI=%lf\n", x, fun(x));
}
27.请编写一个函数fun,它的功能是:求出1到m之内(含m)能被7或11整除的所有整数放在数组a中,通过n返回这些数的个数。
例如,若传送给m的值为50,则程序输出:7 11 14 21 22 28 33 35 42 44 49
♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣
#include <conio.h>
#include <stdio.h>
#define M 100
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%11==0))
{ a[k ]=i; (*n) ; }
}
main( )
{ int aa[M], n, k;
clrscr();
fun ( 50, aa, &n );
for ( k = 0; k < n; k )
if((k 1)%20==0) printf("\n");
else printf( "%4d", aa[k] );
printf("\n") ;
NONO( );
}
NONO ( )
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
FILE *fp, *wf ;
int i, n, j, k, aa[M], sum ;
fp = fopen("bc05.in","r") ;
if(fp == NULL) {
printf("数据文件bc05.in不存在!") ;
ret urn ;
}
wf = fopen("bc05.out","w") ;
for(i = 0 ; i < 10 ; i ) {
fscanf(fp, "%d,", &j) ;
fun(j, aa, &n) ;
sum = 0 ;
for(k = 0 ; k < n ; k ) sum =aa[k] ;
fprintf(wf, "%d\n", sum) ;
}
fclose(fp) ;
fclose(wf) ;
}
28.请编写一个函数fun,它的功能是:找出一维整型数组元素中最大的值和它所在的下标,最大的值和它所在的下标通过形参传回。数组元素中的值已在主函数中赋予。主函数中x是数组名,n是x中的数据个数,max存放最大值,index存放最大值所在元素的下标。
♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣
#include <stdlib.h>
#include <stdio.h>
void fun(int a[], int n , int *max, int *d )
{ int i;
*max=a[0];
*d=0;
for(i=0;i<n;i )
if(a[i]>*max)
{*max=a[i];
*d=i;}
}
main()
{int i, x[20], max , index, n = 10;
randomize() ;
for (i=0;i < n;i ) {x[i] = rand()%50; printf("%4d", x[i]) ; }
printf("\n");
fun( x, n , &max, &index);
printf("Max =%5d , Index =%4d\n",max, index );
}
29.请编写一个函数fun,它的功能是:将ss所指字符串中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。
例如,若输入abc4Efg,则应输出aBc4EFg。
♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣
#include<conio.h>
#include<stdio.h>
#include<string.h>
void fun(char *ss)
{
int i;
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]="abc4Efg";
printf("\nPlease enter an string within 80 characters:\n");
gets(tt);
printf("\n\nAfter changing, the string\n%s",tt);
fun(tt);
printf("\nbecomes\n%s\n",tt);
wf=fopen("out.dat","w");
fun(s);
fprintf(wf,"%s",s);
fclose(wf);
}