| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2086 人关注过本帖, 1 人收藏
标题:结构体输入 然后输出的问题 代码如下
只看楼主 加入收藏
nosnoy
Rank: 9Rank: 9Rank: 9
来 自:mcu
等 级:贵宾
威 望:14
帖 子:541
专家分:1178
注 册:2016-9-17
结帖率:100%
收藏(1)
已结贴  问题点数:20 回复次数:6 
结构体输入 然后输出的问题 代码如下
小米是一个幼儿园老师,每学期的泥塑课上,她都会给每个学生发不超过250立方厘米的等量橡皮泥,教大家做泥塑。在上课过程中,她发现每个班都恰好有一个小朋友会去抢另一个小朋友的橡皮泥,于是她决定,在正式开始做泥塑前,让大家把手里的橡皮泥都捏成一个立方体,并且测量手里捏好的橡皮泥的长、宽和高。这样,她就可以知道谁被谁抢了橡皮泥了。

小米老师在不同的学期可能会带一个班或者同时带多个班,因此输入数据可能有一组或者多组。每组输入数据的第一行为一个整数n,表示了这个班的小朋友数,之后n行每行包括了由空格分隔的三个整数和一个字符串,那个字符串表示了小朋友的名字,前面三个整数则是这个学生手里橡皮泥块的长、宽、高数据。按照幼儿园的规定,每个班最多有9个小朋友,最少也要有2个小朋友,每个小朋友在学籍系统中的名称不超过8个字符长。当出现一个班级的小朋友数为-1时,表示没有更多的班级了。

编译结果:
Main.c: In function 'main':
 Main.c:49:4: error: expected declaration or statement at end of input
 }
 ^

