计蒜客 泥塑课 C语言 求大神看看我的程序哪里错了?

小米是一个幼儿园老师,每学期的泥塑课上,她都会给每个学生发不超过250立方厘米的等量橡皮泥,教大家做泥塑。在上课过程中,她发现每个班都恰好有一个小朋友会去抢另一个小朋友的... 小米是一个幼儿园老师,每学期的泥塑课上,她都会给每个学生发不超过250立方厘米的等量橡皮泥,教大家做泥塑。在上课过程中,她发现每个班都恰好有一个小朋友会去抢另一个小朋友的橡皮泥,于是她决定,在正式开始做泥塑前,让大家把手里的橡皮泥都捏成一个立方体,并且测量手里捏好的橡皮泥的长、宽和高。这样,她就可以知道谁被谁抢了橡皮泥了。
小米老师在不同的学期可能会带一个班或者同时带多个班,因此输入数据可能有一组或者多组。每组输入数据的第一行为一个整数n,表示了这个班的小朋友数,之后n行每行包括了由空格分隔的三个整数和一个字符串,那个字符串表示了小朋友的名字,前面三个整数则是这个学生手里橡皮泥块的长、宽、高数据。按照幼儿园的规定,每个班最多有9个小朋友,最少也要有2个小朋友,每个小朋友在学籍系统中的名称不超过8个字符长。当出现一个班级的小朋友数为-1时,表示没有更多的班级了。
输出行数与小米老师带的班级数相同,形式为“X took clay from Y.”,具体请参考样例输出。
样例1
输入:
3
10 10 2 Jill
5 3 10 Will
5 5 10 Bill
4
2 4 10 Cam
4 3 7 Sam
8 11 1 Graham
6 2 7 Pam
-1

输出:
Bill took clay from Will.
Graham took clay from Cam.

#include <sys/ioctl.h>
#include<stdio.h>
typedef struct stu {int length;int width;int height ;char name[];}stu;
int main()
{
int a,i,sum=0,ave;
scanf("%d",&a);
do
{
scanf("%d",&a);
int A[a];
for(i=0;i<a;i++)
A[a]=a-1;
for(i=0;i<a;i++)
stu A[a];
for(i=0;i<a;i++)
scanf("%d%d%d%c",&A[a].length,&A[a].width,& A[a].height,&A[a].name);
for(i=0;i<a;i++)
sum+=A[a].length*A[a].width*A[a].height;
ave=sum/a;
int x,y;
for(i=0;i<a;i++)
{
if(A[a]<ave)
x=a;
else if((A[a]>ave)
y=a;
}
printf("%c took clay from %c.\n",A[y].name,A[x].name);
}
while(a!=-1);
return 0;
}
Main.c: In function 'main':
Main.c:15:5: error: expected expression before 'stu'
stu A[a];
^
展开
 我来答
风若远去何人留
推荐于2016-07-03 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20412 获赞数:450132
专业C/C++软件开发

向TA提问 私信TA
展开全部

没太看懂你的代码

不过可以确定你的问题

#include <sys/ioctl.h>
#include<stdio.h>
typedef struct stu {int length;int width;int height ;char name[];}stu;
int main()
{
    int a,i,sum=0,ave;
    scanf("%d",&a);
    do
    {
    scanf("%d",&a);
    int A[a];
    for(i=0;i<a;i++)
    A[a]=a-1;
    for(i=0;i<a;i++)
    stu A[a];   //上面的for循环有用吗?如果有用 需要大括号把循环体括起来,不然就只有这一句了。  
    for(i=0;i<a;i++)
    scanf("%d%d%d%c",&A[a].length,&A[a].width,& A[a].height,&A[a].name);    
    for(i=0;i<a;i++)
    sum+=A[a].length*A[a].width*A[a].height;
    ave=sum/a;
    int x,y;
    for(i=0;i<a;i++)
    {
    if(A[a]<ave)
    x=a;
    else if((A[a]>ave)
    y=a;
    }
    printf("%c took clay from %c.\n",A[y].name,A[x].name);
    }
    while(a!=-1);
    return 0;
}
更多追问追答
追问

  不好意思刚才好多地方打错了 那地方也是一处。。。

  编译器显示的问题是

  Main.c: In function 'main':
Main.c:16:5: error: expected expression before 'struct'
struct stu stu i;
^

  不知道struct前面有什么错么?下面是修改的

追答
想知道你这里的
for(i = 0; i < a; i++)
struct stu stu i;

这个是想做什么
这里语法是不对的
首先循环里面只有定义变量一句,这个是没意义的
而你定义变量的时候
struct stu是变量类型,后一个stu是什么?变量名吗?那这里的i又是什么?
整体这部分是没道理的。

还有你后面的
stu i.length一类的调用,在C中也是非法的。
总之你这个程序问题多多,如果你是刚学,那么建议你先不要搞这么大的程序,先打好基础。

如果你是学过其它语言的,那么同样先了解一下C的语法结构,再写这样的程序。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式