我认为我的问题很简单,但我看不出来。我是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();}
a
和A
被视为两个单独的变量(名称),它们没有声明(至少在本地)。所以应该是
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();}