第四周《C语言及程序设计》实践项目22 用指针法访问数组元素

来源:互联网 发布:网络分线器怎么用 编辑:程序博客网 时间:2024/05/29 17:07

【项目1-翻转数组】

/*   * Copyright (c) 2016, CSDN学院   * All rights reserved.   * 文件名称:【项目1-翻转数组】.cpp   * 作    者:张易安   * 完成日期:2016年 9 月 8 日   * 版 本 号:v1.0   *   * 问题描述:下面的程序的输出为10 9 8 7 6 5 4 3 2 1。也就是说,调用reverse(b,10);后,b数组中的元素正好“翻转”过来了。请定义reverse函数,实现这个功能。 */ #include<stdio.h>void reverse(int a[],int n);int main(){int b[10]={1,2,3,4,5,6,7,8,9,10};int i;reverse(b,10);for(i=0;i<10;i++){printf("%d\t",b[i]);}return 0; } void reverse(int a[],int n) { int t,i; for(i=0;i<n/2;i++)//看的算法就头疼!有时间再看看  { t=a[i]; a[i]=a[n-1-i]; a[n-1-i]=t; } }
运行结果


【项目2 - 成绩处理函数版】

/*   * Copyright (c) 2016, CSDN学院   * All rights reserved.   * 文件名称:【项目2 - 成绩处理函数版】.cpp   * 作    者:张易安   * 完成日期:2016年 9 月 8 日   * 版 本 号:v1.0   *   * 问题描述:  在数组score中将要存储了某小组C程序设计的成绩,请设计实现下面的各功能函数,并在main函数中调用,组合成一个完整的应用:(1)输入小组人数及成绩,要保证成绩在0-100之间;(2)输出该小组的最高成绩、最低成绩、平均成绩;(3)输出考得最高成绩和最低成绩的同学的人数;(4)输出考得最高成绩和最低成绩的同学的学号(设数组下标即学号,可能有相同的成绩)。(5)求出所有同学成绩的标准偏差,标准偏差公式为,其中为样本(即某同学成绩),为均值(前面已经求出),为样本数目; */#include<stdio.h>#include<math.h>void input_score(int s[],int n);int get_max_score(int s[],int n);int get_min_score(int s[],int n);double get_avg_score(int s[],int n);double get_stdev_score(int s[],int n);int count(int x,int s[],int n);void output_index(int x,int s[],int n);int main(){int score[50];int num;int max_score,min_score;printf("小组有多少名同学?");scanf("%d",&num);printf("请输入学生成绩:\n");input_score(score,num);max_score=get_max_score(score,num);printf("最高成绩为: %d,共有 %d人\n",max_score,count(max_score,score,num));min_score=get_min_score(score,num);printf("最低成绩为: %d,共有 %d人\n",min_score,count(max_score,score,num));printf("平均成绩为: %.2f\n",get_avg_score(score,num));printf("标准偏差为: %.2f\n",get_stdev_score(score,num));printf("获最高成绩的学生(学号)有:");output_index(min_score,score,num);printf("\n");return 0;  }  /*input_score函数的功能是输入小组的成员成绩入口参数:    s-存放成绩的数组n—学生人数返回值:无*/void input_score(int s[],int n){int i;for(i=1;i<=n;i++)  do  {printf("请输入第%d 位同学的成绩:",i);scanf("%d",&s[i]);  }  while(s[i]<0||s[i]>100);    return; } /*get_max_score函数的功能是求出最大成绩输入参数:    s-存放成绩的数组n-学生成绩返回值:max*/int get_max_score(int s[],int n){int i,max;max=-1;for(i=1;i<=n;i++){if(max<s[i])  max=s[i];}return max; } /*get_min_score函数的功能是输出最小成绩输入参数:     s-存放成绩的数组 n-学生成绩 返回值:min*/int get_min_score(int s[],int n){int i,min;min=999;for(i=1;i<=n;i++){if(min>s[i]){min=s[i];}}return min; } /*get_avg_score函数的功能是求出平均数输出参数:      s-存放成绩的数组  n-学生成绩返回值:平均数 */double get_avg_score(int s[],int n){int i;double avg,sum;sum=0;for(i=1;i<=n;i++){sum+=s[i];}avg=sum/n;return avg;} /* get_stdev_score函数的功能是求出num同学的标准偏差 入口参数:    s-存放成绩的数组n-学生人数返回值:标准偏差 */double get_stdev_score(int s[],int n){double sum=0,avg,x;int i;avg=get_avg_score(s,n);//这为什么不可以写成score(s[],n)呢?那个返回值还有些没有完全搞懂,这个函数的运用也是 for(i=1;i<=n;i++){x=s[i]-avg;sum+=x*x;}return sqrt(sum/(n-1)); }  /*count函数的功能是返回值s数组中为m的元素的个数入口参数:      m-要查找计数的值      s-存放成绩的数组  n-学生人数返回值:m出现的数目*/int count(int m,int s[],int n){int icount=0;int i;for(i=1;i<=n;i++){if(s[i]==m)  icount++;}return icount; } /*output_index函数的功能是输出数组中值为m的元素的下标入口参数:  m-要找的值  s-存放成绩的数组  n-学生人数返回值:无*/void output_index(int m,int s[],int n){int i;for(i=1;i<=n;i++){if(s[i]==m)  printf("%d",i);}return; }
运行结果



心得

头一次写快200行的代码,感觉就是一个字:爽!


0 0