我已经在另一篇文章中就此问过,但没有一个答案对我的计划有帮助。我有一个程序,询问用户数字并计算平均值,中位数和模式。然后程序应该提示用户再次玩,如果用户选择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.感谢您的帮助:)
答案 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