| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 892 人关注过本帖
标题:帮我看看为什么不能运行到goto得到时候就错误了
只看楼主 加入收藏
竹闲云
Rank: 2
等 级:论坛游民
帖 子:39
专家分:34
注 册:2011-10-9
结帖率:62.5%
收藏
已结贴  问题点数:15 回复次数:11 
帮我看看为什么不能运行到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
heroinearth
Rank: 10Rank: 10Rank: 10
来 自:云南曲靖
等 级:青峰侠
帖 子:430
专家分:1506
注 册:2011-10-24
收藏
得分:1 
可以用break 跳出当前循环,要跳出2层循环,第2层中也应有一个break,

2011-11-03 16:22
heroinearth
Rank: 10Rank: 10Rank: 10
来 自:云南曲靖
等 级:青峰侠
帖 子:430
专家分:1506
注 册:2011-10-24
收藏
得分:3 
if(a[i]=='end')
你这句中的'end'不是字,也不是字符串,a[i]中存不了
2011-11-03 16:26
竹闲云
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
laznrbfe
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:482
专家分:1599
注 册:2011-5-22
收藏
得分:0 
最好不要用goto语句。
2011-11-03 16:27
竹闲云
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
heroinearth
Rank: 10Rank: 10Rank: 10
来 自:云南曲靖
等 级:青峰侠
帖 子:430
专家分:1506
注 册:2011-10-24
收藏
得分:3 
int a[2000],b[2000],j,k,h,q=1;
改为q=0试试,
2011-11-03 16:55
laznrbfe
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:482
专家分:1599
注 册:2011-5-22
收藏
得分:2 
程序代码:
/* Note:Your choice is C IDE */
#include "stdio.h"
#define end 0//////
int main(void)
{
    int a[2000]={0};
    double b[500]={0.0};//
    int 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++)
    {
        printf("学生号(输入非正整数结束输入):\n");
        scanf("%d",&a[i]);
        if(a[i]<=end)////////输入小于等于0结束
        {
            goto ioop;
        }
        i++;
        printf("输入三门成绩:");
        for(;i<=m;i++)
        {       
            scanf("%d",&a[i]);
            while(a[i]<0)/////当输入的成绩小于0时,提示重新输入改成绩
            {
                printf("分数必须大于等于0!请重新输入:");
                scanf("%d",&a[i]);
            }
        }
        m+=4;
        printf("\n");
        q++;
   
    }
    ioop:
    //t=1;r=3;
    for(k=0;k<=q;k++)
    {
        for(;t<=r;t++)
        {
            b[k]+=(double)a[t];
        }
        b[k]=b[k]/3;
//        t+=1;//t++已经加1了
        r+=4;
    }
    //g=0;v=3;
    printf(" 学 号  分数1\t分数2\t分数3\t\t平均成绩\n");
    for(h=0;h<q;h++)
    {
        for(;g<=v;g++)
        {
            printf("%5d\t",a[g]);
        }
        printf("\t%5.2f",b[h]);
        v+=4;
        printf("\n");
    }
    return 0;
} 
2011-11-03 16:57
特浓百分百
Rank: 2
等 级:论坛游民
帖 子:8
专家分:14
注 册:2011-10-23
收藏
得分:3 
// my_4.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
void main()
{
    int a[2000],b[2000],j,k,h,q=0;//q从0开始
    int i=0,m=3;
    int t=1,r=3;
    int g=1,v=3;//g
    for(j=1;j<=2000;j++)
    {
        for(;i<=m;i++)
        {
            scanf("%d",&a[i]);
        }
        if((a[i]=getchar())=='a')   break;
        printf("结束输入,请输入'a'!");
        m+=4;
        printf("\n");
        q++;//输入的总人数
        
    }
    for(k=1;k<=q;k++)
    {
        int sum=0;
        for(;t<=r;t++)
        
           sum+=a[t];
        
        b[k]=sum/3;//不能用b[k]=b[k]+a[t]   
        t+=1;
        r+=4;
    }
   
    for(h=1;h<=q;h++)
    {
        printf("第%d个人的三科成绩:\n",h);
        for(;g<=v;g++)
        {
            printf("%5d:\n",a[g]);
        }
        printf("平均成绩%5d\n",b[h]);
        v+=4;
        g++;//连续的数组有一个是存学号的
    }
}

2011-11-03 21:26
快速回复:帮我看看为什么不能运行到goto得到时候就错误了
数据加载中...
 
   



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

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