高分求C语言的编程及设计报告

来源:百度知道 编辑:UC知道 时间:2024/06/15 17:18:59
该题目要求覆盖全部知识点:文件、结构体,数组,函数、指针、循环等。
题目:在文件in.dat中有20组数据,每组有3个数,每个数均是三位数。函数ReadDat()读取这20组数据存放到结构数组aa中,请编制函数jsSort(),其函数的功能是:要求在200组数据中找出条件为每组中的第二个数大于第一个数加第三个数的之和,其中满足条件的个数作为函数jsSort() 的返回值,同时把满足条件的数据存入结构数组bb中,再对bb中的数据按照每组数据的第二个数加第三个之和的大小进行降序排列(第二个数加第三个数的和均不相等),排序后的结果仍重新存入结构数组bb中,最后调用函数WriteDat()把结果bb输出到文件out.dat中。

编译完成且有思路说明,设计说明,最好有完成的报告,在6月9号以前给出的才给分啊,可以加50分
数据应该是200组
请解答的附上设计思路和关键语句说明谢谢

3楼的可以给出设计思路和关键语句说明,最佳就给你了

//以下程序在VC++下编译通过(亲测)

/*
通过main函数先后调用readDat()--读取数据,jsSort()--筛选并排序,writeDat()--写入数据实现题目要求
*/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct{
//声明结构体
int x1,x2,x3;
}data;

data aa[200],bb[200]; //定义2个结构体数组

int jsSort()
{
int i,j,cnt=0;
data xy;

//以下是筛选符合第二个数大于第一个数加第三个数的之和
for(i=0;i<200;i++)
if(aa[i].x2>(aa[i].x1+aa[i].x3)) bb[cnt++]=aa[i];

//以下第二个数加第三个之和的大小进行降序排列
for(i=0;i<cnt-1;i++)
for(j=i+1;j<cnt;j++)
if(bb[i].x2+bb[i].x3>bb[j].x2+bb[j].x3)
{
xy=bb[i]; bb[i]=bb[j]; bb[j]=xy;}
return cnt; //返回符合条件的个数
}

void main()
{
int count;
readDat();
count=jsSort(); /*返回满足条件的个数*/
writeDat(count);
}

readDat()
{
FILE *in;
int i;
in=fopen("in.dat",&quo