各位大神谁能帮我改成以指针形式显示
程序代码:
#include <stdio.h>//""它的查找路径是先到本地目录下查找该头文件,如果没有,就到系统目录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<sum;i++) { printf("学生学号:%d",student[i].num); printf("学生姓名:%s",student[i].name); printf("学生平时成绩:%.1f",student[i].normal_score); printf("学生期末成绩:%.1f",student[i].final_score); printf("学生总评成绩:%.2f",student[i].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<sum;i++) { ave_score=student[i].normal_score*normalpercent/100+student[i].final_score*fianlpercent/100; student[i].ave_score=ave_score; } //2、统计各分数段人数 for (i=0;i<sum;i++) { if (student[i].ave_score<=59.99 && student[i].ave_score>0.00) { fsdrs[0]=fsdrs[0]+1;//fsdrs[0]++ } if (student[i].ave_score>59.99 && student[i].ave_score<=79.99) { fsdrs[1]=fsdrs[1]+1;//fsdrs[1]++ } if (student[i].ave_score>79.99 && student[i].ave_score<=89.99) { fsdrs[2]=fsdrs[2]+1;//fsdrs[2]++ } if (student[i].ave_score>89.99 && student[i].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[i][j]=' '; } } //画出x轴和y轴 for (i=0;i<39;i++) { virtualscreen[30][i]='-'; } virtualscreen[30][39]='X'; for (i=1;i<30;i++) { virtualscreen[i][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[i][j]='*'; } } } } //输出柱状图型 for (i=0;i<31;i++) { for (j=0;j<40;j++) { printf("%c",virtualscreen[i][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(); }