读书人

初学者求问:用if单分支选择语句替换s

发布时间: 2013-09-05 16:02:07 作者: rapoo

菜鸟求问:用if单分支选择语句替换switch语句?if...else呢?
主要是关于default情况的处理,代码如下:

/* Fig. 4.7: fig04_07.c
Counting letter grades */
#include <stdio.h>

/* function main begins program execution */
int main( void )
{
int grade; /* one grade */
int aCount = 0; /* number of As */
int bCount = 0; /* number of Bs */
int cCount = 0; /* number of Cs */
int dCount = 0; /* number of Ds */
int fCount = 0; /* number of Fs */

printf( "Enter the letter grades.\n" );
printf( "Enter the EOF character to end input.\n" );

/* loop until user types end-of-file key sequence */
while ( ( grade = getchar() ) != EOF ) {

/* determine which grade was input */
switch ( grade ) { /* switch nested in while */

case 'A': /* grade was uppercase A */
case 'a': /* or lowercase a */
++aCount; /* increment aCount */
break; /* necessary to exit switch */

case 'B': /* grade was uppercase B */
case 'b': /* or lowercase b */
++bCount; /* increment bCount */
break; /* exit switch */

case 'C': /* grade was uppercase C */
case 'c': /* or lowercase c */
++cCount; /* increment cCount */


break; /* exit switch */

case 'D': /* grade was uppercase D */
case 'd': /* or lowercase d */
++dCount; /* increment dCount */
break; /* exit switch */

case 'F': /* grade was uppercase F */
case 'f': /* or lowercase f */
++fCount; /* increment fCount */
break; /* exit switch */

case '\n': /* ignore newlines, */
case '\t': /* tabs, */
case ' ': /* and spaces in input */
break; /* exit switch */

default: /* catch all other characters */
printf( "Incorrect letter grade entered." );
printf( " Enter a new grade.\n" );
break; /* optional; will exit switch anyway */
} /* end switch */
} /* end while */

/* output summary of results */
printf( "\nTotals for each letter grade are:\n" );
printf( "A: %d\n", aCount ); /* display number of A grades */
printf( "B: %d\n", bCount ); /* display number of B grades */
printf( "C: %d\n", cCount ); /* display number of C grades */
printf( "D: %d\n", dCount ); /* display number of D grades */


printf( "F: %d\n", fCount ); /* display number of F grades */

return 0; /* indicate program ended successfully */
} /* end function main */

switch c
[解决办法]
switch都可以用if else实现 。不过switch的效率更高点,
[解决办法]
引用:
Quote: 引用:

Quote: 引用:

具体是怎么实现的?特别if单分支选择语句,如何考虑default的情况?


if...else if...else if......else


单分支选择语句不是只有if吗?并没有else啊


只判断一次 所以用 if ..else if.. else if..
每次都要判断才用 if .. if ..


if ()
{
func1
}
else if()
{
func2
}
else if()
{
func3
}
else
{
func4
}
//上面这段代码,只可能执行其中某一个func


//下面的代码,则有可能四个func都会执行,或者一个都不执行
if ()
{
func1
}
if()
{
func2
}
if()
{
func3
}
if
{
func4
}

[解决办法]
好吧 貌似楼上各位已经解释的很清楚了 不过 你倒是可以使用 toupper() 函数 从而在判断时忽略大小写并且代码也会更清晰些

读书人网 >C语言

热点推荐