已知在文件in.dat中存有200组数据,每组有3个数,每个数均是三位数。函数readDat是读取这200组数据存放到结构数组aa中。请编制函数jsSort,其函数的功能是:要求在200组数据中找出第二个数大于第

题目

已知在文件in.dat中存有200组数据,每组有3个数,每个数均是三位数。函数readDat是读取这200组数据存放到结构数组aa中。请编制函数jsSort,其函数的功能是:要求在200组数据中找出第二个数大于第一个数加第三个数之和的数,其中满足条件的个数作为函数jsSort的返回值,同时把满足条件的数据存入结构数组bb中,再对bb中的数据按照每组数据的第二个数加第三个之和的大小进行降序排列(第二个数加第三个数的和均不相等),排序后的结果仍重新存入结构数组 bb中,最后调用函数writeDat把结果bb输出到out.dat文件中。 注意:部分源程序存在test.C文件中。 请勿改动数据文件in.dat中的任何数据、主函数main、读函数readDat和写函数writeDat的内容。

如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

在文件IN6.DAT中有200个正整数,且每个数均在1000至9999之间。函数readDat()的功能是读取这200个数存放到数组aa中。请编制函数jsSort(),该函数的功能是:要求按每个数的后3位的大小进行降序排列,将排序后的前10个数存入数组b中,如果数组b中出现后3位相等的数,则对这些数按原始4位数据进行升序排列。最后调用函数writeDat()把结果bb输出到文件OUT6.DAT中。

例如:处理前 9012 5099 6012 7025 8088

处理后 5099 8088 7025 6012 9012

注意:部分源程序已给出。

请勿改动主函数main()、读函数readDat()和写函数writeDat()的内容。


