C语言编程问题

如题所述

程序运行时先进入第一个switch语句,即switch(a>0),你可能认为它是值是2,所以直接执行default了吧?其实它的值不是2,而是1,因为a>0是一个表达式,它返回的是真或假的值,因为a=2,是大于0的,所以这个式子成立,所以返回的值为真,在C中"真"用1表示,所以当a=2时switch(a>2)就等价于switch(1),执行第二个switch语句,即执行switch(b<0)因为b=7,是不小于0的,返回值为假(C中用0表示),所以这个语句等价于switch(0),而这个switch里没有case
0,所以跳出这个switch,不过要注意switch(a>0)中的case
1:中是一个switch语句,而这个语句后面是没有break的,所以它要再执行

case
0:
switch(c==5)

{
case
0: printf("*");
break;

case
1: printf("#");
break;

case
2: printf("$");
break;

}

这个部分,c==5的返回值是1,所以输出一个"#",而case
0:switch(c==0)这个语句后面还是没有break,所以就要再执行default,即输出一个"&",两次输出后显示在屏幕上的当然就是"#&"了
温馨提示:内容为网友见解,仅供参考
第1个回答  2020-04-12
switch后面是个返回bool的表达式,在这里a>0,所有返回为true,而在c,c++里面bool的true是1,false是0,比如你可以用int
i
=
(a>0),设断点的话可以得到i的值为1.

在题目中switch(a>0)后与case
1符合,所以接着执行后面的语句而不是default.由于后面的switch(b<0)没用对应的case,而在case
1:
switch(b<0)
后没有break,所以会执行到case
0,c=5成立,执行case
1: printf("#");
break;输出了#,同样case
0:
switch(c==5)这个也没有break,会继续执行到default:
printf("&");输出了&,所以输出结果为#&。

如果在case
1:
switch(b<0)
的后面加break,即改为

switch(a>0)

{

case
1:
switch(b<0)

{

case
1: printf("@");
break;

case
2:
printf("!"); break;

}

break;----------------------------->此处添加break

case
0:
switch(c==5)

................................

则不会有任何输出。
第2个回答  2020-04-06
#include
<stdio.h>
int
main
()
{
char
a[30]
=
{0},
s;
int
n
=
0,
m
=
0,
i
=
0;
gets(a);
scanf("%c",
&s);
for
(i
=
0;
a[i]
!=
0;
i++)//计算字符串的长度
n++;
for
(i
=
0;
a[i];
i++)
if(a[i]
==
s)//计算出现s的次数
m++;
printf("%d
%d\n",
n,
m);
return
0;
}
我运行了没问题。。
第3个回答  2020-04-13
1、
A
第一个是
八进制
的,第二个是
十六进制
的,第三个是
十进制
的啊。
2、
B
e的ascall码比b的
大三
啊,输出的格式是整型,所以是三,后者就相当于把
小写
的变大写吗,A和a相差是等于D和d相差的啊。
强烈建议这种问题自己调试就好了,不懂再问吗,要知道只是是靠自己慢慢积累的、
第4个回答  2020-05-30
#include<stdio.h>
int
main()
{
int
digit,letter,space,other;
char
ch;
digit=letter=space=other=0;
ch=getchar();
while(ch!='\n')
{
if(ch>='0'&&ch<='9')
digit++;
else
if((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z'))
letter++;
else
if(ch=='
')
space++;
else
other++;
ch=getchar();
}
printf("%d
%d
%d
%d",letter,digit,space,other);
return
0;
}
仔细看哦,只加了一行==|||
分给楼上吧,ta比我快,我来说明原因吧,
getchar()函数一次只能输入一个字符,而你统计的是一个字符串的类型个数,所以吧这个函数加载到循环语句,用循环来依次统计字符数据
c语言很锻炼逻辑思维能力,利用好基本算法几乎就能学好了本回答被提问者采纳
相似回答