test02 【Day2.7】

本文通过三个实例介绍了C语言中的数组操作,包括求平均值、筛选大于平均值的元素,以及寻找结构体数组中的最小值。在程序修改部分,实现了1/m*m的多项求和。此外,还涉及到了文件操作,将找到的最小值写入文件。这些实例涵盖了数组、函数、条件判断及文件操作等基础知识。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

test02 【Day2.7】

1.程序填空

#include <stdlib.h>
#include <stdio.h>
#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的随机数,并赋值给数组x
  printf("\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  <stdlib.h>
#include  <conio.h>
#include  <stdio.h>
/*************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 <conio.h>头文件”,清屏/
system("pause"); /引入“#include <windows.h>头文件调用DOS命令集合的暂停命令,防止C/C++程序运行时,一闪而过。/

3.程序设计

在这里插入图片描述

#include<stdio.h>
#include<string.h>
#include<conio.h>
#include<stdlib.h>
#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;i<N;i++){
  	if(a[i].s<s->s)
  		*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. 少一些功利主义的追求,多一些不为什么的坚持! ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值