| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4696 人关注过本帖
标题:如何中断for循环
只看楼主 加入收藏
qhxxbc
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:163
专家分:174
注 册:2010-9-14
结帖率:95%
收藏
已结贴  问题点数:16 回复次数:10 
如何中断for循环
void main()
{
    int a[]={1,2,3,4,5,4,3,2,1,2,3,4,5,4,3,2,1,2,3,4,5,4,3}, i;
    for(i=0; i<=19; i++)
    {   
        if (a[i]<a[i+1]&&a[i+1]>a[i+2])        
        {
        printf("%d %d\n", i+1, a[i+1]);   
        continue;               
        }
        if (a[i]<a[i+1]&&a[i+1]>a[i+2])        
        {
        printf("%d %d\n", i+1, a[i+1]);   
        break;               
        }
        //break;
    }            
}

程序说明:想求数组a[]中元素的周期,思路是求出两次最大值对应的i。
运行结果:4 5;12 5;20,5
问题:结果中只想出现4 5和12 5,请问如何解决?

补充提问:若数组a[]中有3万个元素,想求出其周期,有什么好的办法?谢谢!
搜索更多相关主题的帖子: 最大值 元素 
2010-11-27 12:37
五当家
Rank: 12Rank: 12Rank: 12
等 级:火箭侠
威 望:2
帖 子:1112
专家分:3674
注 册:2010-10-20
收藏
得分:3 
void main()
{
    int a[]={1,2,3,4,5,4,3,2,1,2,3,4,5,4,3,2,1,2,3,4,5,4,3}, i;
    for(i=0; i<19; i++)    //这里 i<19;
    {   
        if (a[i]<a[i+1]&&a[i+1]>a[i+2])        
        {
        printf("%d %d\n", i+1, a[i+1]);   
        continue;               
        }
       /* if (a[i]<a[i+1]&&a[i+1]>a[i+2])      //这些不需要的.  
        {
        printf("%d %d\n", i+1, a[i+1]);   
        break;               
        }*/
        //break;
    }            
}


经验积累中............
2010-11-27 12:44
qhxxbc
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:163
专家分:174
注 册:2010-9-14
收藏
得分:0 
回复 2楼 五当家
不行啊,结果还是和我原来不想要的一样。麻烦您再帮忙看看

非计算机专业自学新手向大家请教
2010-11-27 12:54
qhxxbc
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:163
专家分:174
注 册:2010-9-14
收藏
得分:0 
我弄错了。
但是,i<=19与 i<19并非解决问题的根本,因为我要面对的是有3万个元素的周期未知的数组

非计算机专业自学新手向大家请教
2010-11-27 12:57
freedgun
Rank: 5Rank: 5
等 级:职业侠客
帖 子:147
专家分:302
注 册:2010-11-11
收藏
得分:0 
a[i+1]>a[i+2]我不明白啊 楼主能解释下吗?

有什么样的付出,就有什么样的收获!!
2010-11-27 13:17
qhxxbc
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:163
专家分:174
注 册:2010-9-14
收藏
得分:0 
回复 5楼 freedgun
因为是一个周期性元素(类似于正弦函数)数组,所以某一值若既大于它前面的值又大于它后面的值,那么它就是一个最大值。

非计算机专业自学新手向大家请教
2010-11-27 13:21
五当家
Rank: 12Rank: 12Rank: 12
等 级:火箭侠
威 望:2
帖 子:1112
专家分:3674
注 册:2010-10-20
收藏
得分:0 
以下是引用qhxxbc在2010-11-27 12:57:04的发言:

我弄错了。
但是,i<=19与 i<19并非解决问题的根本,因为我要面对的是有3万个元素的周期未知的数组
汗,这么多呀,你说有3万个元素,那么元素个数确定了,就可以用int a=元素个数;for(i=0;i<a;i++)来做呀.

经验积累中............
2010-11-27 13:27
qhxxbc
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:163
专家分:174
注 册:2010-9-14
收藏
得分:0 
回复 7楼 五当家
那样的话会输出很多最大值的,我只想要两个,然后确定周期

非计算机专业自学新手向大家请教
2010-11-27 13:31
五当家
Rank: 12Rank: 12Rank: 12
等 级:火箭侠
威 望:2
帖 子:1112
专家分:3674
注 册:2010-10-20
收藏
得分:6 
这样呀,那就再定义一个整型变量赋值为0,每发现一个最大值自增一,如果这个整型变量为2就跳出循环。
收到的鲜花
  • qhxxbc2010-11-27 15:05 送鲜花  1朵   附言:可行

经验积累中............
2010-11-27 13:48
iceworldfb
Rank: 1
等 级:新手上路
帖 子:5
专家分:9
注 册:2010-11-25
收藏
得分:7 
回复 8楼 qhxxbc
你加一个计数参数试试  
void main()
{
    int a[]={1,2,3,4,5,4,3,2,1,2,3,4,5,4,3,2,1,2,3,4,5,4,3};
    int i;
    int count = 0;
    for(i=0; i<=19; i++)
    {
        if(count != 2)
        {
            if (a[i]<a[i+1]&&a[i+1]>a[i+2])
            {
                printf("%d %d\n", i+1, a[i+1]);
                count++;
                break;
            }
        }
        break;
    }            
}

2010-11-27 14:21
快速回复:如何中断for循环
数据加载中...
 
   



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

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