C语言结构体当中数组的遍历、求最大最小值和简单的计算
最近我的一个朋友问我,使用结构体来计算数组当中的数值的时候,要么报错,要么运行的时候出现不是数组当中的值(图已欠费)
废话不多说,直接干货走起(算不上干货吧!)
代码按照顺序排列,直接使用也是可以的哈!
1首先定义一个结构体
#include <stdio.h>
/*定义一个结构体
结构体的使用:
*/
struct stu
{
int score;
char *name;
};
2写主函数里面的东西(简单的一mian到底)这里是获取输入的数据和输出
//主函数
int main()
{
//定义所需要的变量
int i;
struct stu shuzu[3];
struct stu max;
struct stu min;
struct stu sum;
//提示输入名字和成绩
printf("请输入学生的名字和成绩\n");
//获取输入的数据
//将定义好的变量使用结构体名+点+变量名
for ( i = 0; i < sizeof(shuzu)/sizeof(shuzu[0]); i++)
{
printf("请输入第%d个学生的名字:\n",i+1);
//指针需要开辟一个空间,不然就会成为一个野指针
shuzu[i].name = (char *)malloc(256);
scanf("%s",shuzu[i].name);
printf("请输入第%d个学生的成绩:\n",i+1);
scanf("%d",&shuzu[i].score);
}
//打印输出获取到的名字和成绩
printf("学生的名字和成绩是:\n");
for ( i = 0; i < sizeof(shuzu)/sizeof(shuzu[0]); i++)
{
printf("%s,%d\n",shuzu[i].name,shuzu[i].score);
}
3如果需要寻找最大最小值就写上
//寻找最大最小值
max = min = shuzu[0];
for(i = 0;i < sizeof(shuzu)/sizeof(shuzu[0]);i++)
{
if(max.score < shuzu[i].score)
{
max = shuzu[i];
}
if(min.score > shuzu[i].score)
{
min = shuzu[i];
}
}
printf("最大值是:%s:%d\n",max.name,max.score);
printf("最小值是:%s:%d\n",min.name,min.score);
4要是需要计算总数和遍历数组以及计算平均数也可以写上哈!
//计算平均数
float pjs;
sum = shuzu[0];
//数组的遍历
for(i = 0;i < 3;i++ )
{
if(sum.score = shuzu[i].score)
{
//将遍历的数组数据每一项相加
sum.score = sum.score + shuzu[i].score;
}
//最后使用sizeof计算平均数
pjs = sum.score/(float)(sizeof(shuzu)/sizeof(shuzu[0]));
}
//打印最终结果
printf("总数是:%d\n",sum.score);
printf("平均数是:%f\n",pjs);
return 0;
}
5输出最终的结果长这个样哈!
本人也是新手一枚,还不算是入门,简单分享一下自己的学习笔记,希望有所帮助!有好的建议欢迎留言指正哈!
更多推荐
C语言结构体当中数组的遍历、求最大最小值和简单的计算
发布评论