| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 539 人关注过本帖
标题:如何把数组改为指针呢,望各位大神指教,拜托!!!
只看楼主 加入收藏
bisiqi
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2014-12-12
结帖率:100%
收藏
 问题点数:0 回复次数:1 
如何把数组改为指针呢,望各位大神指教,拜托!!!
#include //""它的查找路径是先到本地目录下查找该头文件,如果没有,就到系统目录system32下查找
                //<>它的查找路径是先到系统目录下查找,如果没有,就到本地目录下查找


#define student_total 30//预编译指令,定义一个常量值
struct Student//定义学生数据类型(结构体)
{
    int num;//学生学号
    char name[8];//学生姓名
    float normal_score;//平时成绩
    float final_score;//期末成绩
    float ave_score;//总评成绩=normal_score*normal_i+fianl_score*fianl_i
};

//接收学生信息函数定义
int accept_students(struct Student student[] )
{
    char flag[1];//表示用户输入学生信息结束标志符号flag==y时候结束用户输入,如果未结束输入n
    int sum=0;
    while (flag[0]!='y')
    {
        
        printf("请输入学生学号:");
        scanf("%d",&(student[sum].num));
        printf("请输入学生姓名:");
        scanf("%s",&(student[sum].name));
        printf("请输入学生平时成绩:");
        scanf("%f",&(student[sum].normal_score));
        printf("请输入学生期末成绩:");
        scanf("%f",&(student[sum].final_score));
        printf("提示:如果输入完毕请输入小写字符y,否则请输入小写字符n\n");
        scanf("%s",&flag);
        sum=sum+1;
    }
    return sum;
}


//输出学生详细信息函数
void show_students(struct Student student[],int sum)
{
    int i;
    for (i=0;i    {
        printf("学生学号:%d",student.num);
        printf("学生姓名:%s",student.name);
        printf("学生平时成绩:%.1f",student.normal_score);
        printf("学生期末成绩:%.1f",student.final_score);
        printf("学生总评成绩:%.2f",student.ave_score);
        printf("\n");
    }   
}
//计算学生总评成绩和统计各分数段人数
void datacalculate(struct Student student[],int fsdrs[],int sum,int normalpercent,int fianlpercent)
{
    //1、首先计算学生总评成绩
    int i;
    float ave_score;
    for (i=0;i    {
        ave_score=student.normal_score*normalpercent/100+student.final_score*fianlpercent/100;
        student.ave_score=ave_score;
    }
    //2、统计各分数段人数
    for (i=0;i    {
        if (student.ave_score<=59.99 && student.ave_score>0.00)
        {
            fsdrs[0]=fsdrs[0]+1;//fsdrs[0]++
        }
        if (student.ave_score>59.99 && student.ave_score<=79.99)
        {
            fsdrs[1]=fsdrs[1]+1;//fsdrs[1]++
        }
        if (student.ave_score>79.99 && student.ave_score<=89.99)
        {
            fsdrs[2]=fsdrs[2]+1;//fsdrs[2]++
        }
        if (student.ave_score>89.99 && student.ave_score<=100.00)
        {
            fsdrs[3]=fsdrs[3]+1;//fsdrs[0]++
        }
    }
}
void drawchart(int fsdrs[])
{
    char virtualscreen[31][40];
    int i,j,k,n;
    //初始化虚拟屏幕
    for (i=0;i<31;i++)
    {
        for (j=0;j<40;j++)
        {
            virtualscreen[j]=' ';
        }
    }
    //画出x轴和y轴
    for (i=0;i<39;i++)
    {
        virtualscreen[30]='-';
    }
    virtualscreen[30][39]='X';
    for (i=1;i<30;i++)
    {
        virtualscreen[0]='|';
    }
    virtualscreen[0][0]='Y';
    //画出各分数段柱状图
    for (k=0;k<4;k++)
    {
        if (fsdrs[k]>0)
        {
            for (i=31-fsdrs[k]-1;i<30;i++)
            {
                for (j=k*8+4+1,n=0;n<4;j++,n++)
                {
                    virtualscreen[j]='*';
                }
            }
        }
    }
    //输出柱状图型
    for (i=0;i<31;i++)
    {
        for (j=0;j<40;j++)
        {
            printf("%c",virtualscreen[j]);
        }
        printf("\n");
    }
}

void main()
{
   
    int normal_i,final_i;//成绩百分比,normal_i表示平时成绩百分比,fianl_i表示期末成绩百分比
    /*int student_total=0;//学生总人数*/
    struct Student student[student_total];//定义学生结构体数组
    int sum=0;//表示用户实际输入学生总人数
    int fsdrs[4]={0};//表示分数段人数
    int virtualscreen[31][40];
   
    printf("请输入计算百分比:");
    scanf("%d%d",&normal_i,&final_i);//接收计算比例
    //1、接收学生信息
    sum=accept_students(student);
    //要计算学成的成绩信息和分布
    //1、计算学生总评成绩
    //2、统计各分数段人数(a、不及格 b、60-80 一般 c、80-90 良好 d 90-100 优秀)
    datacalculate(student,fsdrs,sum,normal_i,final_i);
    printf("-----------------输出接收学生实际人数------------------\n");
    printf("sum=%d\n",sum);
    printf("-----------------输出学生详细信息------------------\n");
    //2、输出接收学生详细信息
    show_students(student,sum);
    printf("-----------------输出学生总评成绩各分数段总人数------------------\n");
    printf("不及格人数=%d,一般人数=%d,良好=%d,优秀=%d\n",fsdrs[0],fsdrs[1],fsdrs[2],fsdrs[3]);
    //4、画出学生成绩分布图
    printf("-----------------输出学生成绩分布直方图---------------------\n");
    drawchart(fsdrs);
   
    getch();
}
搜索更多相关主题的帖子: include 期末成绩 结构体 如何 信息 
2014-12-16 09:43
梦里云归
Rank: 2
等 级:论坛游民
帖 子:17
专家分:12
注 册:2014-9-20
收藏
得分:0 
定义两个结构体,一个存储学生信息,一个指向这个结构体的学生数据域。
//存储学生信息结构体
typedef struct Stu          //定义学生数据类型(结构体)
{
     int num;//学生学号
    char name[8];//学生姓名
    float normal_score;//平时成绩
    float final_score;//期末成绩
    float ave_score;//总评成绩=normal_score*normal_i+fianl_score*fianl_i
 }Student;
//储存学生信息单链表节点类型
typedef struct Node
{
    Student stu;//学生信息域
    struct Node *next;//指向下一个节点的指针
}StudentNode;
然后创建链表替换数组即可。
2014-12-16 18:07
快速回复:如何把数组改为指针呢,望各位大神指教,拜托!!!
数据加载中...
 
   



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

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