| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1124 人关注过本帖
标题:问题求助 为什么会报错
只看楼主 加入收藏
a15022606145
Rank: 1
等 级:新手上路
帖 子:75
专家分:0
注 册:2015-7-11
收藏
 问题点数:0 回复次数:5 
问题求助 为什么会报错
程序代码:
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int arr[20]={0};
    for(int i =0;i<20;i++) arr[i] = 1;
    int count = 20;
    int n = 0;
    printf("----------------->\n");
    int w = 0;
    for(int i=0;count>=1;i++)
    {
        n ++;
        if(n == 3)
        {
            arr[i] = 2;
            printf("%d   %d出局\n",w,i);
            count --;
            w++;
            n =0;
    
        }
        if(i >=20) i= 0;
    }

    

    return 0;
}



这个代码是解决一个问题的,就是20个人 数数  ,从1-3 数到3的人退出,然后剩下的人继续从1数数,最后剩下一个人。  我用n 代表着数字1-3
程序代码:
for(int i=0;count>=1;i++)
    {
        n ++;
        if(n == 3)
        {
            arr[i] = 2;
            printf("%d   %d出局\n",w,i);
            count --;
            w++;
            n =0;
    
        }
        if(i >=20) i= 0;
    }


当我在if中给n赋值0的时候 程序可以编译, 可以显示结果。 但是显示DEBUG ERROR  。 请问各位 这是为什么啊?
搜索更多相关主题的帖子: 报错 int for i++ count 
2018-08-14 20:41
zhoujie13
Rank: 2
等 级:论坛游民
威 望:1
帖 子:29
专家分:38
注 册:2018-7-8
收藏
得分:0 
if里的i和for里的i不是同一个吧,你试试在for语句外面定义int i
2018-08-14 21:11
a15022606145
Rank: 1
等 级:新手上路
帖 子:75
专家分:0
注 册:2015-7-11
收藏
得分:0 
回复 2楼 zhoujie13
不是啊  我是在if中修改n的数值 才出现的错误
2018-08-14 21:27
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:0 
以下是你的程序输出
----------------->
0   2出局
1   5出局
2   8出局
3   11出局
4   14出局
5   17出局
6   20出局
7   3出局
8   6出局
9   9出局
10   12出局
11   15出局
12   18出局
13   1出局
14   4出局
15   7出局
16   10出局
17   13出局
18   16出局
19   19出局
看出这一句“20出局”有什么不对吗?

2018-08-15 08:51
kfyniriu
Rank: 6Rank: 6
等 级:侠之大者
威 望:9
帖 子:105
专家分:426
注 册:2018-7-6
收藏
得分:0 
主要还是编写不规范引起的,C语言有规定,要用到的变量需要全部在头部定义。
定义局部变量i,在这里没有起到任何关键作用
逻辑不严谨,当n=4的时候,排除就会产生循环,可以修改为:
if(arr[i]!=2 )
        n ++;
2018-08-15 09:11
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:0 
程序代码:
#include <stdio.h>

int main( void )
{
    _Bool arr[20] = {0};
    const size_t count = sizeof(arr)/sizeof(*arr);

    for( size_t i=0,j=0,k=0; k!=count; i=(i+1)%count )
    {
        j = j%3 + !arr[i];
        if( j != 3 )
            continue;

        arr[i] = 1;
        printf( "%2zu --- %2zu out\n", k++, i );
    }
}

输出
 0 ---  2 out
 1 ---  5 out
 2 ---  8 out
 3 --- 11 out
 4 --- 14 out
 5 --- 17 out
 6 ---  0 out
 7 ---  4 out
 8 ---  9 out
 9 --- 13 out
10 --- 18 out
11 ---  3 out
12 --- 10 out
13 --- 16 out
14 ---  6 out
15 --- 15 out
16 ---  7 out
17 ---  1 out
18 --- 12 out
19 --- 19 out

2018-08-15 15:18
快速回复:问题求助 为什么会报错
数据加载中...
 
   



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

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