簡體   English   中英

讓用戶在輸入錯誤選項后再次嘗試輸入

[英]Letting user try inputting again after entering incorrect option

所以我有一些代碼可以生成一組隨機數。 之后,它會詢問用戶是否要生成另一組隨機數。 我遇到的問題是我希望用戶只輸入 y 表示是或 n 表示否,如果他們沒有將這些輸入到選項中,請告訴他們這是無效輸入並重試。 我無法弄清楚如何做到這一點。 這是代碼:

// C program for generating a
// random number in a given range.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>

// Generates and prints 'count' random
// numbers in range [lower, upper].
void printRandoms(int lower, int upper,
                            int count) {
    int i;

    printf("\nGenerated Numbers:\n");
    for (i = 0; i < count; i++) {
        int num = (rand() %
        (upper - lower + 1)) + lower;
        printf("%d ", num);
    }
}

int main() {
    int lower, upper, count;
    char c='y';

    do {
        printf("Minimum number size:\n");
        scanf("%d", &lower);
        printf("\nMaximum number size:\n");
        scanf("%d", &upper);
        printf("\nAmount of numbers to be generated:\n");
        scanf("%d", &count);

        // Use current time as
        // seed for random generator
        srand(time(0));

        printRandoms(lower, upper, count);

        printf("\n\nGenerate new set? (y/n)\n");
        scanf(" %c",&c);
        printf("\n");
        if (c=='n'){
            exit(0);
        }
        do {
            printf("Please enter valid input!\n");
            scanf(" %c", &c);
            if (c=='n'){
              exit(0);
            }
        } while (c!='y'||c!='n');

    } while(c=='y');

    return 0;
}

任何幫助,將不勝感激。

這回答了您的問題,但附帶說明一下,我通常喜歡將條件放在第一個問題中,因此如果用戶輸入零,則應用程序將退出。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>

// Generates and prints 'count' random
// numbers in range [lower, upper].
void printRandoms(int lower, int upper,
                            int count) {
    int i;

    printf("\nGenerated Numbers:\n");
    for (i = 0; i < count; i++) {
        int num = (rand() %
        (upper - lower + 1)) + lower;
        printf("%d ", num);
    }
}

int main() {
    int lower, upper, count;
    char c='y';

    do {
        printf("Minimum number size: ");
        scanf("%d", &lower);
        printf("\nMaximum number size: ");
        scanf("%d", &upper);
        printf("\nAmount of numbers to be generated: ");
        scanf("%d", &count);

        // Use current time as
        // seed for random generator
        srand(time(0));

        printRandoms(lower, upper, count);

        printf("\n\nGenerate new set? (y/n)\n");

        do {
            printf("\t\t==> ");
            scanf(" %c", &c);
            c &= 0x5f;          // convert to uppercase

            if (c=='N') exit(0);
            } while (c != 'Y');

        } while (1);

    return 0;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM