68.请编写函数fun,其功能是:计算并输出下列多项式值:
Sn=1 1/1! 1/2! 1/3! 1/4! … 1/n!
例如,若主函数从键盘给n输入15,则输出为s=2.718282。注意:n的值要求大于1但不大于100。
♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣
#include <stdio.h>
double fun(int n)
{
double t,sn=1.0;
int i,j;
for(i=1;i<n;i )
{t=1.0;
for(j=1;j<=i;j )
t*=j;
sn =1.0/t;}
return sn;
}
return sn;
}
main()
{ int n; double s;
printf("Input n: "); scanf("%d",&n);
s=fun(n);
printf("s=%f\n",s);
NONO();
}
NONO()
{/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */
FILE *rf, *wf ; int n, i ; double s ;
rf = fopen("K:\\k01\\24001619\\in.dat","r") ;
wf = fopen("K:\\k01\\24001619\\out.dat","w") ;
for(i = 0 ; i < 10 ; i ) {
fscanf(rf, "%d", &n) ;
s = fun(n) ;
fprintf(wf, "%lf\n", s) ;
}
fclose(rf) ; fclose(wf) ;
}
69.请编写函数fun,它的功能是:求Fibonacci数列中大于t的最小的一个数,结果由函数返回。其中Fibonacci数列F(n)定义为:F(0)=0,F(1)=1,F(n)=F(n-1) F(n-2)
例如:当t=1000时,函数值为1597。
♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣
#include "math.h"
#include "stdio.h"
int fun (int t)
{int i,s=0;
for(i=0;s<=t;i )
s=f(i);return s;
}
f (int n)
{ int s=0;
if(n==0) return 0;
else if(n==1) return 1;
else s=f(n-1) f(n-2);
return s;
}
main()
{int n;
clrscr();
n=1000;
printf("n=%d,f=%d\n",n,fun(n));
}
70.编写函数fun,它的功能是:计算并输出下列级数和:S=1/1*2 1/2*3 ... 1/n(n 1)
例如,当n=10时,函数值为0.909091。
♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣
#include<conio.h>
#include<stdio.h>
double fun(int n)
{
int i;
double s=0.0;
for(i=1;i<=n;i )
s= s 1.0/(i*(i 1));
return s;
}
main()
{
FILE *wf;
printf("%f\n",fun(10));
wf=fopen("out.dat","w");
fprintf(wf,"%f",fun(10));
fclose(wf);
}
71.请编写函数fun,其功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的十位和千位上,b数的十位和个位数依次放在c数的百位和个位上。
例如,当a=45,b=12,调用该函数后c=5142。
♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣
#include <conio.h>
#include <stdio.h>
/*本题的关键在于如何表示出个、十、百、千位数。对于一个两位的整数,用10对它求余得到个位数上的数,将它除10得到十位数上的数。*/
void fun ( int a, int b , long *c)
{ *c=(a%10)*1000 (b/10)*100 (a/10)*10 b%10 ; }
main()
{ int a,b; long c;
printf(" input a, b: ");
scanf("%d%d", &a,&b);
fun(a,b,&c);
printf(" the result is :%ld\n", c);
}
72.请编写函数fun,其功能是:将s所指字符串中下标为偶数的字符删除,串中剩余字符形成的新串放在t所指数组中。
例如,当s所指字符串中的内容为ABCDEFGHIJK,则在t所指数组中的内容应是BDFHJ。
♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣
#include<conio.h>
#include<stdio.h>
#include<string.h>
void fun(char *s ,char t[])
{
int i,j=0,k= strlen(s);
for(i=1;i<k;i=i 2)
t[j ]=s[i];
t[j]='\0';
}
main()
{
FILE *wf;
char s[100],t[100];
printf("\nPlease enter string S: ");
scanf("%s",s);
fun(s,t);
printf("\nThe result is:%s\n ",t);
wf=fopen("out.dat","w");
fun("ABCDEFGHIJK",t);
fprintf(wf,"%s",t);
fclose(wf);
}
73.假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:除了字符串前导和尾部的*号之外,将串中其他*号全部删除。形参h已指向字符串中第一个字母,形参p已指向字符串中最后一个字母。在编写函数时,不得使用C语言提供的字符串函数。
例如,若字符串中的内容为****A*BC*DEF*G********,删除后,字符串中的内容则应当是****ABCDEFC********。
♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣
#include <stdio.h>
#include <conio.h>
void fun (char *a, char *h, char *p)
{ int i=0; char *q=a ;
while(q<h)
{ a[i]=*q;
q ;
i ; }
while(q<p)
{ if (*q!= '*')
{ a[i]=*q;
i ; }
q ; }
while (*q)
{ a[i]=*q;
i ;
q ;
}
a[i]= '\0';
}
main()
{
FILE *wf;
char s[81],*t="****A*BC*DEF*G*******";
printf("Enter a string :\n");
gets(s);
fun(s);
printf("The string after deleted:\n");
puts(s);
wf=fopen("out.dat","w");
fun(t);
fprintf(wf,"%s",t);
fclose(wf);
}
74.学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把分数最低的学生数据放在h所指的数组中,注意:分数最低的学生可能不止一个,函数返回分数最低的学生的人数。
♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣
#include <stdio.h>
#include <string.h>
#include <conio.h>
#define N 10
typedef struct ss
{ char num[10]; int s;} STREC;
int fun (STREC *a, STREC *b)
{ int i,j=0, n=0, min ;
min=a[0].s ;
for (i=0 ; i<N ; i )
if( a[i].s<min)
min=a[i].s ;
for (i=0 ; i<N ;i )
if( a[i].s==min)
{ *(b j)=a[i] ;
j ;
n ;
}
return n ;
}
main()
{ STREC a[N]={ {"A01",81},{"A02",89},{"A03",66}
,{"A04",87},{"A05",77},
{"A06",90},{"A07",79},{"A08",61},{"
;A09",80},{"A10",71} }, m;
int i;
printf("**** the original data ****\n");
for(i=0;i<N; i ) printf("N0=%s Mark=%d\n", a[i].num,a[i].s
);
fun( a,&m);
printf("**** the result****\n");
printf(" the top : %s ,%d\n", m.num,m.s);
}
75.请编写函数fun,该函数的功能是:将M行N列的二维数组中的数据,按列的顺序依次放到一维数组中。
例如,若二维数组中的数据为: 33 33 33 33
44 44 44 44
55 55 55 55
则一维数组中的内容应是:33 44 55 33 44 55 33 44 55 33 44 55。
♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣
#include <stdio.h>
void fun( int (*s)[10],int *b,int *n,int mm,int nn)
{ int i,j;
for(j=0;j<nn;j )
for(i=0;i<mm;i )
{ b[*n]=*(*(s i) j);
*n = *n 1; }
}
main()
{
FILE *wf;
int w[10][10]={{33,33,33,33},{44,44,44,44},{55,55,55,55}}, i, j;
int a[100]={0},n=0 ;
printf("The matrix:\n");
for (i=0; i<3; i )
{for (j=0;j<4;j )
printf("%3d",w[i][j]);
printf("\n");
}
fun(w,a, &n,3,4);
printf("The A array:\n");
for(i=0; i<n; i )
printf("%3d",a[i]);
printf("\n\n");
wf=fopen("out.dat","w");
for(i=0; i<n; i )
fprintf(wf,"%3d",a[i]);
fclose(wf);