计蒜客 泥塑课 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];
^ 展开
小米老师在不同的学期可能会带一个班或者同时带多个班,因此输入数据可能有一组或者多组。每组输入数据的第一行为一个整数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];
^ 展开
1个回答
展开全部
没太看懂你的代码
不过可以确定你的问题
#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;
}
更多追问追答
追问
追答
想知道你这里的
for(i = 0; i < a; i++)
struct stu stu i;
这个是想做什么
这里语法是不对的
首先循环里面只有定义变量一句,这个是没意义的
而你定义变量的时候
struct stu是变量类型,后一个stu是什么?变量名吗?那这里的i又是什么?
整体这部分是没道理的。
还有你后面的
stu i.length一类的调用,在C中也是非法的。
总之你这个程序问题多多,如果你是刚学,那么建议你先不要搞这么大的程序,先打好基础。
如果你是学过其它语言的,那么同样先了解一下C的语法结构,再写这样的程序。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询