码迷,mamicode.com
首页 > 编程语言 > 详细

C语言(四)---语句

时间:2017-10-22 22:08:47      阅读:285      评论:0      收藏:0      [点我收藏+]

标签:无效   for循环语句   退出   功能   while循环   匹配   getch   constant   合并   

一、分支语句

  C语言中的条件分支语句,分为if语句和switch语句两类分支语句。

1.1 if语句

1.1.1 if..单分支条件语句

  例:公司的员工销的提成工资为每销售一件提成20元,如果销售额大于100件,则奖励500元。

int main(int argc, char* argv[])
{
	int n = 0,sal = 0;
	puts("请输入你本月的销售量:");
	scanf("%d",&n);
	sal = n*20;
	if(n>100)
		sal += 500;
	printf("你本月的销售提成为:%d\n",sal);
	return 0;
}

 1.1.2 if..else..双分支条件语句

  例:公司的员工销的提成工资为: 若每月销售额小于100件,每销售一件提成20元;如果每月销售额大于等于100件,每销售一件提成30元。

 1 int main(int argc, char* argv[])
 2 {
 3     int n = 0,sal = 0;
 4     puts("请输入你本月的销售量:");
 5     scanf("%d",&n);
 6     if(n<100)
 7         sal = n*20;
 8     else
 9         sal = n*30;
10     printf("你本月的销售提成为:%d\n",sal);
11     return 0;
12 }

