如何以指针形式显示呢

作者在 2014-12-15 10:23:46 发布以下内容
#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(); 
}
默认分类 | 阅读 996 次
文章评论,共0条
游客请输入验证码
浏览1930次
文章分类
文章归档
最新评论