CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

不记得C的语句怎么写拉,身边也没有C的书,50分求助

楼主binghe7(冰河)2004-05-03 12:54:28 在 C/C++ / C语言 提问

Write   a   database   to   input   student   information   for   a   class   of   up   to   20   students.    
   
  For   each   student,   your   program   should   prompt   the   User   for   two   pieces   of   information:   an   ID   number   and   percentage   mark.  
   
  You   should   perform   range   checking   on   the   entered   mark.    
  Each   student   should   be   allocated   a   grade   based   upon   the   following   grade   definitions:  
  A   >70%  
  B 60-70  
  C 50-59  
  D 40-49  
  E 30-39  
  F <30%  
  The   list   of   Student   ID’s,   marks   and   grades   should   be   printed   out   to   the   screen.  
     
  问题点数:50、回复次数:10Top

1 楼zhouqingyuan(浪帆)回复于 2004-05-03 13:00:53 得分 5

用个switch...case结构好了Top

2 楼binghe7(冰河)回复于 2004-05-03 13:07:27 得分 0

用C写的话需要先定义个结构体吧~把ID,MARKS   定义在里面吧~然后由用户在输入学生信息和成绩哦,控制台输出id,marks   grades吧  
  我不记得C的语句该怎么写拉,那位C用的熟的帮忙完成下吧  
  谢谢Top

3 楼liushuaiboy(标准菜鸟)回复于 2004-05-03 13:40:24 得分 2

呵呵,我很懒Top

4 楼10325(海上的云)回复于 2004-05-03 13:43:54 得分 5

struct   student    
  {int   id;  
    float   mark;  
  }S[20];  
  for(i=0;i++;i<20)  
  {scanf("%d,%f",&S[i].id,&S[i].mark);  
  }  
  Top

5 楼binghe7(冰河)回复于 2004-05-03 13:48:57 得分 0

#include"stdio.h"  
  #define   NUM   20  
  struct   student  
  {  
  char   id[10];  
  int   mark;  
  char   grade;  
  };  
  main()  
  {  
  struct   student   stu[NUM];  
  int   i;  
  for(i=0;i<NUM;i++)  
  {  
  printf("input   id:\n");  
  gets(stu.id);  
  printf("input   mark:\n");  
  gets(stu.mark);  
  switch   (stu.mark){  
  case   stu.mark<30:stu.grade=f;break;  
  case   stu.mark<39:stu.grade=E;break;  
  case   stu.mark<49:stu.grade=D;;break;  
  case   stu.mark<59:stu.grade=C;;break;  
  case   stu.mark<69:stu.grade=B;;break;  
  default:stu.grade=A;break;  
  }  
  }  
  printf("id\t\t\mark\t\tgrade\n\n");  
  for(i=0;i<NUM;i++)  
  printf("%s\t\t%d\t\t%c\n",stu.id,stu.mark,stu.grade);  
  }  
  人呢?这样写可以吗Top

6 楼binghe7(冰河)回复于 2004-05-03 13:50:37 得分 0

哦   ,这样#include"stdio.h"  
  #define   NUM   20  
  struct   student  
  {  
  char   id[10];  
  float   mark;  
  char   grade;  
  };  
  main()  
  {  
  struct   student   stu[NUM];  
  int   i;  
  for(i=0;i<NUM;i++)  
  {  
  printf("input   id:\n");  
  gets(stu.id);  
  printf("input   mark:\n");  
  gets(stu.mark);  
  switch   (stu.mark){  
  case   stu.mark<30:stu.grade=f;break;  
  case   stu.mark<39:stu.grade=E;break;  
  case   stu.mark<49:stu.grade=D;;break;  
  case   stu.mark<59:stu.grade=C;;break;  
  case   stu.mark<69:stu.grade=B;;break;  
  default:stu.grade=A;break;  
  }  
  }  
  printf("id\t\t\mark\t\tgrade\n\n");  
  for(i=0;i<NUM;i++)  
  printf("%s\t\t%f\t\t%c\n",stu.id,stu.mark,stu.grade);  
  }  
  Top

7 楼binghe7(冰河)回复于 2004-05-03 13:59:29 得分 0

