test02 【Day2.7】

test02 【Day2.7】

目录

  • test02 【Day2.7】
        • 1.程序填空
        • 2.程序修改
        • 3.程序设计

1.程序填空

#include 
#include 
#define   N   10
double fun(double  x[],double  *y)
{ int  i,j;    double  av;
/**********found**********/av=0.0;                               /*赋初值av=0.0*/
/**********found**********/for(i=0; i<N; i++)  av=av+ a[i]/N;                    /*求平均值方法:  1.同分母的分子拆分求和;  2.总和 / 项数. */for(i=j=0; i<N; i++)
/**********found**********/if(x[i]>av)  y[j++]= x[i];        /* for循环判断大于均值的项,并赋值给数组y中对应下标,同时y要随着i自增; */y[j]=-1;                 /*!!!     思考:存放在最后1项,用于判断终止,不会产生越界*/return  av;
}
void main()
{ int  i;    double  x[N],y[N];for(i=0; i<N; i++){ x[i]=rand()%50; printf("%4.0f ",x[i]);}      //生成0-49的随机数,并赋值给数组xprintf("\n");                           printf("\nThe average is: %f\n",fun(x,y));for(i=0; y[i]>=0; i++)  printf("%5.1f ",y[i]);       /* !!! 注意:循环终止条件,y[i]>=0 ,数组y中最后一项为-1 */printf("\n");
}

总结💥:

	 1.数组求平均值:          同分母,分子循环遍历求和,再求均值; 2. y[j++] = x[i]         传值给数组y的元素,同时数组项自增。3. 判定y数组的终止条件:   y中最后一项为:**-1**,即y[j]=-1。

2.程序修改

在这里插入图片描述

#include  
#include  
#include  
/*************found**************/
double fun (int m)              /*函数定义:返回值类型 函数名(参数)*/
{ double y=0, d;int i;
/*************found**************/for(i=100,i<=m,i+=100)       /*细节题,for循环中表达式用“ ; ”分号隔开*/{d=(double)i*(double)i;y+=1.0/d;}return(y);
}
void main()
{ int n=2000;system("CLS");                      //清除屏幕内容printf("\nThe result is %1f\n",fun(n));
}

Analy:
【考点】:函数定义,for循环语句;
【小结】:
①、1/m*m多项求和的实现:

for(i=100,i<=m,i+=100)     {d=(double)i*(double)i;y+=1.0/d;}

②、
system("CLS"); /引入“#include 头文件”,清屏/
system("pause"); /引入“#include 头文件调用DOS命令集合的暂停命令,防止C/C++程序运行时,一闪而过。/

3.程序设计

在这里插入图片描述

#include
#include
#include
#include
#define N 10
typedef struct ss
{ char num[10]; int s;
} STU;
/*void fun(STU a[], STU *s)
{int i;*s=a[0];for(i=1;is)*s=a[i];}
}*/
void main()
{ FILE *wf;STU 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;system("CLS");printf("*****The original data*****\n");for(i=0;i<N;i++) printf("No=%s Mark=%d\n", a[i].num,a[i].s);fun(a,&m);printf("*****THE RESULT*****\n");printf("The lowest :%s, %d\n",m.num,m.s);
/******************************/wf=fopen("out.dat","w");fprintf(wf,"%s, %d",m.num,m.s);fclose(wf);
/*****************************/
}

Analy:
[解题思路]
1.先假定结构体数组中第一个元素a[0]为最小值*/
2.遍历整个结构体数组,如果发现循环过程中有比假定最小值a[0]更小的值,就将指针s指向该元素。

void fun(STU a[], STU *s)
{int i;*s=a[0];for(i=1;i<N;i++){    /*假定a[0]为最小值后,循环可以直接从1开始*/if(a[i].s<s->s)*s=a[i];}
}

Less interests,More interest.1


  1. 少一些功利主义的追求,多一些不为什么的坚持! ↩︎


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部