当前位置:编程学习 > C/C++ >>

求C++一个综合训练的代码!急

C语言综合训练是为了提高学生综合使用本学期我们所学的C语言知识编写大型程序的能力,了解大型程序设计的开发步骤,以上机为主,每个学生按照要求使用C语言设计一个大型程序,并提供相关的设计文档和源程序,从网站提交。

二、C语言综合训练程序设计要求
        已知在磁盘上有一个文本文件(stuin.txt),此文件存放了一组学生的成绩信息,按照如下格式存放: 
            1001 stuname1 89 
            1002 stuname2 78 
            1003 stuname3 60 
             ...... 
            1100 stuname100 87 
        请按照如下要求编写程序: 
        a. 定义一个结构体类型数组,结构体类型含有学号、姓名和成绩三个域;
        b.  将文本文件的内容读入到结构体数组中;
        c.  显示成绩最高的人的学号、姓名和成绩(如果有相同的人要全部显示);
        d.  显示平均成绩、高于、低于和等于平均成绩的人数;
        e.  显示成绩为优秀(90~100)、良好(80~89)、中等(70~79)、及格(60~69)、不及格(0~59)的人数和所占百分比;
        f.  将以上显示的信息存放到stuout.txt文件中; 

三、C语言综合训练设计报告要求
        a. 结合教材第二章的内容,写出本次综合训练的分析文档;
        b. 文档要求以WORD排版,语言简练,条理清楚;
        c. 测试过程中遇到的主要问题及采取的解决措施;
        d.  最后写出本次设计的个人总结;
        e.  文档以“设计报告.DOC”名字保存。
答案:#include "iostream"
using namespace std;


struct Student
{
 int xuehao;
 char name[20];
 int chengji;
};


int Open(struct Student Stu[100])
{
 FILE *fp;
 char ch;
 int temp = 0, i = 0, j = 0;
 fopen_s(&fp, "stuin.txt", "r");
 Stu[i].xuehao = 0;
 Stu[i].chengji = 0;

 while (fread(&ch, sizeof (char), 1, fp) != 0)
 {
  if (ch != ' ' && ch != '\n')
  {
   if (temp == 0)
   {
    Stu[i].xuehao = Stu[i].xuehao * 10 + ch - '0';
   }
   else if (temp == 1)
   {
    Stu[i].name[j] = ch;
    j++;
   }
   else if (temp == 2)
   {
    Stu[i].chengji = Stu[i].chengji * 10 + ch - '0';
   }
  }
  else
  {
   temp++;
   if (temp == 2)
   {
    Stu[i].name[j] = '\0';
    j = 0;
   }
   else if (temp == 3)
   {
    temp = 0;
    i++;
    Stu[i].xuehao = 0;
    Stu[i].chengji = 0;
   }
  }
 }

 fclose(fp);
 return i;
}


void Show(struct Student Stu[100], int num)
{
 int temp = 0;
 int k = 0;
 for (int i = 0; i < num; i++)
 {
  if (Stu[i].chengji > temp)
  {
   temp = Stu[i].chengji;
  }
 }
 for (int i = 0; i < num; i++)
 {
  if (Stu[i].chengji == temp)
  {
   k++;
  }
 }
 
 cout << "成绩最高的有 " << k << " 人" << endl;

 for (int i = 0; i < num; i++)
 {
  if (Stu[i].chengji == temp)
  {
   
   cout << Stu[i].xuehao << "\t" << Stu[i].name << "\t" << Stu[i].chengji << endl;
  }
 } 
}
void Showmid(struct Student Stu[100], int num)
{
 int temp = 0, high = 0, low = 0, equal = 0;
 for (int i = 0; i < num; i++)
 {
  temp += Stu[i].chengji;
 }
 temp /= num;
 for (int i = 0; i < num; i++)
 {
  if (Stu[i].chengji == temp)
  {
   equal++;
  }
  else if (Stu[i].chengji < temp)
  {
   low++;
  }
  else if (Stu[i].chengji > temp)
  {
   high++;
  }
 }
 cout << "平均成绩: " << temp << endl;
 cout << "有 " << high << " 人高于平均成绩" << endl;
 cout << "有 " << equal << " 人等于平均成绩" << endl;
 cout << "有 " << low << " 人低于平均成绩" << endl;
}

void Showpercent(struct Student Stu[100], int num)

 float youxiu = 0, lianghao = 0, zhongdeng = 0, jige = 0, bujige = 0;

 for (int i  = 0; i < num; i++)
 {
  if (Stu[i].chengji >= 90)
  {
   youxiu++;
  }
  else if (Stu[i].chengji >= 80)
  {
   lianghao++;
  }
  else if (Stu[i].chengji >= 70)
  {
   zhongdeng++;
  }
  else if (Stu[i].chengji >= 60)
  {
   jige++;
  }
  else
  {
   bujige++;
  }
 }
 cout << "一共有 " << num << " 个学生" << endl;
 cout << "优秀(90~100)的有 " << youxiu << " 人\t占 " << youxiu / num * 100 << " %" << endl;
 cout << "良好(80~89)的有  " << lianghao << " 人\t占 " << lianghao / num * 100 << " %" << endl;
 cout << "中等(70~79)的有  " << zhongdeng << " 人\t占 " << zhongdeng / num * 100 << " %" << endl;
 cout << "及格(60~69)的有  " << jige << " 人\t占 " << jige / num * 100 << " %" << endl;
 cout << "不及格(0~59)的有 " << bujige << " 人\t占 " << bujige / num * 100 << " %" << endl;
}


int main()
{
 struct Student Stu[100];
 int num;
 num = Open(Stu);
 Show(Stu, num + 1);
 Showmid(Stu, num + 1);
 Showpercent(Stu, num + 1);


 return 0;
}

 

没写输出到文件的,那个要求最后才看到,已经输出到屏幕了,修改一下用字符串保存了再输入就行了,你说的要的急,就先提交上来了。。。

上一个:能不能帮我分析一个题目c++的题目
下一个:C++修改txt文件里数据 历史最高分悬赏

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,