#define   NUM   20  
  struct   student  
  {  
  char   id[10];  
  float   mark;  
  };  
  main()  
  {  
  struct   student   stu[NUM];  
  int   i;  
  char   grade;  
  for(i=0;i<NUM;i++)  
  {  
  printf("input   id:\n");  
  gets(stu.id);  
  printf("input   mark:\n");  
  gets(stu.mark);  
  }  
  printf("id\t\t\mark\t\tgrade\n\n");  
  for(i=0;i<NUM;i++)  
  {  
  switch   (stu.mark){  
  case   stu.mark<30:grade=f;break;  
  case   stu.mark<39:grade=E;break;  
  case   stu.mark<49:grade=D;;break;  
  case   stu.mark<59:grade=C;;break;  
  case   stu.mark<69:grade=B;;break;  
  default:grade=A;break;  
  }  
   
  printf("%s\t\t%f\t\t%c\n",stu.id,stu.mark,grade);  
  }  
  Top

8 楼freefalcon(心宇—消失中...)回复于 2004-05-03 14:14:06 得分 38

楼主终于自己写了,自己动手,丰衣足食啊  
   
  问题很多,改了一下  
  #define   NUM   20  
  struct   student  
  {  
  char   id[10];  
  int   mark;  
  char   grade;  
  };  
  main()  
  {  
  struct   student   stu[NUM];  
  int   i;  
  for(i=0;i<NUM;i++)  
  {  
  printf("input   id:\n");  
  scanf("%s",   stu[i].id);  
  printf("input   mark:\n");  
  scanf("%d",   &stu[i].mark);  
  }  
   
  for(i=0;i<NUM;i++)  
  {  
  switch   (stu[i].mark/10)  
  {  
  case   0:  
  case   1:  
  case   2:   stu[i].grade='F';break;  
  case   3:   stu[i].grade='E';break;  
  case   4:   stu[i].grade='D';break;  
  case   5:   stu[i].grade='C';break;  
  case   6:   stu[i].grade='B';break;  
  default:  
  if(stu[i].mark   ==   70)   //这个70真讨要,出题人有毛病  
  stu[i].grade='B';  
  else  
  stu[i].grade='A';  
  }  
   
  printf("%s\t\t%d\t\t%c\n",stu[i].id,stu[i].mark,stu[i].grade);  
  }  
  }Top

9 楼binghe7(冰河)回复于 2004-05-03 14:22:39 得分 0

谢谢楼上的  
  不过For   each   student,   your   program   should   prompt   the   User   for   two   pieces   of   information:   an   ID   number   and   percentage   mark.这句似乎不好让结构体里不能有grade这项吧.  
  还有用gets不可以吗,一定要用scanf()?没怎么用过C写见笑拉  
  #define   NUM   20  
  struct   student  
  {  
  char   id[10];  
  int   mark;  
   
  };  
  main()  
  {  
  struct   student   stu[NUM];  
  int   i;char   grade;  
  for(i=0;i<NUM;i++)  
  {  
  printf("input   id:\n");  
  scanf("%s",   stu[i].id);  
  printf("input   mark:\n");  
  scanf("%d",   &stu[i].mark);  
  }  
   
  for(i=0;i<NUM;i++)  
  {  
  switch   (stu[i].mark/10)  
  {  
  case   0:  
  case   1:  
  case   2:   grade='F';break;  
  case   3:   grade='E';break;  
  case   4:   grade='D';break;  
  case   5:   grade='C';break;  
  case   6:   grade='B';break;  
  default:  
  if(stu[i].mark   ==   70)   //这个70真讨要,出题人有毛病  
  grade='B';  
  else  
  grade='A';  
  }  
   
  printf("%s\t\t%d\t\t%c\n",stu[i].id,stu[i].mark,grade);  
  }  
  }  
  Top

10 楼02051223(chenlei)回复于 2004-05-03 15:03:34 得分 0

我认为楼主开始写的那个程序有可取之处!  
  因为后面的程序减小了问题规模。  
  题目的要求是     分数可以是70.5等非整数。  
  而这是用     ‘%’达不到的。  
   
   
   
   
  哦!  
  你们的代码中用  
  switch   (stu[i].mark/10)  
  {  
  case   0:  
  case   1:  
  case   2:   grade='F';break;  
  case   3:   grade='E';break;  
  case   4:   grade='D';break;  
  case   5:   grade='C';break;  
  case   6:   grade='B';break;  
  default:  
  if(stu[i].mark   ==   70)   //这个70真讨要,出题人有毛病  
  grade='B';  
  else  
  grade='A';  
  }  
  是错的。  
  如果输入的是小数呢?  
  结果为A或B!小数有10.5,20.5,50.5,60.5,80.5等等。显然与问题的需求不符!  
  如我在最前面所说的用‘%’也不能完全达到要求!但明显比用‘/’好。  
  没有逻辑错误!  
  建议用把  
  switch   (stu.mark){  
  case   stu.mark<30:stu.grade=f;break;  
  case   stu.mark<39:stu.grade=E;break;  
  case   stu.mark<49:stu.grade=D;;break;  
  case   stu.mark<59:stu.grade=C;;break;  
  case   stu.mark<69:stu.grade=B;;break;  
  default:stu.grade=A;break;  
  }  
  修改一下。  
  Top

相关问题

  • c#语句?
  • Asp.net/C#/Sql语句问题?
  • 一句vb语句转C#
  • 关于C/C++中语句问题
  • PRO*C/C++的SQL语句问题
  • 这几个DELPHI语句,怎么转换成C++BUILDER的语句?
  • Delphi语句翻C++Builder语句,送分题!急急急!
  • C#的DllImport语句如何翻译成VB.NET的对应语句?
  • C#是for语句中间结束循环是用什么语句?
  • ▲▲▲▲▲with do begin end 语句如何转化为C++Builder语句?▲▲▲▲▲

关键词

  • student
  • grade
  • mark
  • information

得分解答快速导航

  • 帖主:binghe7
  • zhouqingyuan
  • liushuaiboy
  • 10325
  • freefalcon

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo