首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

初学者求问:用if单分支选择语句替换switch语句?if.else呢

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

菜鸟求问:用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() 函数 从而在判断时忽略大小写并且代码也会更清晰些

热点排行