C 打印错误字符的问题
我一直在玩弄一个简单的刽子手程序(新计算机科学专业)的想法,而这段代码,虽然逻辑正确,工作正常,但打印出一个奇怪的字符(╠ 确切地说)而不是像它应该的那样打印下划线(u)。这似乎只有在出现“elseif”语句时才会发生。有人知道这是什么原因吗C 打印错误字符的问题,c,C,我一直在玩弄一个简单的刽子手程序(新计算机科学专业)的想法,而这段代码,虽然逻辑正确,工作正常,但打印出一个奇怪的字符(╠ 确切地说)而不是像它应该的那样打印下划线(u)。这似乎只有在出现“elseif”语句时才会发生。有人知道这是什么原因吗 #include <stdlib.h> #include <stdio.h> int main(){ char w[13][3] = { { 'c', 'a', 't' }, //0 { 'd'
#include <stdlib.h>
#include <stdio.h>
int main(){
char w[13][3] = {
{ 'c', 'a', 't' }, //0
{ 'd', 'o', 'g' }, //1
{ 'r', 'a', 't' }, //2
{ 'e', 'e', 'l' }, //3
{ 'c', 'o', 'w' }, //4
{ 'o', 'w', 'l' }, //5
{ 'e', 'm', 'u' }, //6
{ 'b', 'a', 't' }, //7
{ 'e', 'l', 'k' }, //8
{ 'p', 'i', 'g' }, //9
{ 'b', 'e', 'e' }, //10
{ 'h', 'e', 'n' }, //11
{ 'f', 'o', 'x' }, //12
};
char u,
dis[100];
int random;
srand(time(NULL));
random = rand() % 13;
printf("%d\n", random); //check random number
printf("Enter a letter: ");
u = getchar();
for (int i = 0; i < 3; i++){
if (w[random][i] == u){
dis[i] = u;
}
else if (w[random][i] == '_'){
continue;
}
else if (w[random][i] != u && w[random][i] != '_'){
continue;
}
else {
dis[i] = '_';
}
}
for (int i = 0; i < 3; i++){
printf("%c", dis[i]);
}
printf("\n\n");
system("pause");
}
#包括
#包括
int main(){
字符w[13][3]={
{'c','a','t'},//0
{'d','o','g'},//1
{'r','a','t'},//2
{'e','e','l'},//3
{'c','o','w'},//4
{'o','w','l'},//5
{'e','m','u'},//6
{'b','a','t'},//7
{'e','l','k'},//8
{'p','i','g'},//9
{'b','e','e'},//10
{'h','e','n'},//11
{'f','o','x'},//12
};
查鲁,
dis[100];
int随机;
srand(时间(空));
random=rand()%13;
printf(“%d\n”,随机);//检查随机数
printf(“输入字母:”);
u=getchar();
对于(int i=0;i<3;i++){
如果(w[随机][i]==u){
dis[i]=u;
}
else如果(w[random][i]=''.''{
继续;
}
如果(w[random][i]!=u和&w[random][i]!=''{
继续;
}
否则{
dis[i]='u';
}
}
对于(int i=0;i<3;i++){
printf(“%c”,dis[i]);
}
printf(“\n\n”);
系统(“暂停”);
}
你的第二个否则如果
声明
else如果(w[random][i]!=u和&w[random][i]!=''''''''.'的话
大多数情况下都是真的(只要你猜不到正确的随机字母)。因为该块中唯一的语句是continue代码>,您的dis[i]
未设置。您的输出正在打印尚未初始化的字符
可使用的替代实现(例如)
int-hangman=0;
char u;
int maxGuesses=10;
//种子随机部分
而(刽子手){
printf(“%d\n”,随机);//检查随机数
printf(“输入字母:”);
u=getchar();
对于(i=0;i您的第二个else if
语句
else如果(w[random][i]!=u和&w[random][i]!=''''''''.'的话
大多数情况下都是真的(只要你猜不到正确的随机字母)。由于该块中唯一的语句是continue;
,因此没有设置你的dis[i]
。你的输出是打印一个尚未初始化的字符
可使用的替代实现(例如)
int-hangman=0;
char u;
int maxGuesses=10;
//种子随机部分
而(刽子手){
printf(“%d\n”,随机);//检查随机数
printf(“输入字母:”);
u=getchar();
对于(i=0;i您的第二个else if
语句
else如果(w[random][i]!=u和&w[random][i]!=''''''''.'的话
大多数情况下都是真的(只要你猜不到正确的随机字母)。由于该块中唯一的语句是continue;
,因此没有设置你的dis[i]
。你的输出是打印一个尚未初始化的字符
可使用的替代实现(例如)
int-hangman=0;
char u;
int maxGuesses=10;
//种子随机部分
而(刽子手){
printf(“%d\n”,随机);//检查随机数
printf(“输入字母:”);
u=getchar();
对于(i=0;i您的第二个else if
语句
else如果(w[random][i]!=u和&w[random][i]!=''''''''.'的话
大多数情况下都是真的(只要你猜不到正确的随机字母)。由于该块中唯一的语句是continue;
,因此没有设置你的dis[i]
。你的输出是打印一个尚未初始化的字符
可使用的替代实现(例如)
int-hangman=0;
char u;
int maxGuesses=10;
//种子随机部分
而(刽子手){
printf(“%d\n”,随机);//检查随机数
printf(“输入字母:”);
u=getchar();
对于(i=0;i而言,随机字符的显示由以下原因引起:
dis
未初始化
dis[i]
在for
循环中的两个子句中未设置为
在for
循环中
for (int i = 0; i < 3; i++){
if (w[random][i] == u){
dis[i] = u;
}
else if (w[random][i] == '_'){
// Missing code to set dis[i]
continue;
}
else if (w[random][i] != u && w[random][i] != '_'){
// Missing code to set dis[i]
continue;
}
else {
dis[i] = '_';
}
}
这个条件永远不会是真的。测试用例中没有一个单词包含“
根据您的数据,在
if (w[random][i] == u){
或
将是真的。这意味着,最后一条
else {
dis[i] = '_';
}
永远不会被锻炼
我认为您的代码可以简化为:
for (int i = 0; i < 3; i++){
if (w[random][i] == u){
dis[i] = u;
}
else {
dis[i] = '_';
}
}
for(int i=0;i<3;i++){
如果(w[随机][i]==u){
dis[i]=u;
}
否则{
dis[i]='u';
}
}
随机字符的显示是由以下原因引起的:
dis
未初始化
dis[i]
在for
循环中的两个子句中未设置为
在for
循环中
for (int i = 0; i < 3; i++){
if (w[random][i] == u){
dis[i] = u;
}
else if (w[random][i] == '_'){
// Missing code to set dis[i]
continue;
}
else if (w[random][i] != u && w[random][i] != '_'){
// Missing code to set dis[i]
continue;
}
else {
dis[i] = '_';
}
}
这个条件永远不会是真的。测试用例中没有一个单词包含“
根据您的数据,在
if (w[random][i] == u){
或
将是真的。这意味着,最后一条
else {
dis[i] = '_';
}
永远不会被锻炼
我认为您的代码可以简化为:
for (int i = 0; i < 3; i++){
if (w[random][i] == u){
dis[i] = u;
}
else {
dis[i] = '_';
}
}
for(int i=0;i<3;i++){
如果(w[随机][i]==u){
dis[i]=u;
}
否则{
dis[i]='u';
}
}
随机字符的显示是由以下原因引起的:
dis
未初始化
dis[i]
在for
循环中的两个子句中未设置为
在for
循环中
for (int i = 0; i < 3; i++){
if (w[random][i] == u){
dis[i] = u;
}
else if (w[random][i] == '_'){
// Missing code to set dis[i]
continue;
}
else if (w[random][i] != u && w[random][i] != '_'){
// Missing code to set dis[i]
continue;
}
else {
dis[i] = '_';
}
}
这个条件永远不会是真的。测试用例中没有一个单词包含“
根据您的数据,在
if (w[random][i] == u){
或
将是真的。这意味着,最后一条
else {
dis[i] = '_';
}
永远不会被锻炼
我想你的密码