87.请编写函数fun,其功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的千位和十位上,b数的十位和个位数依次放在c数的个位和百位上。
例如,当a=45,b=12,调用该函数后c=4251。
♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣
#include <conio.h>
#include <stdio.h>
/*本题的关键在于如何表示出个、十、百、千位数。对于一个两位的整数,用1
0对它求余得到个位数上的数,将它除10得到十位数上的数。*/
void fun(int a, int b, long *c)
{ int i,j,k,n;
i=a%10; j=a/10; k=b%10; n=b/10;
*c=j*1000 k*100 i*10 n;
}
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);
}
88.假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:除了字符串前导的*号之外,将串中其他*号全部删除。在编写函数时,不得使用C语言提供的字符串函数。
例如,若字符串中的内容为****A*BC*DEF*G*******,删除后,字符串中的内容则应当是****ABCDEFG。
♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣
#include <stdio.h>
#include <conio.h>
void fun (char *a)
{ int i=0; char *p=a ;
while(*p&&*p=='*')
{ a[i]=*p;
i ;
p ;}
while(*p)
{if(*p!=’*’)
{a[i]=*p;
i ; }
p ;
}
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);
}
89.学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把高于等于平均分的学生数据放在b所指的数组中,高于等于平均分的学生人数通过形参n传回,平均分通过函数值返回。
♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣
#include <stdio.h>
# define N 12
typedef struct
{ char num[10];
double s;
} STRUC;
double fun (STRUC *a,STRUC *b, int *n)
{
int i;
double av= 0.0 ;
*n=0;
for(i=0;i<N;i )
av=av a[i].s;
av=av/N;
for(i=0;i<N;i )
if(av<=a[i].s)
{ b[*n]=a[i];*n=*n 1;}
return av ;
}
main()
{
FILE *wf;
STRUC s[N]={{"GA05",85},{"GA03",76},{"GA02",69},{"GA04",85},
{"GA01",91},{"GA07",72},{"GA08",64},{"GA06",87},
{"GA09",60},{"GA11",79},{"GA12",73},{"GA10",90}};
STRUC h[N],t;
FILE *out;
int i ,j,n;
double ave;
ave=fun(s,h,&n);
printf("The %d student data which is higher than %7.3f:\n",n,ave);
for(i=0; i<n; i )
printf("%s %4.1f\n",h[i].num,h[i].s);
printf("\n");
out=fopen("out90.dat", "w");
fprintf(out, "%d\n %7.3f\n",n,ave);
for(i=0; i<n-1; i )
for(j=i 1;j<n;j )
if(h[i].s<h[j].s)
{t=h[i];h[i]=h[j];h[j]=t;}
for(i=0; i<n; i )
fprintf(out, "%4.1f\n",h[i].s);
fclose(out);
wf=fopen("out.dat","w");
fprintf(wf, "%d %7.3f\n",n,ave);
for(i=0; i<n; i )
fprintf(wf, "%s %4.1f ",h[i].num,h[i].s);
fclose(wf);
}
90.请编写函数fun,其功能是:计算并输出下列多项式值:
Sn=(1-1/2) (1/3-1/4) ... (1/(2n-1)1/2n)
例如,若主函数从键盘给n输入8后,则输出为S=0.662872。
♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣
#include
double fun(int n)
{
int i;
double sum=0.0;
if (n>1&&n<=100)
{for(i=1;i<=n;i )
sum =1.0/(2*i-1)-1.0/(2*i);
}
return sum;
}
main()
{ int n; double s;
printf("\\nInput n: "); scanf("%d",&n);
s=fun(n);
printf("\\ns=%f\\n",s);
NONO();
}
NONO()
{/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */
FILE *rf, *wf ; int n, i ; double s ;
rf = fopen("bc.in", "r") ;
wf = fopen("bc.out", "w") ;
for(i = 0 ; i < 10 ; i ) {
fscanf(rf, "%d", &n) ;
s = fun(n) ;
fprintf(wf, "%lf\\n", s) ;
}
fclose(rf) ; fclose(wf) ;
}
91.请编写函数fun,其功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的十位和千位上,b数的十位和个位数依次放在c数的个位和百位上。
例如,当a=45,b=12,调用该函数后c=5241。
♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣
#include <conio.h>
#include <stdio.h>
void fun(int a, int b, long *c)
{
*c= a/10*10 a%10*1000 b/10 b%10*100;
}
main()
{ int a,b; long c;
clrscr();
printf("Input a, b:");
scanf("%d%d", &a, &b);
fun(a, b, &c);
printf("The result is: %ld\n", c);
NONO();
}
NONO ( )
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
FILE *rf, *wf
int i, a,b long c
rf = fopen("in1.dat", "r")
wf = fopen("bc08.dat","w")
for(i = 0 i < 10 i ) {
fscanf(rf, "%d,%d", &a, &b)
fun(a, b, &c)
fprintf(wf, "a=%d,b=%d,c=%ld\n", a, b, c)
}
fclose(rf)
fclose(wf)
}
92.请编写函数fun,它的功能是计算:s=(ln(1) ln(2) 1n(3) … ln(m))0.5 s作为函数值返回。
在C语言中可调用log(n)函数求ln(n)。log函数的引用说明是:double log(double x)。
例如,若m的值为20,则fun函数值为6.506583。
♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣
#include <conio.h>
#include <math.h>
#include <stdio.h>
double fun(int m)
{double i;double r,s; double log(double i);
for(i=1;i<=m;i )
{r=r log(i);}
return (sqrt(r));
}
main()
{clrscr();
printf("%f\n",fun(20));
}
93.请编写函数fun,它的功能是计算下列级数和,和值由函数值返回。
例如,当n=10,x=0.3时,函数值为1.349859。
S = 1 x ……
♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣
#include <conio.h>
#include <stdio.h>
#include <math.h>
double fun( double x, int n)
{ int i;
float p=1;
long q=1;
double t,s=1.0;
for( i=1; i<=n; i )
{ p*=x; q*=i;
t=p/q;
s =t;
}
return s;
}
main()
{ printf("%f\n", fun(0.3,10));
}