标题:這個程序算是用指針寫的嗎?
只看楼主
lrx2014
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2014-4-11
结帖率:70%
已结贴  问题点数:20 回复次数:1 
這個程序算是用指針寫的嗎?
#include<stdlib.h>
void main()
{
    struct grade
    {
        int C;
        char name[20];
        char course[20];
        int score;
        char degree;
        int no;
    };
    struct grade *student;
    int i;
    int num;
    char degree[][10] = {"不及格", "及格", "中等", "良好", "优秀"};
    int statistics[5] = {0};
    int distribution[11] = {0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 4};
    float sum = 0.0;
    printf("请输入学生人数 ==>");
    scanf("%d",&num);
    student=(struct grade *)malloc(num *sizeof(struct grade));
    if(!student)
    {
        printf("内存分配失败 !\n");
        exit(1);
    }
    for(i=0;i<num;i++)
    {
      //printf("学生编号: %d\n",i + 1);     
      printf("请输入学生编号. ==> ");
      scanf("%s",&student[i].no);
      printf("请输入学生姓名. ==> ");
      scanf("%s",&student[i].name[i]);      
      printf("请输入你要查询的课程. ==> ");
      scanf("%s",&student[i].course );
      printf("请输入成绩. ==> ");
      scanf("%d",&student[i].C);     
    }
        for (i = 0; i < num; i++)
   {
       sum += student[i].C;
     }

     printf("\n平均分:%.2f\n\n", sum / num);
    for (i = 0; i < num; i++)
        statistics[distribution[(int)(student[i].C / 10)]]++;

    printf("等级统计:\n");
    for (i = 0; i < 5; i++)
    printf("%s:\t%d人\t%.1f%%\n", degree[i], statistics[i], 100 * (float)statistics[i]/num);
}
搜索更多相关主题的帖子: include course 
2014-05-10 09:52
top398
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:2
帖 子:427
专家分:857
注 册:2014-5-2
得分:20 
可以这么说,因为你用到了结构的指针。
这和结构数组相当类似(用法上也是结构数组的形式)。
用 C99 语法来写,则可以将 student 声明为:
    struct grade student[num];
连malloc 和后面的判断都可以省掉了。
2014-05-10 10:01



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-431296-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.475854 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved