在文件IN30.DAT中有200组数据,每组有3个数,每个数均是3位数。函数readDat()是读取这200组数据存放
在文件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; /*返回满足条件的个数*/ } 解析:本题考查对结构体数组中的元素的各个域的操作。首先利用一个for循环来依次取得结构体数组中的各个元素,之后按照题目要求对当前的元素的各个域进行条件判断,由语句“if(aa[i].x2>aa[i].x1+aa[i].x3)”来实现。如果该条件成立,则把被判断元素存放到数组bb中去,当符合条件的所有元素被找完后,按照“每组数据中的第二个数加第三个数之和的大小”进行从大到小的排序。解答本题的关键是要弄清被处理对象是结构体变量中的某个域,而不是结构体变量本身。
设矩阵A=[(1,-3,1);(0,1,1);(1,-2,-2);(0,2,a)],B是3阶非零矩 数学 2020-04-05 …
过函数f(x)=13x3-x2图象上一个动点作函数的切线,则切线倾斜角的范围为()A.[0,3π4 数学 2020-04-11 …
已知直线l的斜率k∈(-1,3],则直线倾斜角的范围为()A.[0,π3]∪[π2,3π4]B.[ 数学 2020-04-11 …
判断下列命题是否正确:急,今天就要(1)x=3是x^2-x-6=0的必要条件:()(2)x=1,x 数学 2020-04-25 …
已知方程ax^+by^2=2的曲线经过点A(0,5/3)和B(1,1),求a,b,d 值 这个? 数学 2020-05-13 …
C语言中指针引用二维数组元素问题假设a是一个3行4列的二维数组,请问为什么a[0]与*(a+0)是 其他 2020-05-14 …
以下选项中,不能作为一条语句的是()A{;a=0;}Ba+=3,c=3,d-=3;Cif(a=0) 数学 2020-05-15 …
若a+1/a=3,则√a+√a分之1=?若√12m是整数,则整数m的值不可能是若√12m是整数,则 数学 2020-05-16 …
若点P为y轴上的一点,且点P到点A(4,3)、B(-2,-1)的距离和最小,则P的坐标为:A.(0 数学 2020-05-16 …
如图所示的滑轮组中,动滑轮重1N,小强用6N的拉力F通过该滑轮组匀速拉起重10N的物体,物体沿竖直 物理 2020-06-12 …