那些苦逼日子的学习(C语言)06

那些苦逼日子的学习(C语言)06

if语句
如果...或者...否则
也就是说,if语句允许程序通过测试表达式的值从两种选项中选择一项。
if语句表达式
if(表达式1){
    语句1;
}else if(表达式2){
    语句2;
}else{
    语句3;
}
语句next;
注意:1.如果if后面没有语句,加上分号
      2.else if 可以出现0 ~ n次
      3.else 可以出现0 ~1次
      4.分支中只有一条一句的时候可以省略{}
下面我们看段代码:
  1. /*
  2. if...else
  3. */
  4. #include <stdio.h>

  5. int main(){
  6.     int salary = 0;
  7.     printf("Please input your monthly salary:");
  8.     scanf("%d",&salary);
  9.     if(salary >= 10000){
  10.          printf("You can fly home---\n");
  11.     }else if(salary >= 5000 && salary < 10000){
  12.          printf("You can take the high-speed rail to go home---\n");
  13.     }else if(salary >= 3000 && salary < 5000){
  14.          printf("You can take the train home---\n");
  15.     }else if(salary >= 1500 && salary < 3000){
  16.         printf("You can take the bus home---\n");
  17.     }else{
  18.         printf("The tragedy of the child, you walk home!\n");
  19.     }
  20.     return 0;
  21. }
复制代码

下面我们看看输入 年 月 ,然后输出这个月有多少天
  1. /*输入年月,输出这个月有多少天*/

  2. #include <stdio.h>

  3. int main(){
  4.      int year = 0,month = 0;
  5.      printf("Please enter the year and month:");
  6.      scanf("%d%d",&year,&month);
  7.      if(month == 4 || month == 6 || month == 9 || month == 11){
  8.          printf("This month 30 days\n");
  9.      }else{
  10.          if(month != 2){
  11.              printf("This month 31 days\n");
  12.          }else{
  13.              if(year % 4 == 0 && year % 100 != 0 || year % 400 == 0){
  14.                   printf("This month 29 days\n");
  15.             }else{
  16.                  printf("This month 28 days\n");
  17.            }
  18.        }
  19.      }
  20.     return 0;
  21. }
复制代码

要注意,在 if 语句的模版中,语句是一条而不是多条,如果想要 if 语句出口 i 两条或者更多条语句,可以使用复合语句
复合语句:
一对大括号 {} 括起来的一组语句,编译器当作一条语句来处理,
{
....
....
}
就近原则:多个 if 后跟 else 的时候, else 总是与最近的 if 相搭配
switch 语句
在某些情况下 ,需要表达式和多个值进行比较,找出匹配的数值,执行特定的操作
C 语言提供了 switch 语句作为 if 语句的替换
switch( 控制表达式 ){
    case  常量表达式 1: 语句 1; break;
    case  常量表达式 2: 语句 2; break;
    ...
    default:  ....
}
控制表达式:计算结果是整形,不能是浮点数或者字符串。 switch 后面必须跟着由 () 括起来的整形表达式。 C 语言把字符当作整数来处理,因此 switch 也可以对字符进行判断
常量表达式:不能包含变量或者函数调用,最终结果必须是整数。常量表达式很像普通的表达式,但是不能包含变量或者函数的调用, 5 是常量表达式, 5+10 也是常量表达式,但是 n+10 不是常量表达式 ( 除非 n 是表示常量的宏 ) ,分支标号中的常量表达式必须是整数 ( 也可以是字符 )
每一个分支中可以包含多条语句,可以不使用 {}
注意:不允许重复的分支存在
各个分支之间的顺序是不固定的。
break 作用:执行 break 语句的时候,导致程序的执行流程跳出 switch 语句,继续执行 switch 后面的语句
需要 break 语句是由于 switch 语句实际上是一种基于计算的跳转,对控制表达式求值的时候,控制会跳转到与 switch 表达式的数值想匹配的分支表好处,分支标号只是一个说明 switch 内部位置的标记。在执行完分支中的最后一条语句的时候,程序控制向下跳转到下一个分支的第一条语句上,从而忽略了下一个分支标号。如果没有 break 语句 ( 或者其他的某种跳转语句 ) ,控制将会从一个分支继续到下一个分支。
下面我们看看程序 ( 1~100 分之间的得分进行评级 )
  1. #include <stdio.h>

  2. int main(){
  3.     int score = 0;
  4.     printf("Please enter your results:");
  5.     scanf("%d",&score);
  6.     printf("Class:");
  7.     switch((score - 50) / 10){
  8.         case 5:
  9.         case 4:printf("A\n");break;
  10.         case 3:printf("B\n");break;
  11.         case 2:printf("C\n");break;
  12.         case 1:printf("D\n");break;
  13.         default:printf("Fail\n");
  14.     }
  15.     return 0;
  16. }
