Chinaunix首页 | 论坛 | 博客
  • 博客访问: 37381
  • 博文数量: 16
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 82
  • 用 户 组: 普通用户
  • 注册时间: 2015-04-16 19:30
个人简介

嵌入式Linux编程 Android软件开发

文章分类

全部博文(16)

文章存档

2015年(16)

分类: C/C++

2015-04-29 22:27:26

一 C语言的控制语句 

 

<1>单分支判断      if语句

<2>多分支判断      if...else   , if ...else if ....

<3>多分支选择      switch  ..... case ....

<4>循环语句      for   while   do--while

<5>控制循环的语句  break  continue

<6>跳转语句        goto 

 

 

1.单分支判断 

 

if(条件){

C语句;

....

}

 

注意:

条件为真的时候,执行 { }里面的语句

 

练习:

输入一个字符,如果是大写的字符,则输出它对应的小写字符

              如果是小写的字符,则输出它对应的大写字符 

 

点击(此处)折叠或打开

  1. #include <stdio.h>

  2. int main()
  3. {
  4.     char ch;

  5.     printf("Input a character : ");
  6.     scanf("%c",&ch);

  7.     //['A'-'Z']
  8.     if(ch >= 'A' && ch <= 'Z'){
  9.         ch += 32;
  10.     }

  11.     //['a' - 'z']
  12.     if(ch >= 'a' && ch <= 'z'){
  13.         ch -= 32;
  14.     }

  15.     printf("ch = %c\n",ch);

  16.     return 0;
  17. }


2.多分支判断 

 

if(条件1){

...

}else if(条件2){

...

}else if(条件3){

...

}

 

条件1是否成立  成立:后面的判断将不会继续   不成立:接下来判断条件2

注意:只要有一个条件成立,后面的判断将不会进行 

 

 

练习:

输入一个成绩,判断成绩的等级 

如果成绩 < 0 或 > 100 则提示用户输入的是非法成绩

 

如果是:

[0-60)  则输出 A等级 

[60-70) 则输出 B等级 

[70-80) 则输出 C等级 

[80-100]则输出 D等级 

 

3.真和假分别处理

 

二选一:

 

if(条件成立){

...

}else{

   ...

}

 

-----------------------------------------------------------------------------------------------------

 

if(条件1成立){

 

}else if(条件2成立){


}....{

 

}else{

 

}

 

注意:else 一定是和它上面最近的if配套使用

 

练习:

输入两个数(data1,data2),如果data1 < data2则将data2值自增加后赋值给data1,否则将data1自减后赋值给data2

,最后输出data1data2的值

 

点击(此处)折叠或打开

  1. #include <stdio.h>

  2. int main()
  3. {
  4.     int data1,data2;
  5.     
  6.     printf("Input two data : ");
  7.     scanf("%d%d",&data1,&data2);

  8.     if(data1 < data2){
  9.         data1 = ++data2;
  10.     }else{
  11.         data2 = --data1;
  12.     }
  13.     
  14.     printf("data1 = %d,data2 = %d\n",data1,data2);
  15.     
  16.     return 0;
  17. }


4.if语句可以嵌套使用

 

if(条件1)

{

if(条件2)

{

a ++;

}

}

===>

if(条件1 && 条件2)

{

a ++;

}

 

----------------------------------------------------

 

if(条件1)

{

b --;

 

if(条件2){

a ++;

}else{

...

}

}

 

练习:

输入一个整数,如果这个数小于0,则将这个数增加1,然后判断它是否==0,如果等于0,将这个数自减1,

否则将它自增加最后,输出这个数的值

 

点击(此处)折叠或打开

  1. #include <stdio.h>

  2. int main()
  3. {
  4.     int data;

  5.     printf("Input data : ");
  6.     scanf("%d",&data);

  7.     if(data < 0){
  8.         data ++;

  9.         if(data == 0){
  10.             data --;
  11.         }else{
  12.             data ++;
  13.         }
  14.     }

  15.     printf("data = %d\n",data);

  16.     return 0;
  17. }


 

5.多分支选择 

 

switch(表达式)

{

case  确定的整型值1:

      C语言语句;

  ...

  break;


case  确定的整型值2:

      C语言语句;

  ...

  break;

 

    ....

 

default:

      C语言语句;

  ...

  break;

}

 

