对于学生成绩的封装(数组学习的总结)
一,对于数组内容的汇总
1. 没有初始化的数组,仅申请了100个整型数的内存空间,最好要初始化。
eg:int array[100]={0}
2. 如果数组中三个元素,那么分别用小标法来访问。
eg:array2[0] / 1
array2[1] /2
array2[2] /3
3. 数组中的括号【】只有定义一个数组的时候,才能表示大小,其余任何情况,都表示用下表法来标记访问数组。
4. 数组 是什么?
- (1)数组是数据的集合
(2)数组的数据是同类型的
(3)数组地址是连续
5. 形式参数中,虽然写的是一个数组的样子,中括号中数组的大小是无效的。
eg:void arrayPrintf(int datas[3],int cnt)
6. C语言中的cnt的含义
- (1)假设,cnt=8,则printf(“cnt=%d\n”,cnt) 的意思就是printf(“cnt=8\n”),\n的意思是换行,该语句的执行结果是在屏幕上输出cnt=8,然后换行。
7. 为什么需要数组?
- (1)协议
- (2)只需要大量数据不关心数字名称的时候
eg:计算0~100数据和 - (3)学生成绩管理
- (4) 地址连续
8. 数组的基本使用
- (1)数组的定义:类型;数组名;数组大小;int array [10]
- (2)循环的方式遍历数组
9. 数组和函数
- 实际参数的表示方式
- (1)数组当作参数,传递的是数组的首地址
- (2)第一个数组元素的地址
- (3)数组名
二. 学生成绩封装
#include <stdio.h>
#include <stdlib.h>
void intscores(int datas[],int size)
{
int i;
for(i=0;i<size;i++){ // 0 1 2 3 4 5 6 7 8 9
//2.1.提示用户输入第多少个数
printf("请输入第%d个学生的分数: \n",i+1);
//2.2.获取用户的输入scanf
scanf("%d",&datas[i]);
if(datas[i]>100 || datas[i]<0){ //判断成绩 ,||代表的是或者的意思
printf("你好恶心,哪里有这种神奇的分数\n");
printf("退出程序,我的程序不给傻逼用\n");
system("pause");
exit(-1); //退出程序
}
}
}
2.1 这一段代码 主要定义了datas和size这两个函数
void printfScores(int datas[],int size)
{
int i;
for(i=0;i<size;i++){
printf("第%d个学生的成绩是:%d\n",i+1,datas[i]);
}
}
2.2 提示用户输入成绩
int getMax(int datas[],int size)
{
int i;
int max;
max = datas[0];
for(i=0;i<size;i++){
//printf("第%d个数据是:%d\n",i+1,scores[i]);
if(max < datas[i]){
max = datas[i];
}
}
printf("考最高分的是:%d\n",max);
return max;
}
int getMin(int datas[],int size)
{
int i;
int min;
min = datas[0];
for(i=0;i<size;i++){
//printf("第%d个数据是:%d\n",i+1,scores[i]);
if( min > datas[i]){
min = datas[i];
}
}
printf("考最低分的是:%d\n",min);
return min;
}
float getAverage(int datas[],int size)
{
int i;
int total = 0;
float average;
average = datas[0];
for(i=0;i<size;i++){
//total += datas[i];
total =total+datas[i];
}
//5.2.求平均值
average = (float)total/10;
//6.输出结果
printf("学生的平均成绩是:%f\n",average);
return average;
}
2.3 这段代码主要注意int函数和float函数的使用区别
- int型函数返回整型数据
- void是不返回任何数据的
- 一定写完后要检查那些数据是用返回值的那些是没有的
int main()
{
int scores[10];
int len;
int max;
int min;
float average;
len = sizeof(scores)/sizeof(scores[0]); //数据大小
//1.初始化数组
intscores(scores, len);
//1.1打印数据
printfScores(scores, len);
//2.找到最高分
max = getMax(scores,len);
//3.找到最低分
min = getMin(scores,len);
//4.算出平均分
average = getAverage(scores,len);
//5.输出结果
system("pause");
return 0;
}
最后的main函数可以清晰的看到这个代码的过程
- 首先确定数据大小,其次定义分数
三.总结
- 学到数组这一部分可以对于简单代码进行一个封装, 掌握了函数和数组的结合,接下来继续学习指针部分
师承上官可编程 陈立臣老师