| 网站首页 | 业界新闻 | 群组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 编程论坛
免费IT实战开发视频教程合集分享千里之行 始于足下
共有 322 人关注过本帖
标题:想赋值,并且保证不重复,但是陷入了死循环,求大神帮忙看看
只看楼主 加入收藏
tomye
Rank: 2
等 级:论坛游民
帖 子:22
专家分:10
注 册: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))
2018-09-12 16:43
tomye
Rank: 2
等 级:论坛游民
帖 子:22
专家分:10
注 册:2017-12-1
  得分:0 
程序还是有点乱,我还是贴上来吧
2018-09-12 16:49
rjsp
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:267
帖 子:5924
专家分:33728
注 册:2011-1-18
  得分:2 
scanf("%2", &temp_3); 是什么?随便问问

如果 car_num 大于 lane,那肯定死循环
2018-09-12 16:49
tomye
Rank: 2
等 级:论坛游民
帖 子:22
专家分:10
注 册:2017-12-1
  得分:0 
回复 3楼 rjsp
那是一个检验重复时中断的操作
2018-09-12 16:50
tomye
Rank: 2
等 级:论坛游民
帖 子:22
专家分:10
注 册:2017-12-1
  得分:0 
回复 3楼 rjsp
后面少一个d,程序里没错
2018-09-12 16:51
tomye
Rank: 2
等 级:论坛游民
帖 子:22
专家分:10
注 册:2017-12-1
  得分:0 
回复 3楼 rjsp
car_num是小于lane的,我把程序贴上来
2018-09-12 16:51
tomye
Rank: 2
等 级:论坛游民
帖 子:22
专家分:10
注 册: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编辑过]

2018-09-12 16:51
tomye
Rank: 2
等 级:论坛游民
帖 子:22
专家分:10
注 册:2017-12-1
  得分:0 
终于贴好了
2018-09-12 16:56
rjsp
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:267
帖 子:5924
专家分:33728
注 册:2011-1-18
  得分:8 
回复 7楼 tomye
int m = 1;
移到
for (n = 0; n < car_num; n++)
内部

这都是不良编码习惯造成的
2018-09-12 17:02
tomye
Rank: 2
等 级:论坛游民
帖 子:22
专家分:10
注 册:2017-12-1
  得分:0 
回复 9楼 rjsp
谢谢,确实可以了,可以解释一下吗,想了一下没有明白
2018-09-12 17:05







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

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