c语言fun(%.3lf),C语言强化学习系列之一

原标题:C语言强化学习系列之一

C语言强化学习(一) 一、题目

1.程序设计:请编写一个函数fun,它的功能是:求出一个2×M整型二维数组中最大元素的值,并将此值返回调用函数。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

#define M 4

#include

fun (int a[][M])

{

/***********************Begin*********************/

/***********************End***********************/

}

2.给定程序modi.c中函数fun的功能是:按以下递归公式求函数值。        ┌ 10 (n=1) fun(n)=┥         └ fun(n-1)+2 (n>1) 例如,当给n输入5时,函数值为18;当给n输入3时,函数值为14。请改正程序中的错误,使它能得出正确结果。

#include

/************Error************/

void fun(n)

{ int c;

/************Error************/

if (n=1)

c=10;

else

c=fun(n-1)+2;

return(c);

}

main()

{ int n;

printf("Enter n: ");scanf("%d",&n);

printf("The result:%dnn",fun(n));

}

3.程序填空:给定程序中,函数fun的功能是:将自然数1~10以及它们的平方根写到名为myfile3.txt的文本文件中,然后再顺序读出显示在屏幕上。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

#include

#include

int fun(char *fname )

{ FILE *fp; int i,n; float x;

if((fp=fopen(fname, "w"))==NULL) return 0;

for(i=1;i<=10;i++)

/**********fill**********/

fprintf(_____,"%d %fn",i,sqrt((double)i));

printf("nSucceed!n");

/**********fill**********/

_____;

printf("nThe data in file :n");

/**********fill**********/

if((fp=fopen(_____,"r"))==NULL)

return 0;

fscanf(fp,"%d%f",&n,&x);

while(!feof(fp))

{ printf("%d %fn",n,x); fscanf(fp,"%d%f",&n,&x); }

fclose(fp);

return 1;

}

main()

{ char fname[]="myfile3.txt";

fun(fname);

}

4.程序设计:学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把低于平均分的学生数据放在b所指的数组中,低于平均分的学生人数通过形参n传回,平均分通过函数值返回。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

#include

#define N 8

typedef struct

{ char num[10];

double s;

} STREC;

double fun(STREC *a,STREC *b,int *n)

{

/***********************Begin*********************/

/***********************End***********************/

}

main()

