战斗机简笔画图片画法:C的一个小问题

来源:百度文库 编辑:查人人中国名人网 时间:2024/04/29 02:59:31
#include<stdio.h>
void main()
{
int a,b,c;
char ch;
a=b=c=0;
while((ch=getchar())!='\n')
switch(ch)
{
case 'D':
case 'E':
case 'F':a++;break;
default:c++;break;
case 'm':
case 'n':
case 'p':b++;
}
printf("a=%d,b=%d,c=%d\n",a,b,c);
}
运行该程序,输入下述内容:
abEEFDmnApn
输出了a=4,b=4,c=3.
为啥呢?HELP ME.THANKS.

遇到abA的时候C增加到3;
遇到EEFD的时候a增加到4;
遇到mnpn的时候C增加到4;

switch语句中的case选项是跳转的标志,如果在case后没有break的话,case语句是要顺序执行的,举个例子:
int a=0;
int b=0;
switch(num)
{
case 1: a++;
case 2: b++;
}
当num=1时,a=1,b=1,
当num=2时,a=0,b=1,

但是对于以下语句
int a=0;
int b=0;
switch(num)
{
case 1: a++; break;
case 2: b++; break;
}
当num=1时,a=1,b=0,
当num=2时,a=0,b=1,
此外default语句是在没有任何选项时,自动跳转的语句,通常位于最后的位置,但是如果有case语句在default语句之后,且没有在default语句中添加break的话,其后的case语句也会顺序执行的。
例如:
int a=0;
int b=0;
switch(num)
{
case 1: a++; break;
default: b++;
}
当num=2时,a=0,b=1,
对比
int a=0;
int b=0;
switch(num)
{
default: b++;
case 1: a++; break;
}
当num=2时,a=1,b=1

支持fbiwarning!

说得好
名字更是妙
使我想起了某些*片的开头..
呵呵
不是有心人还真想不出

哦!在你输入EED时,a++也执行,因为没有break,输入mnpn时b++;理由同上.输入abA时c++执行,因为没有符合要求的时候它自动找default.
switch(ch) 的用法一定要在每个分支加上break;default一般在最后写,不然不容易控制.

这个程序没错误,就是认为DEF是一样的,属于a,mnp是一样的属于b,其他的字母一样属于c。
不明白你这个程序想统计什么?是a,b,c的数量吗?如果是,就全不对了,如果不是把你想得程序功能说出来。