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

  #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<sum;i++)< p="">

  {

  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++)< p="">

  {

  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++)< p="">

  {

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

  }文章来源:http://www.jinriwujin.com/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值