运行规则:

计算完表达式的值后,决定和哪一个case匹配,匹配上的case,会执行其后面的C语言语句,

直到遇到break语句或return 语句 或 结束的"}",如果所有的case都不匹配,则执行default后面的C语言语句。

 

注意: case后面可以写的是 ->  数字,字符,宏常量,枚举类型的成员

 

练习:把成绩等级判断,改写成switch --- case?

 

点击(此处)折叠或打开

  1. #include <stdio.h>

  2. //
  3. #define A 10
  4. #define B 20
  5. #define C 30

  6. int main()
  7. {
  8.     int ch = 20;
  9.     
  10.     switch(ch)
  11.     {
  12.     case A:
  13.         printf("A\n");
  14.         break;

  15.     case B:
  16.         printf("B\n");
  17.         break;

  18.     case C:
  19.         printf("C\n");
  20.         break;
  21.     }


  22.     return 0;
  23. }


< 0 或 > 100  非法成绩 

 

[0-60)         

[60-70) 

[70-80)

[80-100)

 

switch(score)

{

//错误

case if(score >= 0 && score < 60):

printf("A");

break;

}

 

 

61/10 =>6                  62 / 10 => 6

81/10 =>8                  87 / 10 => 8

switch(score / 10)

{

 

}

 

6.循环语句----for 

 

for(表达式1 ; 表达式2 ; 表达式3)

{

C语言语句;

....

}

 

注意:

<1>只要表达式2的值为真,则循环继续,直到表达式2的值为假,循环结束 

<2>三个表达式都可以省略,当表达式2省略的时候,for默认为永真[死循环]

 

练习:

<1>1 --- 100中的奇数做累加和,最后输出

for(i = 1;i <= 100;i ++)

{

如果是一个奇数则累加

}

点击(此处)折叠或打开

  1. #include <stdio.h>

  2. int main()
  3. {
  4.     int i;
  5.     int sum = 0;

  6.     for(i = 1;i <= 100;i ++)
  7.     {
  8.         if(i % 2 != 0){
  9.             sum += i;
  10.         }
  11.     }

  12.     printf("sum = %d\n",sum);

  13.     return 0;
  14. }


<2>找出所有的水鲜花数

 

满足水鲜花数的条件:

a.是一个三位数  

  三位数的范围 [100-999] 

 

b.个位的立方 十位的立方 百位的立方 == 这个数 

  123 

 

  个位:123 % 10          => 3 

  十位:(123 / 10) % 10   => 2 

  百位:123 / 100         => 1   

 

点击(此处)折叠或打开

  1. #include <stdio.h>

  2. int main()
  3. {
  4.     int data;
  5.     int a,b,c;

  6.     for(data = 100;data < 1000;data ++)
  7.     {
  8.         a = data % 10;
  9.         b = (data / 10) % 10;
  10.         c = data / 100;

  11.         if((a * a * a + b * b * b + c * c *c) == data)
  12.         {
  13.             printf("%d\n",data);
  14.         }
  15.     }

  16.     return 0;
  17. }


 

7.for语句的嵌套

 

注意:外层for循环执行一次,内层的for循环要循环结束后,接着执行外层循环

 

 

任务:

1.输出9 * 9 乘法表

点击(此处)折叠或打开

  1. #include <stdio.h>

  2. int main()
  3. {
  4.     int i,j;
  5.     
  6.     for(i = 1;i <= 9;i ++)
  7.     {
  8.         for(j = 1;j <= i;j ++)
  9.         {
  10.             printf("%d x %d = %d ",j,i,j * i);    
  11.         }
  12.         printf("\n");
  13.     }
  14.     
  15.     return 0;
  16. }


2.输入一个年份,判断是否是润年 [0 - 2015,输出所有是润年的年份

点击(此处)折叠或打开

  1. #include <stdio.h>

  2. int main()
  3. {
  4.     int year;

  5.     //闰年:
  6.     //1.能被4整除,但是不能被100整除
  7.     //2.能被400整除
  8.     for(year = 0;year <= 2015;year ++)
  9.     {
  10.         if(year % 4 == 0 && year % 100 != 0\
  11.                 || year % 400 == 0)
  12.         {
  13.             printf("%d\n",year);
  14.         }
  15.     }

  16.     return 0;
  17. }


阅读(917) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~