| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 984 人关注过本帖
标题:泥塑课?程序不知道错在哪里,请各位大佬帮忙看看
只看楼主 加入收藏
甲级黎庶
Rank: 2
等 级:论坛游民
帖 子:52
专家分:15
注 册:2017-10-4
结帖率:75%
收藏
已结贴  问题点数:20 回复次数:3 
泥塑课?程序不知道错在哪里,请各位大佬帮忙看看
小米老师在不同的学期可能会带一个班或者同时带多个班,因此输入数据可能有一组或者多组。每组输入数据的第一行为一个整数 n,表示了这个班的小朋友数,之后 n 行每行包括了由空格分隔的三个整数和一个字符串,那个字符串表示了小朋友的名字,前面三个整数则是这个学生手里橡皮泥块的长、宽、高数据。按照幼儿园的规定,每个班最多有 9 个小朋友,最少也要有 2 个小朋友,每个小朋友在学籍系统中的名称不超过 8 个字符长。当出现一个班级的小朋友数为 −1 时,表示没有更多的班级了。输出行数与小米老师带的班级数相同,形式为X took clay from Y
样例输入:
4
2 4 10 Cam
4 3 7 Sam
8 11 1 Graham
6 2 7 Pam
-1
样例输出:Graham took clay from Cam.
#include <stdio.h>
#include <stdlib.h>
int main()
{                                                   //泥塑,小朋友数目为n,也是行数,长宽高用a,b,c表示,字符串用i表示
                                                    //小朋友数为2到9,字符串不超过8.输入体积为V,V=a*b*c,有一个判断,不等的两个提出来比较,大的为x,小的为y
    int n,a[9],b[9],c[9],V[9],j,sum,av;                                                //输出的格式X took clay from Y
    char i[8],X,Y;
    while(1)
    {
        scanf("%d",&n);
        if(n!=-1)
        {
            for(j=0;j<n;j++)                            //控制行数,为n行
            {
                scanf("%d%d%d%s",&a[j],&b[j],&c[j],&i[j]);      //输入长宽高和名字
                V[j]=a[j]*b[j]*c[j];
                sum=sum+V[j];
            }
            av=sum/n;                               //算出平均数,作为判断
        for(j=n;j>=0;j--)                         //判断其中谁少了,多了,少了的给Y,多了的给X
        {
                                       //如果是相等的就说明正常,跳过继续
            if(V[j]<=av)
            {
                Y=i[j];
            }
            else
            {
                if(V[j]>=av)
                {
                    X=i[j];
                }
            }
        }
          printf("%s took clay \n",X);
          printf("from %s\n",Y);                                            //输出的格式X took clay from Y


        }
        else
            printf("\n");break;
    }
    return 0;
}
就是在输出时出现问题,是不是Y=i【j】有问题?
求大佬们解惑

[此贴子已经被作者于2017-10-19 09:14编辑过]

搜索更多相关主题的帖子: 输入 表示 输出 from sum 
2017-10-19 09:13
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
收藏
得分:10 
问题比较多,我帮你改了,但只是按照题目的例子做了验证,只是改你程序的错误,并不能保证其他用例的正确。
对照差异体会下。
程序代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{                                                   //泥塑,小朋友数目为n,也是行数,长宽高用a,b,c表示,字符串用i表示
                                                    //小朋友数为2到9,字符串不超过8.输入体积为V,V=a*b*c,有一个判断,不等的两个提出来比较,大的为x,小的为y
    int n, a[9], b[9], c[9], V[9], j, sum = 0, av;                                                //输出的格式X took clay from Y
    char i[9][8], X[9], Y[9];
    while (1)
    {
        scanf("%d", &n);
        if (n != -1)
        {
            for (j = 0; j<n; j++)                            //控制行数,为n行
            {
                scanf("%d%d%d%s", &a[j], &b[j], &c[j], &i[j]);      //输入长宽高和名字
                V[j] = a[j] * b[j] * c[j];
                sum = sum + V[j];
            }
            av = sum / n;                               //算出平均数,作为判断
            for (j = n-1; j >= 0; j--)                         //判断其中谁少了,多了,少了的给Y,多了的给X
            {
                //如果是相等的就说明正常,跳过继续
                if (V[j] <= av)
                {
                    strcpy(Y,i[j]);
                }
                else
                {
                    if (V[j] >= av)
                    {
                        //X = i[j];
                        strcpy(X, i[j]);
                    }
                }
            }
            printf("%s took clay ", X);
            printf("from %s\n", Y);                                            //输出的格式X took clay from Y


        }
        else
            printf("\n"); break;
    }
    return 0;
}
2017-10-19 10:09
zbjzbj
Rank: 12Rank: 12Rank: 12
来 自:郑州
等 级:贵宾
威 望:52
帖 子:633
专家分:3045
注 册:2011-4-22
收藏
得分:10 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{                                                   //泥塑,小朋友数目为n,也是行数,长宽高用a,b,c表示,字符串用i表示
                                                    //小朋友数为2到9,字符串不超过8.输入体积为V,V=a*b*c,有一个判断,不等的两个提出来比较,大的为x,小的为y
    int n,a[9],b[9],c[9],V[9],j,sum,av;                                                //输出的格式X took clay from Y
    char i[20][9],X[9],Y[9];
   
    scanf("%d",&n);
    while(n!=-1)
    {
        for(j=0;j<n;j++)                            //控制行数,为n行
            {
                scanf("%d %d %d %s",&a[j],&b[j],&c[j],&i[j]);      //输入长宽高和名字
                V[j]=a[j]*b[j]*c[j];
                sum=sum+V[j];
            }
            av=sum/n;                               //算出平均数,作为判断
        for(j=n;j>=0;j--)                         //判断其中谁少了,多了,少了的给Y,多了的给X
        {
                                       //如果是相等的就说明正常,跳过继续
            if(V[j]<=av)
            {
                memcpy(&Y,i[j],9);            
            }
            else            
            {
                memcpy(&X,i[j],9);
            }
        }
        printf("%s took clay from %s\n",X,Y);//输出的格式X took clay from Y
        scanf("%d",&n);
    }
    return 0;
}
2017-10-19 11:17
甲级黎庶
Rank: 2
等 级:论坛游民
帖 子:52
专家分:15
注 册:2017-10-4
收藏
得分:0 
谢谢大佬,我知道了
2017-10-19 11:46
快速回复:泥塑课?程序不知道错在哪里,请各位大佬帮忙看看
数据加载中...
 
   



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

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