#include
#include
#include
int aa[200], bb[10] ;
void readDat();
void writeDat();
void jsSort()
{
int i,j; /*定义循环控制变量*/
int temp; /*定义数据交换时的暂存变量*/
for(i=0;i<199;i++) /*用选择法对数组进行排序*/
for(j=i+1;j<200;j++)
{
if(aa[i]%1000
{
temp=aa[i];
aa[i]=aa[j];
aa[j]=temp;
}
else if(aa[i]%1000==aa[j]%1000) /*如果后3位数相等*/
if(aa[i]>aa[j]) /*则要按原4位数的值进行升序排序*/
{
temp=aa[i];
aa[i]=aa[j];
aa[j]=temp;
}
}
for(i=0;i<10;i++) /*将排序后的前10个数存入数组b中*/
bb[i]=aa[i];
}
void main()
{
readDat() ;
jsSort() ;
writeDat() ;
}
void readDat()
{
FILE *in ;
int i ;
in = fopen("IN6.DAT", "r") ;
for(i = 0 ; i < 200 ; i++) fscanf(in, "%d,", &aa[i]);
fclose(in) ;
}
void writeDat()
{
FILE *out ;
int i ;
out = fopen("OUT6.DAT", "w") ;
system("CLS");
for (i = 0 ; i < 10 ; i++)
{
printf("i=%d,%d\n", i + 1, bb[i]) ;
fprintf(out, "%d\n", bb[i]) ;
}
fclose(out) ;
}

第2题:

在数据文件in.dat中有200组数据,每组有3个数,每个数均是三位数。函数readDat是读取这200组数据存放到结构数组aa中。请编制函数isSort,其函数的功能是:要求在200组数据中找出第一个数大于第二个数与第三个数之和的数,其中满足条件的个数作为函数jsSort的返回值,同时把满足条件的数据存入结构数组bb中,再对bb中的数据按照每组数据的第一个数与第三个数之和的大小进行升序排列(第一个数与第三个数的和均不相等),排序后的结果仍重新存入结构数组bb中,最后调用函数writeDat把结果bb输出到out.dat文件中。 注意:部分源程序存在test.c文件中。 请勿改动数据文件in.dat中的任何数据、主函数main、读函数readDat和写函数writeDat的内容。


正确答案:
【审题关键句】第1个数大于第2个数加第3个数,存入数组,按第l个加第3个数之和升序排序。
【解题思路】
本题类似第63套试题,通过审题可以发现主要有两个不同点:①筛选满足条件的记录不同,参考答案的第5行,修改 if条件语句的设置即可;②对满足条件的筛选结果进行排序的条件不同,参考答案的ll行,修改if条件语句的设置即可。
【参考答案】

第3题:

在数据文件in.dat中有200个正整数,且每个数都在1000至9999之间。函数readDat是读取这200个数存放到数组 aa中。请编制函数isSort,其函数的功能是:要求按每个数的后三位的大小进行升序排列,如果出现后三位相等的数值,则对这些数值按原始4位数据进行降序排列,将排序后的前10个数存入数组bb中。最后调用函数writeDat把结果bb输出到文件out.dat中。 例:处理前60125099901270258088 处理后 90126012702580885099 注意:部分源程序存在test.c文件中。 请勿改动数据文件in.dat中的任何数据、主函数main、读函数readDat和写函数writeDat的内容。


正确答案:
【审题关键句】按每个数的后三位升序排列,然后取出满足此条件的前10个数依次存入数组,如果后三位的数值相等,则按原先的数值进行降序排列。
【解题思路】
①首先定义两个循环变量循环i、j和一个用于数据交换的整型变量m。
②然后通过两个for循环对数组aa[]中的两个相邻元素按照其后三位值的大小进行从小到大的排序,本题中已给出所有的整数都是四位数,因此,可以通过aa[i]%1000或aa[j]%1000计算得到当前数组元素的后三位值,然后再进行比较,如果两个数需要转换位置,可通过中间变量m进行转换。
③上一步骤是两个元素后三位不相同的情况,根据题意,需要再增加一个else if语句判断两个相邻元素的后三位数一样的情况,如果相同,则需要继续判断两个四位数的大小,并按从大小的顺序排序。
④最后,通过一个for循环依次读取aa[i]数组中前10个元素并保存到数组bb[i]中。
【参考答案】

第4题:

在文件in.dat中已存有200个正整数,且每个数均在1 000至9999之间。函数readDat是读取这200个数存放到数组aa中。请编制函数jsSort,其函数的功能是:要求按每个数的后三位的大小进行降序排列,如果出现后三位相等的数值,则对这些数值按原始4位数据进行升序排列,将排序后的前10个数存入数组bb中。 最后调用函数writeDat把结果bb输出到文件out.dat中。


正确答案:
【审题关键句】按每个数的后三位降序排列,然后取出满足此条件的前10个数依次存入数组;如果后三位的数值相等,则按原先的数值进行升序排列。
【解题思路】本题类似第7套试题,通过审题可以发现主要有两个不同点:①按每个数的后三位降序排列,参考答案的第5条语句,修改两数组元素的大小比较符即可;②后三位的数值相等则按原先的数值进行升序排列,参考答案的第13条语句,同样也是修改两数组元素的大小比较符即可。
【参考答案】


第5题:

在文件IN30.DAT中有200组数据,每组有3个数,每个数均是3位数。函数readDat()是读取这200组数据存放到结构数组aa中。请编制函数jsSort(),其函数的功能是:要求在200组数据中找出条件为每组数据中的第二个数大于第一个数加第三个数之和,其中满足条件的个数作为函数jsSort()的返回值,同时把满足条件的数据存入结构数组bb中,再对结构数组bb中的数据按照每组数据的第二个数加第三个数之和的大小进行降序排列,排序后的结果仍重新存入结构数组bb中,最后调用函数writeDat()把结果bb输出到文件OUT30.DAT中。

注意:部分源程序已给出。

请勿改动主函数main()、读函数readDat()和写函数writeDat()的内容。

试题程序:

include 〈stdio.h>

include 〈string.h>

include 〈conio.h>

typedef struct

{

int x1, x2, x3;

} Data;

Data aa[200], bb[200];

int jsSort()

{

}

main ( )

{

int count;

readDat();

count = jsSort (); /* 返回满足条件的个数 */

writeDat(count);

}

readDat()

{

FILE *in;

int i;

in = fopen("IN30.DAT", "r");

for(i=0; i〈200; i++)

fscanf(in, "%d %d %d", &aa[i].x1, &aa[i].x2, &aa[i].x3);

fclose(in);

}

writeDat(int count)

{

FILE *out;

int i;

ut= fopen("OUT30.DAT", "w");

clrscr();

for(i=0; i〈count; i++)

{

printf("%d, %d, %d 第二个数+第三个数=%d\n", bb[i].x1, bb[i].x2,

bb[i].x3, bb[i].x2+bb[i], x3);

fprintf(out, "%d, %5d, %d\n", bb[i].x1, bb[i].x2, bb[i].x3);

}

fclose(out);

}


正确答案:int jsSort() { int i cnt=0 j; Data ch; for(i=0; i〈200; i++) if(aa[i].x2>aa[i].x1+aa[i].x3) /*如果第二个数大于第一个数加第三个数之和*/ { bb[cnt]=aa[i]; /*则把该组数据存入结构数组bb中*/ cnt++; /*统计满足条件的数据的组数*/ } for(i=0; i〈cnt-1; i++) /*对结构数组bb中的数据按照每组数据的第二个数*/ for(j=i+1; j〈cnt; j++) /*加第三个数之和的大小进行降序排列*/ if(bb[i].x2+bb[i].x3〈bb[j].x2+bb[j].x3) { ch=bb[i]; bb[i]=bb[j]; bb[j]=ch; } return cnt; /*返回满足条件的个数*/ }
int jsSort() { int i, cnt=0, j; Data ch; for(i=0; i〈200; i++) if(aa[i].x2>aa[i].x1+aa[i].x3) /*如果第二个数大于第一个数加第三个数之和*/ { bb[cnt]=aa[i]; /*则把该组数据存入结构数组bb中*/ cnt++; /*统计满足条件的数据的组数*/ } for(i=0; i〈cnt-1; i++) /*对结构数组bb中的数据按照每组数据的第二个数*/ for(j=i+1; j〈cnt; j++) /*加第三个数之和的大小进行降序排列*/ if(bb[i].x2+bb[i].x3〈bb[j].x2+bb[j].x3) { ch=bb[i]; bb[i]=bb[j]; bb[j]=ch; } return cnt; /*返回满足条件的个数*/ } 解析:本题考查对结构体数组中的元素的各个域的操作。首先利用一个for循环来依次取得结构体数组中的各个元素,之后按照题目要求对当前的元素的各个域进行条件判断,由语句“if(aa[i].x2>aa[i].x1+aa[i].x3)”来实现。如果该条件成立,则把被判断元素存放到数组bb中去,当符合条件的所有元素被找完后,按照“每组数据中的第二个数加第三个数之和的大小”进行从大到小的排序。解答本题的关键是要弄清被处理对象是结构体变量中的某个域,而不是结构体变量本身。

第6题:

在文件in75.dat中有200组数据,每组有3个数,每个数均为3位数。函数readDa(()是读取这200组数存放到结构数组aa中。请编制函数JsSort(),其函数的功能是:要求在200组数据中找出条件为每组数据中的第一个数大于第二个数加第三个数之和,其中满足条件的个数作为函数JsSort()的返回值,同时把满足条件的数据存入结构数组bb中,再对bb中的数按照每组数据的第一个数加第三个数之和的大小进行升序排列(第一个数加第三个数的和均不相等),排序后的结果仍重新存入结构数组bb中。最后调用函数writeDat()把结果 bb输出到文件out75.dat。

注意:部分源程序已给出。

请勿改动主函数main()、读函数readDat()和写函数writeDat()的内容。

试题程序:

include<stdio.h>

include<string.h>

include<conio.h>

typedef struct

{

int xl,x2,x3;

} Data;

Data aa[200],bb[200];

int jsSort()

{

}

void main()

{

int count;

readDat();

count=jsSort();

writeDat(count);

}

readDat ( )

{

FILE *in;

int i;

in=fopen("in75.dat","r");

for(i=0;i<200;i++)

fscanf (in, "%d %d %d",&aa[i] .x1,&aa[i] .x2,&aa[i] .x3);

fclose (in);

}

writeDat(int count)

{

FILE *out;

int i;

clrscr();

ut=fopen("out75,dat","w");

for(i=0;i<count;i++)

{

printf("%d, "%d,"%d, 第一个数+第三个数

=%d\n", bb[i]. x1, bb[i]. x2, bb[i].x3, bb[i]. x1+bb[i]. x3);

fprintf(out, "%d, %d, %d\n", bb[i].x1, bb[i]. x2, bb[i]. x3);

}

fclose(out);

}


正确答案:int jsSort() { int i j count=0; Data val; for (i=0; i200;i++) if(aa[i] .xl>aa[i] .x2+aa [i] .x3) /*如果每组数据中的第一个数大于第二、 三个数之和*/ { bb [count] .xl=aa [i] .x1; /*把满足条件的数据存入结构数组bb中*/ bb[count] .x2=aa[i] .x2; bb[count] .x3=aa[i] .x3; count++; /*统计满足条件的数据的组数*/ } for (i=0; icount-1; i++ ) /*对bb中的数按照每组数据的每一个数加第三个 数之和的大小进行升序排列*/ for (j=i+l; jcount; j++) if(bb[i) .x1+bb[i].x3>bb[j] .x1+bb[j] .x3) { val=bb[i); bb[i]=bb[j]; bb[j]=val; } return count; /*满足条件的数据的组数*/ }
int jsSort() { int i, j, count=0; Data val; for (i=0; i200;i++) if(aa[i] .xl>aa[i] .x2+aa [i] .x3) /*如果每组数据中的第一个数大于第二、 三个数之和*/ { bb [count] .xl=aa [i] .x1; /*把满足条件的数据存入结构数组bb中*/ bb[count] .x2=aa[i] .x2; bb[count] .x3=aa[i] .x3; count++; /*统计满足条件的数据的组数*/ } for (i=0; icount-1; i++ ) /*对bb中的数按照每组数据的每一个数加第三个 数之和的大小进行升序排列*/ for (j=i+l; jcount; j++) if(bb[i) .x1+bb[i].x3>bb[j] .x1+bb[j] .x3) { val=bb[i); bb[i]=bb[j]; bb[j]=val; } return count; /*满足条件的数据的组数*/ } 解析:本题考查的知识点如下:
(1)结构体及结构数组。
(2)数据的排序。
(3)函数的返回值。
本题中,定义了结构类型和结构数组,这就要涉及到结构体和结构数组的访问。相同类型的结构体变量之间可以直接赋值,也可以依次对结构体中的每个变量进行赋值或访问。排序使用“选择排序法”。函数的值通过return语句返回,格式为:return表达式或return(表达式)或return,当函数没有返回值时用第3种格式。在本题中,要用第1种或第2种格式。

第7题:

在文件in75.dat中有200组数据,每组有3个数,每个数均为3位数。函数readDat()是读取这200组数存放到结构数组aa中。请编制函数jsSort(),其函数的功能是:要求在200组数据中找出条件为每组数据中的第一个数大于第二个数加第三个数之和,其中满足条件的个数作为函数jsSort()的返回值,同时把满足条件的数据存入结构数组bb中,再对bb中的数按照每组数据的第一个数加第三个数之和的大小进行升序排列(第一个数加第三个数的和均不相等),排序后的结果仍重新存入结构数组比中。最后调用函数writeDat()把结果bb输出到文件out75.dat。

注意:部分源程序已给出。

请勿改动主函数main()、读函数readDat()和写函数writeDat()的内容。

试题程序:

include<stdio.h>

include<string.h>

include<conio.h>

typedef struct

{

int x1,x2,x3;

} Data;

Data aa[200],bb[200];

int jsSort ()

{

}

void main ( )

{

int count;

readDat();

count=jsSort();

writeDat(count);

}

readDat()

{

FILE *in;

int i;

in=fopen("in75.dat","r");

for(i=0;i<200;i++)

fscanf(in, "%d %d %d", &aa[i].x1,&aa[i].x2,&aa[i].x3);

fclose(in);

}

writeDat(int count)

{

FILE *out;

int i;

clrscr();

ut=fopen("out75.dat","w");

for(i=0;i<count ;i++)

{

print f ( "%d, %d, %d 第一个数+第三个数

=%d\n", bb[i].x1,bb[i].x2,bb[i].x3,bb[i].x1+bb[i].x3);

fprintf(out,, %d,% d,% d \n" ,bb[i].x1,bb[i].x2,bb[i].x3);

}

fclose(out);

}


正确答案:int jsSort() { int ijcount=0; Data val; for(i=0;i200;i++) if (aa[i]. x1>aa[i]. x2+aa [i]. x3) /*如果每组数据中的第一个数大于第二 三个数之和*/ { bb [count]. x1=aa [i]. x1; /*把满足条件的数据存入结构数组bb中*/ bb [count]. x2=aa [i]. x2; bb [count]. x3 =aa [i].x3; count++; /*统计满足条件的数据的组数* / } for (i= 0; icount-1; i++ ) /*对bb中的数按照每组数据的第一个数加第三个 数之和的大小进行升序排列*/ for (j =i+1; jcount; j ++) if (bb[i]. x1+bb[i]. x3>bb[j]. x1+bb [j]. x3) { val=bb [i]; bb[i]=bb[j]; bb [j] =val; } return count; /*满足条件的数据的组数*/ }
int jsSort() { int i,j,count=0; Data val; for(i=0;i200;i++) if (aa[i]. x1>aa[i]. x2+aa [i]. x3) /*如果每组数据中的第一个数大于第二 三个数之和*/ { bb [count]. x1=aa [i]. x1; /*把满足条件的数据存入结构数组bb中*/ bb [count]. x2=aa [i]. x2; bb [count]. x3 =aa [i].x3; count++; /*统计满足条件的数据的组数* / } for (i= 0; icount-1; i++ ) /*对bb中的数按照每组数据的第一个数加第三个 数之和的大小进行升序排列*/ for (j =i+1; jcount; j ++) if (bb[i]. x1+bb[i]. x3>bb[j]. x1+bb [j]. x3) { val=bb [i]; bb[i]=bb[j]; bb [j] =val; } return count; /*满足条件的数据的组数*/ } 解析:本题考查的知识点如下:
(1)结构体及结构数组。
(2)数据的排序。
(3)函数的返回值。
本题中,定义了结构类型和结构数组,这就要涉及到结构体和结构数组的访问。相同类型的结构体变量之间可以直接赋值,也可以依次对结构体中的每个变量进行赋值或访问。排序使用“选择排序法”。函数的值通过return语句返回,格式为;return表达式或return(表达式)或return,当函数没有返回值时用第3种格式。在本题中,要用第1种或第2种格式。

第8题:

在文件IN.dat中有200组数据,每组有3个数,每个数均是三位数。函数Rdata()读取这 200组数据存放到结构数组aa中,请编写函数greatSort(),其功能是:要求在200组数据中找出条件为每组中的第1个数大于第2个数加第3个数的和,其中满足条件的组数作为函数 greatSort()的返回值,同时把满足条件的数据存入结构数组bb中,再对bb中的数据按照每组数据的第1个数加第3个数之和的大小进行升序排列(第1个数加第3个数的和均不相等),排序后的结果仍重新存入结构数组bb中。最后调用函数Wdata(),把结果bb输出到OUT.dat文件中。

注意:部分源程序已经给出。请勿改动主函数main()、读数据函数Rdata()和输出数据函数Wdata()的内容。

include <stdio. h>

include <string.h>

include <conio. h>

typedef struct

{ int x1, x2, x3;

} data;

data aa[200], bb[200];

int greatSort ()

{

}

void Rdata ()

{ FILE *in;

int i;

in = fopen("IN.dat", "r");

for (i=0; i<200; i++)

fscanf (in, "%d %d %d", &aa[i]. x1, &aa[i] .x2, &aa[i] .x3);

fclose (in);

}

void Wdata(int count)

{ FILE *out;

int i;

ut = fopen("OUT.dat", "w");

for (i=0; i<count; i++)

{ printf("%d,%d,%d 第一个数+第三个数=%d\n", bb[i].x1,

bb[i].x2, bb[i].x3, bb[i].x1 + bb[i]. x3);

fprintf (out, "%d %d %d\n", bb[i] .x1, bb[i] .x2,

bb[i] .x3);

}

fclose (out);

}

void main ()

{ int count;

Rdata ( );

count = greatSort() ;/* 返回满足条件的个数 */

Wdata (count);

}


正确答案:int greatSort() { int i j count = 0; data val; for (i=0; i200; i++) if (aa[i] .x1 > aa[i] .x2+aa[i] .x3) { bb[count] = aa[i]; count++; } for (i=0; icount-1; i++) for (j=i+1; jcount; j++) if (bb[i] .x1+bb[i] .x3> bb[j] .x1+bb[j] .x3) { va1 = bb[i]; bb[i] = bb[j]; bb[j] = va1; } return count; } [解题思路] 在for循环语句中自变量i从0递增到200判断每组中的第1个数大于第2个数加第3个数之和即表达式aa[i]. x1>aa[i]. x2+aa[i]. x3是否成立如果表达式成立即把aa [i] 赋给数组变量bb同时计数变量count自加。最后用两重循环对数组bb中的数据按照每组数据的第2个数加第3个数之和的大小进行升序排列。
int greatSort() { int i, j, count = 0; data val; for (i=0; i200; i++) if (aa[i] .x1 > aa[i] .x2+aa[i] .x3) { bb[count] = aa[i]; count++; } for (i=0; icount-1; i++) for (j=i+1; jcount; j++) if (bb[i] .x1+bb[i] .x3> bb[j] .x1+bb[j] .x3) { va1 = bb[i]; bb[i] = bb[j]; bb[j] = va1; } return count; } [解题思路] 在for循环语句中,自变量i从0递增到200,判断每组中的第1个数大于第2个数加第3个数之和即表达式aa[i]. x1>aa[i]. x2+aa[i]. x3是否成立,如果表达式成立,即把aa [i] 赋给数组变量bb,同时计数变量count自加。最后用两重循环对数组bb中的数据按照每组数据的第2个数加第3个数之和的大小进行升序排列。

第9题:

在文件in.dat中有200个数据。函数ReadDat()读取这200个数据存放到整型数组aa中,请编制函数jsSod(),其函数的功能是:要求在200个数据中找出满足以下条件的三元组(a,b,c),其中a、b、c是所给200个数据中的三个不同的数,且以a、b、c为边长的三边能构成三角形。满足条件三元组的个数作为函数jsSort()的返回值,同时把满足条件的数据存入结构数组bb中(要求bb[i].x1<bb[i].x2<bb[i].x3),再对bb中的数据按照每组数据构成三角形的周长进行升序排列,排序后的结果仍重新存入结构数组bb中,最后调用函数WriteDat()把结果bb输出到文件out.dat中。

部分源程序已给出。

请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。

include<stdio.h>

include<string.h>

include<conio.h>

typedef struct{

int x1,x2,x3;

}data;

int aa[200];

data bb[200];

int jsSort()

{

}

void main ()

{

int count;

readDat();

count=jsSort (); /*返回满足条件的个数*/

writeDat(count);

}

readDat(int count)

{

FILE *in;

int i;

in=fopen("in.dat","r");

for(i=0; i<200; i++)

fscanf(in,"%d",&aa[i]);

fclose(in);

}

WriteDat(int count)

{

FILE *out;

int i;

clrscr();

ut=fopen("out.dat","w");

for(i=0; i<count; i++){

fprintf(out,"%d,%d,%d\n",bb[i].x1,bb[i].x2,bb[i].x3);

}

fclose(out);

}


正确答案:int jsSort() { int iiuk;0; data swap;/*定义一个结构体变量作为交换时的临时存放地*/ data tmp;/*定义一个结构体变量作为新构造的三元组(不一定满足条件)的存放地*/ for(i=0;i200;i++) for(j=i+1;j200;j++) for(u=j+1;u200;u++) { if (aa[i]aa[j]) { tmp.x1=aa[i]; tmp.x3=aa[j]; } else { tmp.x1=aa[j]; tmp.x3=aa[i]; } if (aa[k]tmp.x1) { /*aa[k]在三个数中最大*/ tmpx2=tmp.x1; tmp.x1=aa[k]; } else if (aa[k]>tmp.x3) { /*aa[k]在三个数中最小*/ tmp.x2=tmp.x3; tmp.x3=tmp; } else trap x2=aa [k]; /*aa [k]在三个数中居中*/ /*按照要求构造结构*/ if(tmp.x1 + tmpx2 > tmp.x3) bb[k++]=tmp; /*将符合条件的数存入bb数组中*/ } for(i=0;ik-1;i++) for(j=i+1;jk;j++) if((bb[i].xl+bb[i].x2+bb[i].x3)>(bb[j].xl+bb[j].x2+bb[j].x3)){ swap-bb [ii; bb [i] =bb [j]; bb [j ] =swap; /*在BB数组中进行选择排序(从小到大) */ } return k; }
int jsSort() { int i,i,u,k;0; data swap;/*定义一个结构体变量,作为交换时的临时存放地*/ data tmp;/*定义一个结构体变量,作为新构造的三元组(不一定满足条件)的存放地*/ for(i=0;i200;i++) for(j=i+1;j200;j++) for(u=j+1;u200;u++) { if (aa[i]aa[j]) { tmp.x1=aa[i]; tmp.x3=aa[j]; } else { tmp.x1=aa[j]; tmp.x3=aa[i]; } if (aa[k]tmp.x1) { /*aa[k]在三个数中最大*/ tmp,x2=tmp.x1; tmp.x1=aa[k]; } else if (aa[k]>tmp.x3) { /*aa[k]在三个数中最小*/ tmp.x2=tmp.x3; tmp.x3=tmp; } else trap, x2=aa [k]; /*aa [k]在三个数中居中*/ /*按照要求构造结构*/ if(tmp.x1 + tmp,x2 > tmp.x3) bb[k++]=tmp; /*将符合条件的数存入bb数组中*/ } for(i=0;ik-1;i++) for(j=i+1;jk;j++) if((bb[i].xl+bb[i].x2+bb[i].x3)>(bb[j].xl+bb[j].x2+bb[j].x3)){ swap-bb [ii; bb [i] =bb [j]; bb [j ] =swap; /*在BB数组中进行选择排序(从小到大) */ } return k; } 解析:类型:整数排序。
关键:条件判断和排序算法。最后排序采用选择排序。