C 程序打印与我为其生成的坐标不同的坐标

C 程序打印与我为其生成的坐标不同的坐标,c,random,coordinates,C,Random,Coordinates,基本上,我需要我的程序将我手动输入的点放置在网格上(这样做很好),然后在同一网格上随机放置一个点,并根据用户请求重复多次。目前,我的代码打印计算机选择的数字,但直到我键入另一个数字并按enter键后才将它们放在网格上,然后将其放在一个看似随机的位置。 这是我的密码 void placeCShip(){ int a,b; srand(time(NULL)); a = printf("%d\n", rand()%15); b = printf("%d\n", rand

基本上,我需要我的程序将我手动输入的点放置在网格上(这样做很好),然后在同一网格上随机放置一个点,并根据用户请求重复多次。目前,我的代码打印计算机选择的数字,但直到我键入另一个数字并按enter键后才将它们放在网格上,然后将其放在一个看似随机的位置。 这是我的密码

void placeCShip(){
    int a,b;
    srand(time(NULL));
    a = printf("%d\n", rand()%15);
    b = printf("%d\n", rand()%15);
    scanf("%d, %d", &a, &b);
    if (grid[a][b] == SEA, grid[a][b] != PSHIP){
        grid[a][b] = CSHIP;
    }
}
这是重复它的函数,当我排除CShips时,它工作得很好,当我包含它时,Pships仍然工作,但是CShips不能给出正确的坐标

void placePShips(){
    int i,fleetSize;
    printf("\nEnter fleet size : ");
    scanf("%d", &fleetSize);
    for(i=0;i<fleetSize;i++){
        placePShip();
        placeCShip();
        printGrid();
    }
}
void placePShips(){
int i,车队规模;
printf(“\n输入车队大小:”);
scanf(“%d”、&fleetSize);

对于(i=0;i简短回答:您有不需要的“scanf”呼叫,这将

<代码>混合IO和打字。考虑在使用之前检查每个函数的每个页面。还要注意编译器警告,因为这样可以节省大量调试时间。 从PlaceChip开始:

void placeCShip(){
    // Loop until unused location is found.
    while ( 1 ) {
        int a=rand()%15 ;
        int b=rand()%10 ;
// MOVE to 'main':    srand(time(NULL));
        if (grid[a][b] == SEA){
            grid[a][b] = CSHIP;
            break ;
        }
    }
}

玩家游艇,考虑切换到FDES/sSCANF。'ScNFF '将使你进入解析错误的无限循环。

void placePShip(){
    // Loop until valid coordinates are entered.
    while ( 1 ) {
        int x,y;
        printf("\nEnter Ship location: x , y: ");
        scanf("%d , %d", &x, &y);
        if (grid[y][x] == SEA){
            grid[y][x] = PSHIP;
            break ;
       }
    }
}

您的代码中有更多未显示的对
scanf()
的调用。请在这里输入一个.What is
SEA,
?…我希望使用
&&
|
而不是条件中两个检查之间的逗号。@Yunnosch在那里添加了完整的代码,现在应该可以看到所有内容:)@Yunnosch它现在工作正常,除了每次我输入坐标或车队大小时,我必须键入一个字符并输入它以移动到下一行/代码段;关于调用
srand()
。该函数应该只调用一次,最好在
main()
函数的开头
void placePShip(){
    // Loop until valid coordinates are entered.
    while ( 1 ) {
        int x,y;
        printf("\nEnter Ship location: x , y: ");
        scanf("%d , %d", &x, &y);
        if (grid[y][x] == SEA){
            grid[y][x] = PSHIP;
            break ;
       }
    }
}