码迷,mamicode.com
首页 > 编程语言 > 详细

计算机二级-C语言-程序填空题-190112记录-结构体的遍历和结构体的数据的交换处理,文件的操作。

时间:2019-01-12 12:12:09      阅读:293      评论:0      收藏:0      [点我收藏+]

标签:操作   style   语言   直接   color   数据   遇见   char   def   

//程序设计题:学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把分数低的学生数据放在b所指的数组中,注意:分数最低的学生可能不止一个,函数返回分数最低的学生人数。

//重难点:结构体的定义。结构体的使用。文件指针的定义。对文件的操作。输出格式‘%4d’。两种方法获取最小值。

 1 #include <stdio.h>
 2 #define   N   16
 3 typedef  struct//定义一个新结构体类型
 4 {  char  num[10];
 5    int   s;
 6 } STREC;//新类型名称
 7 int  fun( STREC  *a, STREC *b )//形参这里可以有三种定义方式,指针,数组,数组加下标
 8 {
 9     //第一种方法:先把第一个数定义为最小的,然后遍历,如果遇见更小的就重新赋值。
10     int i, j;
11     j = 0;
12     int min = a[0].s;
13     for (i = 1; i < N; i++)
14     {
15         if (min > a[i].s)
16         {
17             min = a[i].s;
18         }
19     }
20     for (i = 0; i < N; i++)
21     {
22         if (a[i].s == min)
23         {
24             b[j]= a[i];
25             j++;
26         }
27     }
28     return j;//这里不是j+1,因为上面多了一次j++。
29 /*    //第二种方法:先把a数组进行由小到大的排序,然后再遍历一遍,和第一个相等的,都输出出来。
30     int i, j, t;
31     STREC m;
32     t = 1;
33     for (i = 0; i < N; i++)
34     {
35         for (j = i; j < N; j++)
36         {
37             if (a[i].s > a[j].s)
38             {
39                 m = a[i];
40                 a[i] = a[j];
41                 a[j]= m;
42             }
43         }
44     }
45     b[0]= a[0];//灵活变通,如果分开不能赋值的话,就把整体直接交换定义。
46     for (i = 1; i < N; i++)
47     {
48         if (b[0].s == a[i].s)
49         {
50             b[i]= a[i];
51             t = t + 1;
52         }
53     }
54     return t;*/
55 }
56 main()
57 {
58     //定义结构体数组。
59     STREC  s[N]={{"GA05",85},{"GA03",76},{"GA02",69},{"GA04",85},
60           {"GA01",91},{"GA07",72},{"GA08",64},{"GA06",87},
61           {"GA015",85},{"GA013",91},{"GA012",64},{"GA014",91},
62           {"GA011",91},{"GA017",64},{"GA018",64},{"GA016",72}};
63    STREC  h[N];
64    int  i,n;FILE *out ;
65    n=fun( s,h );//以地址方式传递
66    printf("The %d lowest score :\n",n);
67    for(i=0;i<n; i++)
68      printf("%s  %4d\n",h[i].num,h[i].s);//注意这里是4d,所以如果是两位数,会出现两个空格。
69    printf("\n");
70    out = fopen("out.dat","w") ;
71    fprintf(out, "%d\n",n);
72    for(i=0;i<n; i++)
73      fprintf(out, "%4d\n",h[i].s);//可以修改out文件,考试的时候
74    fclose(out);
75 }

 

计算机二级-C语言-程序填空题-190112记录-结构体的遍历和结构体的数据的交换处理,文件的操作。

标签:操作   style   语言   直接   color   数据   遇见   char   def   

原文地址:https://www.cnblogs.com/ming-4/p/10259038.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!