标题:帮我看看为什么不能运行到goto得到时候就错误了
取消只看楼主
竹闲云
Rank: 2
等 级:论坛游民
帖 子:39
专家分:34
注 册:2011-10-9
结帖率:62.5%
已结贴  问题点数:15 回复次数:4 
帮我看看为什么不能运行到goto得到时候就错误了
编的是 先输入学号  然后是三科成绩   接着求三科成绩的平均值最后输出
但是要求的是可以输入任意组数据,然后把平均值算出来后,数出结果。
但是我不知道输入任意组数据的时候怎么结束,所以用到了goto  然后用q计数。
然而我一运行输入end的时候程序就自动结束了,说是有什么错误,
请教高手看看  给出解决办法



/* Note:Your choice is C IDE */
#include "stdio.h"
void main()
{
    int a[2000],b[2000],j,k,h,q=0;
    int i=0,m=3;
    int t=1,r=3;
    int g=0,v=3;
    for(j=1;j<=2000;j++)
    {
        for(;i<=m;i++)
        {
            scanf("%d",&a[i]);
            if(a[i]=='end')
            {
                goto ioop;
            }
        }
        m+=4;
        printf("\n");
        q++;
        
    }
    ioop:
   
    for(k=0;k<=q;k++)
    {
        for(;t<=r;t++)
        {
            b[k]+=a[t];
        }
        b[k]=b[k]/3;
        t+=1;
        r+=4;
    }
   
    for(h=0;h<q;h++)
    {
        for(;g<=v;g++)
        {
            printf("%5d",a[g]);
        }
        printf("%5d",b[h]);
        v+=4;
        printf("\n");
    }
}
搜索更多相关主题的帖子: include choice 平均值 
2011-11-03 16:12
竹闲云
Rank: 2
等 级:论坛游民
帖 子:39
专家分:34
注 册:2011-10-9
得分:0 
回复 2楼 heroinearth
for(j=1;j<=2000;j++)
    {
        for(;i<=m;i++)
        {
            scanf("%d",&a[i]);
        }
        if((a[i]=getchar())=='end')
        {
            break;
        }
        m+=4;
        printf("\n");
        q++;
        
    }
这样都不对
我加不来两个 break   请指教一下
2011-11-03 16:26
竹闲云
Rank: 2
等 级:论坛游民
帖 子:39
专家分:34
注 册:2011-10-9
得分:0 
回复 3楼 heroinearth
要怎样才能让a[i]中存下end?
2011-11-03 16:34
竹闲云
Rank: 2
等 级:论坛游民
帖 子:39
专家分:34
注 册:2011-10-9
得分:0 
/* Note:Your choice is C IDE */
#include "stdio.h"
void main()
{
    int a[2000],b[2000],j,k,h,q=1;
    int i=0,m=3;
    int t=1,r=3;
    int g=0,v=3;
    for(j=1;j<=2000;j++)
    {
        for(;i<=m;i++)
        {
            scanf("%d",&a[i]);
        }
        if((a[i]=getchar())=='a')
        {
            break;
        }
        m+=4;
        printf("\n");
        q++;
    }
    for(k=1;k<=q;k++)
    {
        for(;t<=r;t++)
        {
            b[k]+=a[t];
        }
        b[k]=b[k]/3;
        t+=1;
        r+=4;
    }
   
    for(h=1;h<=q;h++)
    {
        for(;g<=v;g++)
        {
            printf("%5d",a[g]);
        }
        printf("%5d",b[h]);
        v+=4;
        printf("\n");
    }
}



谁运行一下  怎么多了一排
帮忙解决一下
2011-11-03 16:40
竹闲云
Rank: 2
等 级:论坛游民
帖 子:39
专家分:34
注 册:2011-10-9
得分:0 
回复 8楼 heroinearth
你能分析一下为什么q=0了就正确

虽然q=0了确实就正确了

但是如果我就输入一个学生的成绩,那个q就不会运行q++那么q=0

接着运行下面的   那么在最后一个循环中不是就不对了吗?但是我用电脑试了一下 却是对了

谁能分析一下?
2011-11-03 22:11



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-354175-1-1.html




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

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