找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 145|回复: 1

C语言数组内查找符合条件的元素

[复制链接]

37

主题

21

回帖

241

积分

中级会员

积分
241
发表于 2026-3-25 12:01:39 | 显示全部楼层 |阅读模式
下面是源程序文件prog1.c。在此程序中, 已知学生的记录由学号和学习成绩构成, N名学生的数据已存入a结构体数组中。请编写函数fun, 该函数的功能是:找出成绩最低的学生记录, 通过形参返回主函数(规定只有一个最低分)。已给出函数的首部, 请完成该函数。
注意:部分源程序在文件prog1.c中。
请勿改动主函数main和其他函数中的任何内容, 仅在函数fun的花括号中填入你编写的若干语句。
考点:数据类型及其运算
prog1.c代码

  1. #include<stdio.h>

  2. #include<string.h>

  3. #include<conio.h>

  4. #include<stdlib.h>

  5. #define N 10

  6. typedef struct ss

  7. { char num[10];

  8.   int s;

  9. } STU;

  10. void fun(STU a[], STU *s)

  11. {

  12.   

  13. }

  14. void main()

  15. {

  16.   FILE *wf;

  17.   STU a[N]={{ "A01",81},{ "A02",89},{ "A03",66},{ "A04",87},{ "A05",77},

  18.   { "A06",90},{ "A07",79},{ "A08",61},{ "A09",80},{ "A10",71}},m;

  19.   int i;

  20.   system("CLS");

  21.   printf("*****The original data*****\n");

  22.   for(i=0;i<N;i++)

  23.     printf("No=%s Mark=%d\n", a[i].num,a[i].s);

  24.   fun(a,&m);

  25.   printf("*****THE RESULT*****\n");

  26.   printf("The lowest :%s, %d\n",m.num,m.s);

  27. /******************************/

  28.   wf=fopen("out.dat","w");

  29.   fprintf(wf,"%s, %d",m.num,m.s);

  30.   fclose(wf);

  31. /*****************************/

  32. }
复制代码


37

主题

21

回帖

241

积分

中级会员

积分
241
 楼主| 发表于 2026-3-25 12:02:10 | 显示全部楼层
试题解读:
找出结构体数组元素中的最小值。
先认为第1个值最小, 即*s = a[0];, 如果在循环的过程中发现比第1个值更小的, 就将指针s指向该元素, 直到找到最小元素。
另外, 本题还涉及结构体中的指向运算符, 请考生注意。

参考答案:
fun(STU a[], STU *s) {
    int i;
    *s = a[0];
    /*先认为第1个值最小*/
    for (i = 0; i < N; i++)
        /*如果在循环的过程中再发现比第1个值更小的则赋给*s*/
        if (s->s > a[i].s)
            *s = a[i];
}
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|小黑屋|郎哥嵌入式编程社区 ( 鲁ICP备15001146号-5 )

GMT+8, 2026-4-28 03:34 , Processed in 0.014461 second(s), 19 queries .

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