{ STREC s[N]={{"GA05",85},{"GA03",76},{"GA02",69},{"GA04",85},{"GA01",91},{"GA07",72},{"GA08",64},{"GA06",87}};

STREC h[N];FILE *out;

int i,n;double ave;

ave=fun(s,h,&n);

printf("The %d student data which is lower than %7.3f:n",n,ave);

for(i=0;i

printf("%s %4.1fn",h[i].num,h[i].s);

printf("n");

out=fopen("out13.dat","w");

fprintf(out,"%dn%7.3fn",n,ave);

for (i=0;i

fprintf(out,"%s %4.1fn",h[i].num,h[i].s);

fclose(out);

}

5.给定程序MODI1.C中fun函数的功能是:根据整型形参m,计算如下公式的值。        1      1    1         1 t = 1 - ── - ── - ── - ……- ──        2     3   4         m 例如,若主函数中输入5,则应输出 -0.283333。请改正函数fun中的错误或在横线处填上适当的内容并把横线删除,使它能计算出正确的结果。

#include

double fun( int m )

{

double t = 1.0;

int i;

for( i = 2; i <= m; i++ )

/**********Error**********/

t = 1.0-1 /i;

/**********Error**********/

_______;

}

main()

{

int m ;

printf( "nPlease enter 1 integer numbers:n" );

scanf( "%d", &m);

printf( "nnThe result is %lfn", fun( m ) );

}

6.程序填空:给定程序中,函数fun的功能是:将形参std所指结构体数组中年龄最大者的数据作为函数值返回,并在main函数中输出。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

#include

typedef struct

{ char name[10];

int age;

}STD;

STD fun(STD std[], int n)

{ STD max; int i;

/**********fill**********/

max= _____;

for(i=1; i

/**********fill**********/

if(max.age<_____ max="std[i];</p">

return max;

}

main( )

{ STD std[5]={"aaa",17,"bbb",16,"ccc",18,"ddd",17,"eee",15 };

STD max;

max=fun(std,5);

printf("nThe result: n");

/**********fill**********/

printf("nName : %s, Age : %dn", _____,max.age);

}

7.程序设计:请编写一个函数fun,它的功能是:计算n门课程的平均分,计算结果作为函数值返回。例如:若有5门课程的成绩是:90.5,72,80,61.5,55,则函数的值为:71.80。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

#include

float fun(float *a,int n)

{

/***********************Begin*********************/

/***********************End***********************/

}

void NONO ( )

{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */

FILE *fp, *wf ;

int i, j ;

float aver, score[5] ;

fp = fopen("bc01.in","r") ;

if(fp == NULL) {

printf("数据文件bc01.in不存在!") ;

return ;

}

wf = fopen("bc01.out","w") ;

for(i = 0 ; i < 10 ; i++) {

for(j = 0 ; j < 5 ; j++) fscanf(fp,"%f,",&score[j]) ;

aver = fun(score, 5) ;

fprintf(wf, "%5.2fn", aver) ;

}

fclose(fp) ;

fclose(wf) ;

}

main()

{ float score[30]={90.5,72,80,61.5,55},aver;

aver=fun(score,5);

printf("nAverage score is: %5.2fn",aver);

NONO ( );

}

8.给定程序modi.c中,函数fun的功能是:应用递归算法求形参a的平方根,求平方根的迭代公式如下(请自行查找公式):例如,2的平方根值为:1.414214。请改正程序中的错误,使它能得出正确结果。

#include

#include

/************Error************/

fun(double a,double x0)

{ double x1,y;

x1=(x0+a/x0)/2.0;

/************Error************/

if(fabs(x1-x0)<0.00001)

y=fun(a,x1);

else y=x1;

return y;

}

main()

{ double x;

printf("Enter x:");scanf("%lf",&x);

printf("The square root of %lf is %lfn",x,fun(x,1.0));

}

9.程序填空:函数fun的功能是:逆置数组元素中的值。例如:若a所指数组中的数据依次为:1、2、3、4、5、6、7、8、9,则逆置后依次为:9、8、7、6、5、4、3、2、1。形参n给出数组中数据的个数。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

#include

void fun(int a[], int n)

{ int i,t;

/**********fill**********/

for (i=0; i<_____ i>

{

t=a[i];

/**********fill**********/

a[i] = a[n-1-_____];

/**********fill**********/

_____ = t;

}

}

main()

{ int b[9]={1,2,3,4,5,6,7,8,9}, i;

printf("nThe original data :n");

for (i=0; i<9; i++)

printf("%4d ", b[i]);

printf("n");

fun(b, 9);

printf("nThe data after invert :n");

for (i=0; i<9; i++)

printf("%4d ", b[i]);

printf("n");

}

10.程序设计请编写函数fun,函数的功能是:将M行N列的二维数组中的数据按行的顺序依次放到一维数组中,一维数组中数据的个数存放在形参n所指的存储单元中。例如,二维数组中的数据为: 33 33 33 33 44 44 44 44 55 55 55 55 则一维数组中的内容应是:33 33 33 33 44 44 44 44 55 55 55 55。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

#include

void fun(int (*s)[10], int *b, int *n, int mm, int nn)

{

/***********************Begin*********************/

/***********************End***********************/

NONO()

{/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。*/

FILE *rf, *wf ; int i, j, k ;

int w[10][10], a[100], n = 0, mm, nn ;

rf = fopen("bc.in", "r") ;

wf = fopen("bc.out", "w") ;

for(k = 0 ; k < 5 ; k++) {

fscanf(rf, "%d %d", &mm, &nn) ;

for(i = 0 ; i < mm ; i++)

for(j = 0 ; j < nn ; j++) fscanf(rf, "%d", &w[i][j]) ;

n=0;

fun(w, a, &n, mm, nn) ;

for(i = 0 ; i < n ; i++) fprintf(wf, "%3d", a[i]) ; fprintf(wf, "n") ;

}

fclose(rf) ; fclose(wf) ;

}

main()

{ 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("nn") ;

NONO() ;

}二、参考答案

1.【参考代码】

int i,j;

int max=a[0][0];

for(i=0;i<2;i++)

for(j=0;j

if(a[i][j]>max)

max=a[i][j];

return max;

2.【参考答案】int fun(n)或int fun(int n), if (n==1) 3.【参考答案】fprintf(fp,"%d %fn",i,sqrt((double)i));,fclose(fp);,if((fp=fopen(fname,"r"))==NULL) 4.【参考代码】

int i,j=0;

double sum=0,ave;

for(i=0;i

sum=sum+a[i].s;

ave=sum/N;

for(i=0;i

if(a[i].s

b[j++]=a[i];

*n=j;

return ave;

5.【参考答案】t-=1.0/i;或t=t-1.0/i;,return t;或return(t); 6.【参考答案】max= std;或max= std[0];,if(max.age(std+i)).age) max=std[i];,printf("nName : %s, Age : %dn", max.name,max.age); 7.【参考代码】

int i;

float s=0;

for(i=0;i

s+=a[i];

return s/n;

8.【参考答案】double fun(double a,double x0)或float fun(double a,double x0),if(fabs(x1-x0)>0.00001)

9.【参考答案】for (i=0; i< n/2; i++),a[i] = a[n-1-i];a[n-i-1] = t;或a[n-1-i] = t;

10.【参考代码】返回搜狐,查看更多

nt i,j,k=0;

*n=mm*nn;

for(i=0;i

for(j=0;j

b[k++]=s[i][j];

责任编辑:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值