黑马程序员技术交流社区

标题: C语言结构体函数问题 [打印本页]

作者: Melody丶Zhy    时间: 2015-1-26 23:00
标题: C语言结构体函数问题
本帖最后由 Melody丶Zhy 于 2015-1-27 13:08 编辑

直接上代,题目要求是输出5名学生中最高分学生的信息,最后的输出格式是 学号:*** 姓名:*** 分数:****,我这个输出不是最高分,不知道怎么改了。。还有2个警告。。 len = sizeof(s)/sizeof(s[0]);struct students maxScore(struct students s[], int len);
  1. #include<stdio.h>
  2. struct students{
  3.     int no;
  4.     char name[7];
  5.     int score;
  6. };
  7. struct students maxScore(struct students s[], int len)
  8. {
  9.     int i = 0,maxScore = 0,j;
  10.      len = sizeof(s)/sizeof(s[0]);
  11.     for (i = 0; i<len; ++i){
  12.         if(maxScore<s[i].score){
  13.             maxScore = s[i].score;
  14.              j = i ;
  15.         }
  16.         
  17.     }
  18.      return s[j];
  19. }
  20. int main()
  21. {
  22.    
  23.     struct students stu[] = {{14001, "张三", 60},
  24.         {14002, "李四", 45},
  25.         {14003, "张思", 81},
  26.         {14004, "李武", 97},
  27.         {14005, "张武", 75}};
  28.    
  29.     struct students a = maxScore(stu,5);
  30.    
  31.     printf("学号:%d,姓名:%s, 成绩:%d", a.no, a.name, a.score );
  32.     return 0;
  33. }
复制代码







作者: 边晓炎    时间: 2015-1-26 23:00
  1. int nlength =  sizeof(stu);
  2.         printf("%d\n",nlength);
复制代码

作者: Melody丶Zhy    时间: 2015-1-27 13:19
  1. #include<stdio.h>
  2. struct students{
  3.     int no;
  4.     char name[7];
  5.     int score;
  6. };
  7. struct students maxScore(struct students s[], int len)
  8. {
  9.     int i = 0,j = 0,k = 0;
  10.   
  11.     for (i = 0; i<len; ++i){
  12.         if(k < s[i].score){
  13.             k = s[i].score;
  14.             j = i ;
  15.          
  16.         }
  17.     }
  18.    return s[j];
  19. }
  20. int main()
  21. {
  22.     struct students stu[] = {{14001, "张三", 60},
  23.         {14002, "李四", 45},
  24.         {14003, "张思", 81},
  25.         {14004, "李武", 97},
  26.         {14005, "张武", 75}};
  27.     struct students a = maxScore(stu,5);
  28.    
  29.     printf("学号:%d,姓名:%s, 成绩:%d\n", a.no, a.name, a.score );
  30.     return 0;
  31. }
复制代码

作者: Melody丶Zhy    时间: 2015-1-27 13:20
ee 自己找到答案了。。。竟然不能把黑马币给自己 谁来给谁吧。。。 最好能告诉下我怎么求结构体数组的长度
作者: 邓士林    时间: 2015-1-27 17:21
求结构体数组的长度,就是求数组的长度,楼上的不对。
如果求数组开辟的内存大小用sizeof(ArrayName);
求数组开辟的元素个数长度:int n = sizeof(arrayName)/sizeof(arrayType);
求数组实际存了多少个元素,没有直接的方法:遍历统计
[size=15.5555562973022px]        int len=0;
        int i =0;
        while(a[i++] !='\0')
                len++;
        printf("%d",len);


作者: Melody丶Zhy    时间: 2015-1-27 17:29
本帖最后由 Melody丶Zhy 于 2015-1-27 17:34 编辑
边晓炎 发表于 2015-1-27 15:04

呃呃 这个肯定不是求结构体数组的长度啊
我也知道答案了。。。
int nlength =  sizeof(stu)/ sizeof(stu[0]);
   printf("%d\n",nlength);
算了 一天了 就你回答了 给你了~
可能是我描述有问题。。应该是怎么求数组中元素的个数。。。

作者: Melody丶Zhy    时间: 2015-1-27 17:30
邓士林 发表于 2015-1-27 17:21
求结构体数组的长度,就是求数组的长度,楼上的不对。
如果求数组开辟的内存大小用sizeof(ArrayName);
求数 ...

ee  我知道他的不对了 ,,,以为没人回复了 就把黑马币给他了。。。来晚一步。。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2