第四周《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 用指针法访问数组元素的主要内容,如果未能解决你的问题,请参考以下文章