A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Melody丶Zhy 中级黑马   /  2015-1-26 23:00  /  2480 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

5黑马币
本帖最后由 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. }
复制代码






6 个回复

倒序浏览
求结构体数组的长度,就是求数组的长度,楼上的不对。
如果求数组开辟的内存大小用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);

评分

参与人数 1黑马币 +1 收起 理由
Melody丶Zhy + 1 很给力!

查看全部评分

回复 使用道具 举报
  1. int nlength =  sizeof(stu);
  2.         printf("%d\n",nlength);
复制代码
回复 使用道具 举报
  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. }
复制代码
回复 使用道具 举报
ee 自己找到答案了。。。竟然不能把黑马币给自己 谁来给谁吧。。。 最好能告诉下我怎么求结构体数组的长度
回复 使用道具 举报
本帖最后由 Melody丶Zhy 于 2015-1-27 17:34 编辑

呃呃 这个肯定不是求结构体数组的长度啊
我也知道答案了。。。
int nlength =  sizeof(stu)/ sizeof(stu[0]);
   printf("%d\n",nlength);
算了 一天了 就你回答了 给你了~
可能是我描述有问题。。应该是怎么求数组中元素的个数。。。
回复 使用道具 举报
邓士林 发表于 2015-1-27 17:21
求结构体数组的长度,就是求数组的长度,楼上的不对。
如果求数组开辟的内存大小用sizeof(ArrayName);
求数 ...

ee  我知道他的不对了 ,,,以为没人回复了 就把黑马币给他了。。。来晚一步。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马