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语言结构体当中数组的遍历、求最大最小值和简单的计算