#include<stdio.h>
 struct stu{
  int x,y,z;
  char name[8];
};//结构体
struct stu student[][9];//定义结构体数组
void main()
 {
   int a,c;//定义班级的小朋友个数及班几个数
   int i=0,j;
   while(1)//输入班级成员信息
   {
     scanf("%d",&a);//输入班级小朋友个数
     if(a==(-1)){break;}
     else for(j=0;j<4;j++)
     {
       scanf("%d %d %d %s",&student[i][j].x,&student[i][j].y,&student[i][j].z,student[i][j].name);
     }
     i++;
     c++;
   }
   int s[c][9];//计算班级成员的橡皮泥体积
   for(i=0;i<c;i++)
   {
     for(j=0;j<9;j++)
     {
       s[i][j]=student[i][j].x*student[i][j].y*student[i][j].z;
     }
   }
   char max[8],min[8];
  int g=10000,b=0,m,n,t,y;
      for(i=0;i<c;i++)//输出谁被谁抢了橡皮泥
   {
     for(j=0;j<9;j++)
     {
       if(s[i][j]>b)
       {
         m=s[i][j];
         m=i;n=j;
       }
       if(s[i][j]<g)
       {
         g=s[i][j];
         t=i;y=j;
       }
       printf("%s took clay from %s",student[m][n].name,student[t][y].name[8]);
     }
   
   }
搜索更多相关主题的帖子: 幼儿园 小朋友 结构体 立方体 橡皮泥 
2016-09-17 15:45
lanke711
Rank: 9Rank: 9Rank: 9
来 自:流浪在天国之路
等 级:蜘蛛侠
威 望:7
帖 子:317
专家分:1437
注 册:2015-7-16
收藏
得分:5 
请注意检查{  }  花括号是否匹配,个数是否正确

普通人之所以普通,是因为他们普遍有一个通病,那就是认为自己永远普通。
千夫所指,我亦坚持。就算被所有人误解,我也照样守护这一切。
我们总是觉得,这些灵魂的表情,傲慢自大,目中无人,其实,真正目中无人的是我们。它们傲慢的不过是表情,而我们傲慢的却是行为!
记得,是为了忘记!
只要想着有那么一天,我就能忍受现在的每一天!
灾难并不可怕,可怕的是心中没有了希望。
你以为我在天堂,其实我正在路上。
当你觉得自己走不到终点的时候,请不要放弃。或许你的对手也是这种感觉。
2016-09-17 16:15
nosnoy
Rank: 9Rank: 9Rank: 9
来 自:mcu
等 级:贵宾
威 望:14
帖 子:541
专家分:1178
注 册:2016-9-17
收藏
得分:0 
回复 2楼 lanke711
编译时出现如下问题
段错误,也就是segmentfault, 可能您的代码出现栈溢出或非法指针访问。

代码如下:
#include<stdio.h>
 struct stu{
  int x,y,z;
  char name[8];
};//结构体
int s(int a, int b,int c);
struct stu student[][9];//定义结构体数组
void main()
 {
   int a,c;//定义班级的小朋友个数及班几个数
   int i=0,j;
   while(1){
     scanf("%d",&a);//输入班级小朋友个数
     if(a==(-1)){break;}
     else for(j=0;j < a;j++)
     {
       scanf("%d %d %d %s",&student[i][j].x,&student[i][j].y,&student[i][j].z,student[i][j].name);
     }
     i++;
     c++;
   }
   int s[c][9];//计算班级成员的橡皮泥体积
   for(i=0;i<c;i++)
   {
     for(j=0;j<9;j++)
     {
       s[i][j]=student[i][j].x*student[i][j].y*student[i][j].z;
     }
   }
   char max[8],min[8];
  int g=260,b=0,m,n,t,y;
      for(i=0;i<c;i++)//输出谁被谁抢了橡皮泥
   {
     for(j=0;j<9;j++)
     {
       if(s[i][j]>b)
       {
         m=s[i][j];
         m=i;n=j;
       }
       if(s[i][j]<g)
       {
         g=s[i][j];
         t=i;y=j;
       }
       printf("%s took clay from %s",student[m][n].name,student[t][y].name[8]);
     }
   }
}

穷举是最暴力的美学
2016-09-18 02:05
linlulu001
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:20
帖 子:944
专家分:4047
注 册:2016-4-13
收藏
得分:5 
struct stu student[][9];//没有初始化应该不可以这样写吧
2016-09-18 07:39
弟大勿勃
Rank: 2
等 级:论坛游民
帖 子:186
专家分:59
注 册:2014-4-17
收藏
得分:0 
谁出的题目啊,真有意思。
2016-09-18 08:58
书生牛犊
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:星夜征程
等 级:贵宾
威 望:10
帖 子:1101
专家分:5265
注 册:2015-10-27
收藏
得分:10 
回复 5楼 弟大勿勃
PTA的吧。我做过。有印象

---------------------------------------
编译器给出的错误提示:在main.c第49行4列,存在Error:....
图片附件: 游客没有浏览图片的权限,请 登录注册

另外 struct stu student[][9];貌似还没指定大小吧,C语言数组在定义的时候可以不用给大小吗?

ElementType a[][9]  的用法通常是用于函数体参数的设置,当我们需要传递一个二维数组的时候,在函数体参数里至少必须给出第二维的宽度。

---------------------------------------
这道题的话,我们完全没必要去建立二维数组,struct stu student[9]就够了。每次读完一个班级的学生数据,直接结算输出哪个学生抢了哪个学生的信息。
下一轮完全可以直接覆盖掉之前的数据。
OJ平台评判数据的时候他们只能看见你输出的东西,不会把它给你的测试代码和你输出的数据混到一块去(运行你的程序,平台会把你的输出保存到一个文件里去,然后通过对那个文件的比对判断程序运行结果是否正确)。我们在本地测试看到输出夹到输入里面的情况并不足为虑。没必要真的把输出放到最后一次性执行。


[此贴子已经被作者于2016-9-18 10:05编辑过]


φ(゜▽゜*)♪
2016-09-18 09:43
nosnoy
Rank: 9Rank: 9Rank: 9
来 自:mcu
等 级:贵宾
威 望:14
帖 子:541
专家分:1178
注 册:2016-9-17
收藏
得分:0 
回复 6楼 书生牛犊
谢谢!

穷举是最暴力的美学
2016-09-18 12:48
快速回复:结构体输入 然后输出的问题 代码如下
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018629 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved