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

Posted weixin_35827498

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第四周《C语言及程序设计》实践项目22 用指针法访问数组元素相关的知识,希望对你有一定的参考价值。

【项目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行的代码,感觉就是一个字:爽!


以上是关于第四周《C语言及程序设计》实践项目22 用指针法访问数组元素的主要内容,如果未能解决你的问题,请参考以下文章

第四周《C语言及程序设计》实践项目5 认识递归

第四周《C语言及程序设计》实践项目39 问题求解——求素数

第四周《C语言及程序设计》实践项目2 模块化程序设计及C语言中的函数

第四周《C语言及程序设计》实践项目11 体验结构体

第四周《C语言及程序设计》实践项目11 体验结构体

第四周《C语言及程序设计》实践项目16 数组的引入