我认为我的问题很简单,但我看不出来。我是C语言编程新手,这是我一点一点地学习的成果。我想我一定没有正确定义我的char变量“dopt”。希望你能帮忙。代码如下:

#include <stdio.h>


int dbref();
int aart();
int wgame();
int calc();
int txtoc();

int amin()

{
char dopt;
printf("What should this program have the options of doing?\n");
printf("A) Reference a database?\n");
printf("B) Print ascii art?\n");
printf("C) Make a noun, pronoun, object, verb word game?\n");
printf("D) Being a calculator?\n");
printf("E) creating a text file and save it as a .c file?\n");
printf("F) or should it just terminate?\n");
scanf("%c", &dopt);
if (dopt == a || A)
    { dbref();}
if (dopt== b || B)
     { aart();}
if ( dopt==c || C)
    { wgame();}
if ( dopt==d || D)
     { calc();}
if ( dopt==e || E)
    { txtoc();}
if (  dopt==f || F)
    { return 0;}
return 1;
}

dbref()
{
printf("reference A correct");
return 2;
}

aart()
{
printf("reference B correct");
return 3;

}

wgame()
{
printf("reference C correct");
return 4;

}

calc()
{
printf("reference D correct");
return 5;

}

txtoc()
{
printf("reference E correct");
 return 6;

}

另外,函数中的printf例程只是为了验证菜单是否正确流动。

最佳答案

a'a'不同
a是标识符
'a'是一个字符
如果char变量dopt的内容是任何字符,则需要与之匹配。因此,您需要比较字符的ASCII值,这可以通过将字符放在单引号中找到。
因此

if (dopt == a || A)
   { dbref();}

aA被视为两个单独的变量(名称),它们没有声明(至少在本地)。
所以应该是
if (dopt == 'a' || 'A')
    { dbref();}

这里'a''A'是字符常量,而不是变量名。
但由于'a'是逻辑或运算符,因此'A'|。因此||将始终为假(几乎)。但是,如果您想使dopt的效果为dopt'a'则调用'A',则需要执行以下操作:
if ((dopt == 'a') || (dopt == 'A'))
    { dbref();}

或者也
if (toupper (dopt) == 'A') // similar with tolower ()
    { dbref();}

08-15 23:10