飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 3282|回复: 1

编程马拉松(11)动态内存分配

[复制链接]

该用户从未签到

发表于 2007-8-23 07:52:54 | 显示全部楼层 |阅读模式
这里主要说一下动态内存分配
把马拉松10改为,改一下,改在,从键盘输入学生的个数。
输入每个学生的成绩,计算出总分和平均分,按总分进行排序,然后打印输出。要求用,结构体指针。有数学,语文,英语,物理,化学。5个科目。
freesoft:c++ 代码

  1. #include <iOStream>
  2. using namespace std;
  3. struct STU
  4. {
  5.         int id;
  6.         char name[20];
  7.         int yuwen;
  8.         int shuxue;
  9.         int yingyu;
  10.         int wule;
  11.         int huaxue;
  12.         float pingjunf;
  13.         float zongfen;
  14. };

  15. void setdata(STU *s);
  16. void show(STU *s);
  17. void sort(STU *s);
  18. void jisuan(STU *s);
  19. int renshu=0;//声明全局变量(改1)
  20. void main()
  21. {        
  22.         cout<<"请输入学生总数:";//定义指针变量(改2开始)
  23.         cin>>renshu;
  24.         STU *stu;
  25.         stu=new STU [renshu];//动态分配内存(改2完)
  26.         setdata(stu); //依次调用函数进行赋值,计算,排序,显示。
  27.         jisuan(stu);
  28.         sort(stu);
  29.         show(stu);
  30.         delete []stu;//删除动态分配的内存(改3)
  31. }
  32. void show(STU *s)//此函数用于显示信息
  33. {
  34.         int i;
  35.         cout<<"学号  姓名  语文  数学  英语  物理  化学  平均分      总分\n";
  36.         for(i=0;i<renshu;i++)
  37.         {
  38.                 cout
  39.                 <<s[i].id<<"  "
  40.                 <<s[i].name<<"  "
  41.                 <<s[i].yuwen<<"  "
  42.                 <<s[i].shuxue<<"  "
  43.                 <<s[i].yingyu<<"  "
  44.                 <<s[i].wule<<"  "
  45.                 <<s[i].huaxue<<"  "
  46.                 <<s[i].zongfen<<"  "
  47.                 <<s[i].pingjunf<<endl;

  48.         }
  49. }
  50. void jisuan(STU *s)//此函数用于计算总分和平均分
  51. {
  52.         int i;
  53.         for(i=0;i<renshu;i++)
  54.         {
  55.                 s[i].zongfen=(float)(s[i].yuwen+s[i].shuxue+s[i].yingyu+s[i].wule+s[i].huaxue);
  56.                 s[i].pingjunf=(float)(s[i].zongfen/5.0);
  57.         }
  58. }
  59. void sort(STU *s)//此函数用于按总分进行排序
  60. {
  61.         int i,j;
  62.         STU temp;
  63.         for(i=0;i<renshu;i++)
  64.         {
  65.                 for(j=i+1;j<renshu;j++)
  66.                 {
  67.                         if(s[i].zongfen<s[j].zongfen)
  68.                         {
  69.                         temp=s[i];
  70.                         s[i]=s[j];
  71.                         s[j]=temp;
  72.                         }
  73.                 }
  74.         }
  75. }
  76. void setdata(STU *s)//此函数用于添加数据
  77. {
  78.         int i;
  79.         cout<<"请输入"<<renshu<<"位学生的资料\n";
  80.         for(i=0;i<renshu;i++)
  81.         {
  82.                 cout<<"请输入第"<<i+1<<"学生的资料\n";
  83.                 cout<<"学号:";
  84.                 cin>>s[i].id;
  85.                 cout<<"姓名:";
  86.                 cin>>s[i].name;
  87.                 cout<<"语文:";
  88.                 cin>>s[i].yuwen;
  89.                 cout<<"数学:";
  90.                 cin>>s[i].shuxue;
  91.                 cout<<"英语:";
  92.                 cin>>s[i].yingyu;
  93.                 cout<<"物理:";
  94.                 cin>>s[i].wule;
  95.                 cout<<"化学:";
  96.                 cin>>s[i].huaxue;
  97.         }
  98. }

复制代码
PYG19周年生日快乐!
  • TA的每日心情
    开心
    2016-8-5 08:23
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2007-8-23 12:50:12 | 显示全部楼层
    对初学者还是很有用地,支持一下/:good
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表