请问在输入错误不在范围内时,即执行else时,会出现2个else的执行结果是为什么?谢谢!

#include<stdio.h>
int main()
{
	char c1;
	printf("货物的运输方式如下表:\n");
	printf("选择 a、【货车】: 10 元基本运费,请注意货运的路程不能大于2500Km!;\n");
	printf("选择 b、【铁路】:100 元基本运费;\n");
	printf("选择 c、【船运】:200 元基本运费;\n");
	printf("选择 d、【空运】:400 元基本运费,请注意空运的路程必须大于500Km!。\n");
	printf("\n");
	for(c1!='a'||c1!='b'||c1!='c1'||c1!='d';;)
	{
		printf("请选择:");
		c1=getchar();
		if(c1=='a')
		{
			printf("已成功选择【货车】\n");
			break;
		}
		else if(c1=='b')
		{
			printf("已成功选择【铁路】\n");
			break;
		}
		else if(c1=='c')
		{
			printf("已成功选择【船运】\n");
			break;
		}
		else if(c1=='d')
		{
			printf("已成功选择【空运】\n");
			break;
		}
		else
			printf("无效选择!请重新选择!\n");
	}
	return 0;
}

 

12: warning: multi-character character constant [-Wmultichar]
  for(c1!='a'||c1!='b'||c1!='c1'||c1!='d';;)
                            ^~~~

首先代码12行写错了。

其次没有退出选择??写了个死循环

这样才是你想表达的意思

for(;c1!='a'||c1!='b'||c1!='c'||c1!='d';)

 

修改一下你就知道为什么了

printf("无效选择!请重新选择!%c\n",c1);
printf("----\n");

这个时候看一下输入输出(自己问问题要写清楚哪里出问题了以及出问题的记录!!!)


请选择:e
无效选择!请重新选择!e
----
请选择:无效选择!请重新选择!

----
请选择:a
已成功选择【货车】

有没有看出来第二次else多了什么东西????是不是多了换行????

这只有部分代码,就是想问一下为什么输入的不是‘a’‘b’‘c’‘d’时,会直接出现2个“无效选择......”的结果。谢谢回答

醉了,多了换行??get到点了嘛???你输入e真的只是输入了"e"吗????回车哪里来的??????

明白了,那怎么改,刚学C,真不知道