1.1.3 if..else if..else..多分支条件语句

  例如多级分成制度

 1 int main(int argc, char* argv[])
 2 {
 3     int n = 0,sal = 0;
 4     puts("请输入你本月的销售量:");
 5     scanf("%d",&n);
 6     if(n<100)
 7         sal = n*20;    //销售100件以内,每件按20元提成
 8     else if(n>=100 && n<200)
 9         sal = n*25;    //销售100-200件,每件按25元提成
10     else if(n>=200 && n< 300)
11         sal = n*30;    //销售200-300件,每件按30元提成
12     else
13         sal = n*40;    //若能销售300件以上每件按40元提成
14     printf(“你本月的销售提成为:%d元\n",sal);
15     return 0;
16 }

1.2 switch(..) case..分支语句

  • switch语句只适合于小范围内的独立(无重复)数值进行判断,不能对无限集合判断,对于大的集合也难于判断。

  • 每个case管辖的语句到break为止,使用switch最容易犯错是漏写break;

  • case 错误:
    • C2196: case value ‘xx‘ already used
    • C2051: case expression not constant
  • if语句能实现所有switch语句的功能,但是switch语句不能实现所有if语句能表达的功能。

  • 可以将两个条件合并为一个条件:
    •   case ‘B‘:
        case ‘C‘:
             puts("你的成绩中等!");
             break;
             .....

  例如,下面的代码

 1 puts("请输入你的学分:(A-D)");
 2 char c = getchar();
 3 switch(c)
 4 {
 5 case A:
 6     puts("你的成绩优秀!");
 7     break;
 8 case B:
 9     puts("你的成绩良好!");
10     break;
11 case C:
12     puts("你的成绩中等!");
13     break;
14 case D:
15     puts("你的成绩较差!");
16     break;
17 default:
18     puts("你输入的是无效的学分!");
19     break;
20 }

二、循环语句

  C语言中的循环语句,分为while语句和for语句两类分支语句。

  • 所有while语句能表达的功能for语句全都能实现,反之亦然。while层次清晰,for方便。(老外多爱用while,中国人多爱用for)
  • 每个循环语句都由三个框架区域构成:
    • 初始化区,条件判断区,递增区

2.1 while循环语句

1 初始化区;
2 while(条件判断区)
3 {
4     核心运算区;
5     。。。。。
6     递增区;
7 }
 1 例如:求60到100之间所有数字的加和。
 2 int main()
 3 {
 4     int i = 60,sum = 0;
 5     while(i<=100)
 6     {
 7         sum += i;
 8         ++i;
 9     }
10     printf("结果是:%d\n",sum);
11     return 0;
12 }

2.2 do..while循环语句

  特点是先执行再判断,核心运算区无条件地执行一次。

1 初始化区;
2 do
3 {
4     核心运算区;
5     。。。。。
6     递增区;
7 } while(条件判断区);
8 
9 注意语句尾部要带有分号;
 1 int main()
 2 {
 3     int sum=0,i = 6;
 4     do
 5     {
 6         sum=sum+i;
 7         ++i;
 8     }while(i<=10);
 9     
10     printf("结果是:%d\n",sum);
11     return 0;
12 }

2.3 for循环语句

  for语句相当于将while语句的三个区域,用分号间隔全放在循环头部的小括号里:

1 for(初始化区;条件判断区;递增区)
2 {
3     核心运算区;
4 }

  递增区是在每次循环结束时执行:第一次进入循环之前,递增区并不执行

  当条件区为空时代表无条件循环:

1 例如:for(初始化区;;递增区)
2 等价于for(初始化区;1;递增区)

  for的括号内3个区全都可为以空:

1 初始化区;
2 for(;;)
3 {
4 核心运算区;递增区;
5 }
 1 例如:求60到100之间所有数字的加和。
 2 int main()
 3 {
 4     int i,sum;
 5     for(i=60,sum=0;i<=100;++i)
 6     {
 7         sum += i;
 8     }
 9     printf("结果是:%d\n",sum);
10     return 0;
11 }

2.4 循环语句中的三个重要关键字 break,continue,return

2.4.1 break

  break是结束整个循环体:

 1 例如:找出20到50之间,第一个19的整数倍的数字。
 2 int main()
 3 {
 4     int i = 20;
 5     while(i<50)
 6     {
 7         if(i%19==0)
 8             break;
 9         ++i;
10     }
11     printf("i=%d\n",i);
12     return 0;
13 }

  等价写法:

1 等价写法:
2 int main()
3 {
4     int i = 20;
5     while(i<50 && i%19!=0)
6         ++i;
7     printf("i=%d\n",i);    
8     return 0;
9 }

  实际上凡是break语句的条件,都可以提取到while语句的条件区。
  但是break语句使循环体看上去更清晰,便于阅读和代码维护。

2.4.2 return

  return是比break还强的中断:直接退出中断该函数,return后面所有语句,包括循环体之外的语句全都不执行。

 1 例如:找出20到50之间,第一个19的整数倍的数字。
 2 int main()
 3 {
 4     int i = 20;
 5     while(i<50)
 6     {
 7         if(i%19==0)
 8         {
 9             printf("i=%d\n",i);
10             return 1;
11         }
12         ++i;
13     }
14     printf("很抱歉,没有找到匹配的数字\n",i);
15     return 0;    
16 }

  直接跳出函数,连循环体外的printf函数也未被执行。

2.4.3 continue

  结束本次循环进入下一次循环

  如果是while语句,递增区必须放在continue之前;continue经常跟for语句连用效果更好,因为for语句的递增区是每次循环后自动执行。

 1 int main()
 2 {//求20到70之间13的整数倍的数字及个数
 3     int i = 20,sum=0;
 4     while(i<70)
 5     {
 6         ++i;
 7         if(i%13)
 8             continue;
 9         ++sum;
10         printf("i=%d\n",i);
11     }
12     printf("总共%d个\n",sum);
13     return 0;
14 }
 1 int main()
 2 {//等价写法:
 3     int i = 20,sum=0;
 4     for(;i<70;++i)
 5     {
 6         if(i%13)
 7             continue;
 8         ++sum;
 9         printf("i=%d\n",i);
10     }
11     printf("总共%d个\n",sum);
12     return 0;
13 }

 

      

 

 

  

 

C语言(四)---语句

标签:无效   for循环语句   退出   功能   while循环   匹配   getch   constant   合并   

原文地址:http://www.cnblogs.com/kele-dad/p/7710803.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!