C结构体

编写一个程序满足下面的要求。
a.外部定义一个有两个成员的结构模板name:一个字符串储存名,一个 字符串储存姓。
b.外部定义一个有3个成员的结构模板student:一个name类型的结构, 一个grade数组储存3个浮点型分数,一个变量储存3个分数平均数。
c.在main()函数中声明一个内含CSIZE(CSIZE = 4)个student类型结构的 数组,并初始化这些结构的名字部分。用函数执行g、e、f和g中描述的任 务。
d.以交互的方式获取每个学生的成绩,提示用户输入学生的姓名和分 数。把分数储存到grade数组相应的结构中。可以在main()函数或其他函数中 用循环来完成。
e.计算每个结构的平均分,并把计算后的值赋给合适的成员。
f.打印每个结构的信息。
g.打印班级的平均分,即所有结构的数值成员的平均值


#include <stdio.h>
#define CSIZE 4
struct name{
    char  FName[20];
    char LName[20];
};
struct student
{
    struct name Name;
    float grade[3];
    int avg;
};
void print(struct student * p);
int main()
{

#if 0
    char a;
    scanf("%c",&a);
    printf("--%c\n",a);

    char arr[20];
    scanf("%s",arr);
    printf("----%s\n",arr);
#endif

    struct student Mst[CSIZE], * p = Mst;


   // printf("-----%d\n",Mst[0].Name.FName);
    int i ,j,k,sum;
    for(i = 0; i < CSIZE; i++)
    {
        printf("please enter the %d student's message:\n",i+1);
        printf("please enter the first name of the %d student:\n",i+1);
        scanf("%s",Mst[i].Name.FName);//laoli

        //printf("FName:%s\n",Mst[i].Name.FName);

        printf("please enter the last name of the %d student:\n",i+1);
        scanf("%s",Mst[i].Name.LName);
        printf("\nplease enter %d's three grades:\n",i+1);
        sum = 0;
        for(j = 0; j < 3; j++)
        {
            scanf("%f",&Mst[i].grade[j]);
            //printf("%f\t",Mst[i].grade[j]);
            //for(k = 0; k < 4; k ++)
            //sum[k] += (Mst[i].grade[j]);
            sum += Mst[i].grade[j];
            Mst[i].avg = sum/ (j+1);
                //sum += Mst[i].grade[j];

        }
        //printf("average:%d\n",Mst[i].avg);
        //Mst[i].avg = sum[i]/3;
        //printf("%d\n",Mst[i].avg);
    }

    print(p);
    return 0;
}
void print(struct student * p)
{
    int i,j,k;
    for(i = 0; i < CSIZE;i++)
    {
        printf("%s %s's grade is :",p[i].Name.FName,p[i].Name.LName);
        for(k = 0; k < 3; k++)
            printf("  %f ",(p+i)->grade[k]);
        printf("\neverage is:%d\n",(p+i)->avg);

    }
}





特别注意:
1.scanf函数的用法,不能在输入的后面加上’\n’或者是’ '空格,否则会导致输入失败的情况。
2.在选择存储方式时一定要先想好存储的方式,利用哪一种存储方式更为合适。
3.学会自己检测漏洞,找出bug.

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值