复制代码




循环语句
循环就是重复执行循环体( 语句块 ) 的一种语句,在 C 语言中,每一个循环都有一个控制表达式。每次执行循环体的时候,都要对控制表达式求值。如果表达式为真,那么继续执行循环。
C 语言提供了三种循环语句:
while   do while    for 语句。当然 goto( 无条件跳转 ) 语句也可以进行循环的控制
for 循环
    for 循环很适合在使用”计数”变量的循环中,当然,这不是它的限定
1.for( 表达式 1; 表达式 2; 表达式 3){
    语句 ;
}
表达式 1 :循环条件的初始化
表达式 2 :控制循环的条件
表达式 3 :修改循环变量,是循环趋于结束 ( 循环的条件为假 )
一定要注意 for循环中各个表达式的执行顺序
看看 for 循环的执行流程图:


那些苦逼日子的学习(C语言)06_第1张图片
  1. #include <stdio.h>

  2. int main(){
  3.     int i = 0;
  4.     for(i = 1;i < 11;i++){
  5.         printf("1 = %2d\n",i);
  6.     }
  7.     return 0;

  8. }
复制代码
2.for 循环的习惯用法
for(i = 0;i < n;i++)...
for(i = 0;i <= n;i++)...
for(i = n;i > 0;i--)...
for(i = n - 1;i >= 0;i--)...
3.在 for 循环中省略表达式
         语句 for 循环远比目前看到的灵活,通常 for 循环用三个表达式来控制循环,但是一些循环可能不需要这么多,因此 C 语言允许省略任意或者全部的表达式
就说上面的那个例子,我们也可以写成这样:
int i = 1;
for(;i < 11;i++){
printf("1 = %2d\n",i);
}
注意:保留第一个表达式和第二个表达式之间的分号,即使省略掉某些表达式,表达式之间的分号也是必须要写的。
上的那个例子,我们还可以这样写:
int i = 1;
for(i = 1;i < 11;){
printf("1 = %2d\n",i++);
}
这个说明了我们也可以使用变量  在循环体进行自加操作
但省略掉第二个表达式,那么默认为真, for 循环不会终止。那么我们可以在循环体中增加 break 语句,跳出循环
但我们省略掉第一个和第三个表达式的时候,那就和 while 循环没什么区别了。
C99 中,语句 for 的第一个表达式可以替换为一个声明,这个特性可以让我们声明一个用于循环的变量
如:
for(int i = 0;i < 10;i++)
....
需要注意的是,使用这样形式编写完程序之后,在编译的时候需要加上  -std=c99 ,这样就不会报错了
如:
  1. #include <stdio.h>


  2. int main(){
  3.     for(int i = 1;i < 11;){
  4.         printf("%2d\n",i++);
  5.     }
  6.     return 0;
  7. }
复制代码




逗号运算符
某些时候我们可能喜欢编写两个 ( 或者多个 ) 初始表达式,或者希望在没次循环中对几个变量进行自增操作,使用逗号表达式作为 for 循环语句第一个或者第三个表达式可以实现这些想法:
for(i = 0,j = 0;...;printf(),i++,j--)
表达式 1 ,表达式 2
计算过程
第一步:先计算表达式 1 ,将计算所得的记过丢掉
第二部:计算表达式 2 ,将计算结果作为表达式的最终结果
下面我们写短代码:相信大家的英文水平能看懂哦。

  1.    /*
  2.     Specifies the number of students, and average scores a total score calculation
  3.    */
  4.    
  5.    #include <stdio.h>
  6.    
  7.    int main(){
  8.        int count = 0;//Initialization of the number of students
  9.        printf("Please enter the number of the students:");
  10.        scanf("%d",&count);
  11.        int i = 0; //The loop control variable
  12.        float temp = 0.0;//Temporary storage of student achievement
  13.        float sum = 0.0;//The total score of storage
  14.    
  15.        for(;i < count;i++){
  16.            printf("Please input the %d grade students:\n",i + 1);
  17.            scanf("%f",&temp);
  18.            sum += temp;
  19.        }
  20.        printf("The total score of the students:%g\nGrade point average:%g\n",sum,sum/count);
  21.        return 0;
  22.    }
