c语言图形显示转换为指针显示

作者在 2014-12-12 11:07:25 发布以下内容

#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();
}

麻烦各位大神帮我给成以指针形式显示

默认分类 | 阅读 953 次
文章评论,共0条
游客请输入验证码
浏览1965次
文章分类
文章归档
最新评论