提示用户在C中再次播放

时间:2012-02-24 04:37:09

标签: c arrays main scanf prompt

我已经在另一篇文章中就此问过,但没有一个答案对我的计划有帮助。我有一个程序,询问用户数字并计算平均值,中位数和模式。然后程序应该提示用户再次玩,如果用户选择y或Y它应该重放游戏,n或N停止,如果不是那样的其他东西,说无效,请输入y或n到bla bla你懂了。这是我的主要,我的方法goAgain():

#define MAX 25
#include<stdio.h>
#include <stdbool.h>
#include <time.h>
#include <stdlib.h>

int readTotalNums();
void fillArray(int total, int nums[]);
void sortArray(int nums[], int total);
double findMean(int nums[], int total);
double findMedian(int nums[], int total);
int findMode(int nums[], int total);
void printResults(double mean, double median, double mode);
bool goAgain();

int main()  {
int nums[MAX];
int total;
double mean, median, mode;
bool b;
do {
    total = readTotalNums();
    fillArray(total, nums);
    sortArray(nums, total);
    mean = findMean(nums, total);
    median = findMedian(nums, total);
    mode = findMode(nums, total);
    printResults(mean, median, mode);
    b = goAgain();
} while (b==true);
return 0;
}

//其他方法

bool goAgain() {
char *temp;
printf("\nWould you like to play again(Y/N)? ");
scanf("%c", &temp);
while (temp != 'n' && temp != 'N' && temp != 'y' && temp != 'Y') {
    printf("\nI am sorry that is invalid -- try again");
    printf("\nWould you like to play again(Y/N)? ");
    scanf("%c", &temp);
}
if (temp == 'y' || temp == 'Y') {
    return true;
} else {
    return false;
}
}

每次我玩游戏,它都会出现提示,我输入的任何内容都无效,并且一直说无效,即使输入是ay或N.感谢您的帮助:)

3 个答案:

答案 0 :(得分:4)

char *temp;应为char temp;

答案 1 :(得分:2)

不要将temp声明为指针,也不要为它分配内存。

而是将您的声明更改为

char temp;

答案 2 :(得分:0)

因为你已经有了正确的答案,所以不必再说了,所以我会添加一个小小的提示。

//this
if (temp == 'y' || temp == 'Y') {
    return true;
} else {
    return false;
}

//is the same as this
return temp == 'y' || temp == 'Y';


//or more generally
if(condition)
    return true
else
    return false

//is just
return condition