复制代码
for 循环的嵌套
使用 for 循环嵌套可以实现一些复杂的算法:
for(){
for(){
....
}
}
稍微玩一下, 99 乘法表;嘿嘿

  1. #include <stdio.h>

  2. int main(){
  3.     int i = 1,j = 1;
  4.     for(i = 1;i < 10;i++){
  5.         for(j = 1;j < i + 1;j++){
  6.             printf("%d*%d=%2d\t",j,i,i * j);
  7.         }
  8.         printf("\n");
  9.     }
  10.     return 0;
  11. }
复制代码



while 循环
while( 表达式 ) 语句
判断表达式的结果,如果为真,执行语句,返回来继续判断表达式,循环往复,知道表达式的结果为假
int i = 1;
while(i < 11 ){
printf(“%d ”,i++);
}
printf(“\n”);
C 语言中两种常用的无限循环 ( 死循环 ) 方式:
1.while(1) 语句
2.for(;;;) 语句
来点代码:

  1. /* Input number, sum of these numbers*/

  2. #include <stdio.h>

  3. int main(){
  4.     int data = 0;//Data is temporarily stored user input
  5.     int sum = 0;
  6.     while(1){
  7.         printf("Please enter an integer (0: exit):");
  8.         scanf("%d",&data);
  9.         if(data == 0) break;
  10.             sum += data;
  11.     }
  12.     printf("The sum of all integer:%d\n",sum);
  13.     return 0;
  14. }

复制代码
do while 循环
语句 do while
do{
循环体 ;
}while( 表达式 );
注意: do - while  后面有分号
虽然程序中 while 语句出现的次数比 do - while 语句多,但是后者对于至少一次的循环来说非常的方便


  1. /*Calculation of an integer number of bits*/

  2. #include <stdio.h>

  3. int main(){
  4.     int data = 0;
  5.     int count = 0;
  6.     printf("Please enter an integer:");
  7.     scanf("%d",&data);
  8.     do{
  9.         data /= 10;
  10.         count++;
  11.     }while(data != 0);
  12.     printf("The integer number:%d\n",count);
  13.     return 0;
  14. }

复制代码

空语句
1.空语句经常用来编写空循环体的循环
2.C 程序员习惯性的把空语句单独放在一行
3.不小心在 if,while,for 中的圆括号后放置分号会创建空语句
break  coutinue 语句
break switch 语句:跳出 switch 语句
循环语句:跳出循环
coutinue :只能适用在循环中
结束本次循环,开始下一次循环


  1. /*Judge a prime integer is it right*/

  2. #include <stdio.h>

  3. int main(){
  4.     int data = 0;
  5.     printf("Please enter an integer:");
  6.     scanf("%d",&data);
  7.     int i = 2;
  8.     for(;i < data;i++){
  9.         if(data % i == 0){
  10.             printf("Is not a prime\n");
  11.             break;
  12.         }
  13.     }
  14.     if(i == data)
  15.         printf("prime\n");
  16.     return 0;
  17. }

复制代码
  1. /*Cannot print 1~~30 between 4 integer integer*/

  2. #include <stdio.h>

  3. int main(){
  4.     int i = 1;
  5.     for(;i < 30;i++){
  6.         if(i % 4 == 0){ //If the number is not 4 complete will not print
  7.             continue;
  8.             printf("%d ",i);
  9.         }
  10.     }
  11.     printf("\n");
  12.     return 0;
  13. }

复制代码
goto 语句
无条件跳转 ( 不推荐使用 ), 就不多做介绍了
label( 标识符 ):
语句 ;
...
注意标识符的命名规范
不要省略标识符后面的冒号


首发地址http://www.bcwhy.com/thread-18659-1-1.html

你可能感兴趣的:(那些苦逼日子的学习(C语言)06)