| 网站首页 | 业界新闻 | 群组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 编程论坛
共有 208 人关注过本帖
标题:想赋值,并且保证不重复,但是陷入了死循环,求大神帮忙看看
只看楼主 加入收藏
tomye
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2017-12-1
结帖率:50%
  已结贴   问题点数:10  回复次数:11   
想赋值,并且保证不重复,但是陷入了死循环,求大神帮忙看看

for (n = 0; n < car_num; n++)
    {
        p[n] = rand() % lane;
        //        scanf("第一次检验:%2d", &k);        
        for (i = 0; i < n; i++)
        {
            if (p[n] == p[i])
            {
                m = 0;
                printf("%2d", n);
                scanf("%2", &temp_3);
            }
        }
        if (m == 0)
        {
            n--;
        }
        printf("%2d ,%2d\n", n, p[n]);

    }
// 在主函数里我加了时间为种子,即srand(time(null))
7 天前 16:43
tomye
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2017-12-1
  得分:0 
程序还是有点乱,我还是贴上来吧
7 天前 16:49
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:260
帖 子:5789
专家分:32992
注 册:2011-1-18
  得分:2 
scanf("%2", &temp_3); 是什么?随便问问

如果 car_num 大于 lane,那肯定死循环
7 天前 16:49
tomye
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2017-12-1
  得分:0 
回复 3楼 rjsp
那是一个检验重复时中断的操作
7 天前 16:50
tomye
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2017-12-1
  得分:0 
回复 3楼 rjsp
后面少一个d,程序里没错
7 天前 16:51
tomye
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2017-12-1
  得分:0 
回复 3楼 rjsp
car_num是小于lane的,我把程序贴上来
7 天前 16:51
tomye
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2017-12-1
  得分:0 
#include<stdio.h>
#include<time.h>
#include<string.h>
#include <stdlib.h>

///////////////////////
#define lane 1000
#define car_num 50
#define time_count 1000
#define pi 0.3
#define vmax 5
#define mg 125000
#define r 0.52
void inicars();
void move();
int FindFront(int);
int v[car_num][lane];
int p[car_num];           //location with p[i];
int a[car_num];           // 加速度
void main()
{    int k;
    srand(time(0));
    inicars();
    for (k = 0; k < time_count; k++)
    {
        move();
        fprintf(h, "时间:%2d\n", k);
    }
    fclose(h);
    printf("OK");
    getchar();
}
void inicars()
{
    int i, j, n, t, temp_1, temp_3;
    int m = 1;
    for (n = 0; n < car_num; n++)
    {
        p[n] = rand() % lane;
        //        scanf("第一次检验:%2d", &k);        
        for (i = 0; i < n; i++)
        {
            if (p[n] == p[i])
            {
                m = 0;
                printf("%2d", n);
                scanf("%2d", &temp_3);
            }
        }
        if (m == 0)
        {
            n--;
        }
        printf("%2d ,%2d\n", n, p[n]);

    }
   

[此贴子已经被作者于2018-9-12 16:55编辑过]

7 天前 16:51
tomye
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2017-12-1
  得分:0 
终于贴好了
7 天前 16:56
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:260
帖 子:5789
专家分:32992
注 册:2011-1-18
  得分:8 
回复 7楼 tomye
int m = 1;
移到
for (n = 0; n < car_num; n++)
内部

这都是不良编码习惯造成的
7 天前 17:02
tomye
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2017-12-1
  得分:0 
回复 9楼 rjsp
谢谢,确实可以了,可以解释一下吗,想了一下没有明白
7 天前 17:05







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

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