17. 编写函数int fun(int m,int n,int *p),要求将范围[m,n]之间所有的fibonacci数写入p所指的一维数组中,fibonacci数的个数通过函数返回值带回。例如,[0,30]之间的fibonacci数有7个,它们是:1 2 3 5 8 13 21 ;[1000,32767]之间有7个,它们是:1597 2584 6765 10946 17711 28657 。
#include
int fun(int m,int n,int *p) { int t,num=0; long f,f1=1,f2=1; if(m>n){t=m;m=n;n=t;} for(f=1,t=0;f<=n;) { if(f>=m) { p[t]=f;t++;num++; } f1=f2; f2=f ; f=f1+f2; }
return num; }
void main() { int a,b,n,c[22],i; scanf(\ n=fun(a,b,c); for(i=0;i 18. 编写函数char *fun(char *s1,char *s2,int n),将字符串s1中后面的n个字符复制到s2所指数组中,若s1不足n个字符,则用*在前端补齐至n个字符,写入s2中。函数返回字符串s2的指针。例如,下面程序运行时, 若输入:“abcd1234”和6,则输出“cd1234” 若输入:“abcd1234”和10,则输出“**abcd1234” #include char *fun(char *s1,char *s2,int n) { int i,k; k=strlen(s1); if(n void main() { char c1[80],c2[80]; int n; gets(c1); } scanf(\fun(c1,c2,n); puts(c2); 19. 编写函数void fun(char *s,char *b,char *c),逐个比较a、b两个字符串对应位置中的字符,把ASCII值大或相等的字符依次存放到c数组中,形成一个新的字符串。例如,若a中的字符串为aBCDeFgH,b中的字符串为:ABcd,则c中的字符串应为:aBcdeFgH。 #include void fun(char *a,char *b,char *c) { int i,l,m,k=0; if(strlen(a)>strlen(b)) {l=strlen(a);m=strlen(b);} else {m=strlen(a);l=strlen(b);k=1;} for(i=0;i for(;i for(;i c[i]='\\0'; } void main() { char s1[80],s2[80],s3[80]; gets(s1); gets(s2); fun(s1,s2,s3); puts(s3); } 20. 编写函数void fun(char *s),将s所指字符串中的所有数字字符移到所有非数字字符之后,并保持数字字符和非数字字符原有的前后次序。 例如,若输入:num is 0532-66ouc78,OK. 执行结果为:num is -ouc,OK.05326678 #include void swap(char *a,char *b) { char temp; temp=*a; *a=*b; *b=temp; } void fun(char *s) { char i; int n; int num,m=0,o=0; num=strlen(s); for (i=0;s[i]!='\\0';i++) { if ((s[i]>='0') && (s[i]<='9')) m++; } for (i=0;s[i]!='\\0';i++) { if ((s[i]>='0') && (s[i]<='9')) { o++; if(o>m) break; for (n=i;n+1 swap(&s[n],&s[n+1]); } i--; } } } void main() { } char a[80]; gets(a); fun(a); puts(a); 选做1:编写函数int fun(char *str,char ch),统计字符串str中指定字符ch的个数,统计结果作为函数返回值带回。 #include int fun(char *str,char ch) { int i=0,k,j; k=strlen(str); for(j=0;j if(ch==str[j])i++; } return(i); } void main() { char a[100],b; puts(\ gets(a); puts(\ b=getchar(); printf(\} 选做2 编写函数float fun(int m),功能是:根据正整型形参m,计算如下公式的值: y=1-1/2+1/3-1/4+1/5...+(-)1/m ,该值作为函数返回值。 #include float s=0; int i=1; for(i=1;i