C语言问题:假设输入N,问运行结果是啥?请耐心看完,准确详细解释

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言问题:假设输入N,问运行结果是啥?请耐心看完,准确详细解释相关的知识,希望对你有一定的参考价值。

#include <stdio.h)
void main ( )

char ch;
ch=getch ( );
switch ( ch )

case 'Y': printf ("Yes\n");break;
case 'N': printf ("No\n");
case 'A': printf ("All\n"); break;
default : printf("Yes,No or All\n“);


首行应该是#include <stdio.h>

参考技术A 楼下已经把答案说了,我就告诉为什么执行case 'N'一行后,不直接跳到default。
switch语句实际上是顺次遍历语句,执行完一个case语句后,如果不符合结果就转移到下一个case语句。case 'N'执行后,这个语句是符合条件的,于是就继续往下一条语句执行(注意:是下一条语句,而不是下一条case语句),直到遇到break或者default才会停止。
default是缺省的意思,只有所有case语句都不符合或者找到符合的case语句后一直没遇到break时才执行。
参考技术B 会输出
NO
ALL
因为当switch发现输入是N以后,首先匹配到case 'N'一行,并执行printf("No\n");但是由于这一行后并没有break,所以这个标签直接穿越到下一个标签(case 'A'),并执行printf("All\n"),然后break追问

你的答案是对的。但是我想问它补为什么执行在case 'N'一行后,不直接跳到default,因为case 'A‘跟ch都不匹配,就不会执行啦?

参考技术C 会输出:
No
All
因为 switch ( 表达式)
case a
case b
case c
。。。。。。。。。。。
default :
假如表达式等于a,则它会执行case a以后的所有case情况知道遇到break
假如表达式等于c,则它会执行case c以后的所有case情况知道遇到break
而当所有case的情况都不满足表达式时就会执行default 。。。

希望楼主能看懂、、呵呵
参考技术D #include <stdio.h>
void main ( )

char ch;
ch=getchar( );
switch ( ch )

case 'Y': printf ("Yes\n");break;
case 'N': printf ("No\n");
case 'A': printf ("All\n"); break;
default : printf("Yes,No or All\n");


输入N会显示
No
All
因为你“n”这个case语句中没有使用break;
如果想只输出No,只要加break即可,case 'N': printf ("No\n");break;追问

你的答案是对的。但是我想问它补为什么执行在case 'N'一行后,不直接跳到default,因为case 'A‘跟ch都不匹配,就不会执行啦?

追答

已经找到N了,就不会再判断条件了,顺序向下执行语句printf ("All\n"); break;,所以输出all

本回答被提问者采纳
第5个回答  2011-07-26 1.输入“Y”,显示:
Yes
换行

2.输入“N”,显示:
No
All
换行

3.输入“A”,显示:
All
换行

4.输入其他,显示:
Yes,No or All
换行

C语言中除法怎么取得小数?

1、打开C-Free,新建文件。
2、输入以下内容:(以除法为例)
#include
<stdio.h>
main()

float
a,b,c;
printf("请输入被除数:");
scanf("%f",&a);
printf("\n请输入除数:");
scanf("%f",&b);

c=a/b;
printf("\n%f÷%f=%f\n",a,b,c);

3、按F5运行,得到结果。
4、float
a,b,c;意思是设置三个名为a,b,c的浮点变量,区别于整形变量(int
a,b,c;)和字符串变量(char
a,b,c;),浮点变量是可以带小数的数值变量。
5、scanf("%f",&a);表示将你输入的数字以带6位小数的形式储存于a中。
6、c=a/b;
是一个赋值语句,意思是将a除以b的值给c。四则运算中,加法运算符为+,减法为-,乘法为*,除法为/。
7、如果只想保留三位小数,可以在%f中间加.3,即printf("\n%.3f÷%.3f=%.3f\n",a,b,c)。
8、当然%.3f与%d一样前面的%f与后面变量按顺序一一对应即可。
参考技术A 除了一开始用float进行定义之外,后面进行除法运算的时候要加.0,否则算出的结果电脑会自动取整~~如:3/2的结果和3.0/2的结果就不同~~因为没有定义3/2为浮点型,所以3/2自动取整,结果等于1而3.0/2,由于预先用浮点型表示其结果显然为:1.5
除法运算符"
/
",如果是两个整数相除结果为整数如果需要保留小数时
必须将其中一个除数转换为浮点数
#i
nclude
#i
nclude
main()

float
x;
float
y;
printf("enter
x:");
scanf("%d",&x);
y=fabs((5*x+1)/(x*x+1));
printf("y
is
%f\n",y);

或者
#i
nclude
#i
nclude
main()

int
x;
float
y;
printf("enter
x:");
scanf("%d",&x);
y=fabs((float)(5*x+1)/(x*x+1));
printf("y
is
%f\n",y);
参考技术B 除了一开始用float进行定义之外,
后面进行除法运算的时候要加.0,
否则算出的结果电脑会自动取整~~
如:3/2的结果和3.0/2的结果就不同~~
因为没有定义3/2为浮点型,所以3/2自动取整,
结果等于1
而3.0/2,由于预先用浮点型表示
其结果显然为:1.5
希望对你有所帮助~~

以上是关于C语言问题:假设输入N,问运行结果是啥?请耐心看完,准确详细解释的主要内容,如果未能解决你的问题,请参考以下文章

c语言输入两个整数a和b求和是啥?

c语言无法编译是啥情况?

C语言中除法怎么取得小数?

Win10用DEV-C++纯C编写运行结果没出错但结果不对

C语言中eps指的是啥东西?

c != '\n' 条件在“for”循环(C 语言)中的作用是啥?