我必须用C语言写一个简短的程序,它接受红绿灯的状态(如果是绿灯或红灯),并显示我们必须做的动作(通过道路/停车).In我的意见,我们必须在这里使用if子句。所以我用C语言写了这段代码,但当我运行它时,它会显示"Red..“如果我尝试按下什么,它只显示“绿色”..What我做错了吗?代码如下:
#include<stdio.h>
int main()
{
int red,green;
printf(" red :");
scanf("%d",&red);
printf(" green :");
scanf("%d",&green);
if ( red ){
printf(" Stop %d\n",red);
}
else{
printf("Pass the road - %d\n",green);
}
return 0;
}发布于 2013-04-21 21:07:07
您需要考虑用户将如何描述灯光的当前状态。而不是问它是红色的吗?并检查他是否输入了一个非零整数,这意味着是,你可以要求用户输入颜色。然后,根据他键入的内容,显示相应的消息。
#include<stdio.h>
#include<string.h>
int main(){
char colorName[128];
printf(" What color is the light: ");
scanf("%s", colorName);
if ( strcmp(colorName, "red") == 0 ){
printf(" Stop!\n");
}else if ( strcmp(colorName, "green") == 0 ){
printf("cross the road\n");
}else {
printf("is %s even a color?\n", colorName);
}
return 0;
}发布于 2013-04-21 20:56:13
您已将整数与if条件一起使用。在C语言中,在if语句中计算的任何正整数都被认为是真的。
if(some positive number)
{
// always true
}
else
{
//control never reaches here
}一种解决方法可能是针对不同的条件使用特定值。
例如,试试这个
if ( red == 1){
printf(" Stop %d\n",red);
}
else{
printf("Pass the road - %d\n",green);
}现在,您的if条件有一个特定的更好的输入条件,其中只有一个特定的数字对应于给定的条件。您可以继续添加使用else-if打印绿色语句的条件,或者将其设为默认条件。
使用switch-case的类似实现为:
switch(red)
{
case 1: printf(" Stop %d\n",red);
break;
default: printf("Pass the road - %d\n",green);
break;
}发布于 2013-04-21 20:39:34
您可以使用%d请求整数类型的输入。
根据C的布尔逻辑,0为假,!0为真。因此,除非您输入0作为第一个整数,否则您将始终在第一个子句中结束。
https://stackoverflow.com/questions/16131153
复制相似问题