C语言学习1.3

. 控制语句

7.1 if-else语句

if语句概述

if(表达式)
    语句块1
else
    语句块2

常见形式

简化形式

if(表达式)语句块,例如:

if(x>y) printf("%d",x);

阶梯形式

if(表达式1) 语句块1

        if(表达式)

   

语句块1

        else

   

语句块2

else if (表达式2) 语句块2

        else if(表达式3) 语句块3

                else if (表达式4) 语句块4

嵌套形式

if()

if () 语句1
        else 语句 2
else
        if() 语句 3
                else 语句4

注意:

1. 语句块,当有若干条语句的时候,必须用{... ...}括号起来

2. 表达式

1. 一般情况下为逻辑表达式或关系表达式

如:if(a==b && x==y) printf("%d",x);

2. 也可以是任意类型(包括整形,实型,字符型,指针类型)

1. : if ('a') printf("%d",a);

3. 请区分if(x=1) if(1==x)的不同

应用:

输入三个数,从小到大排列

#include<stdio.h>
int main()
{
    int a,b,c,d;
    printf("Place input three numbers:\n");
    scanf("%d %d %d",&a,&b,&c);
    if(a>b)
      {
          d=a;
          a=b;
          b=d;
      }
    if(a>c)
    {
        d=a;
        a=c;
        c=d;
    }
    if(b>c)
    {
        d=b;
        b=c;
        c=d;
    }

    printf("%d<%d<%d\n",a,b,c);
    return 0;
}

7.2 switch语句

多分支选择结构

switch 语句的基本形式

switch(表达式)
{
        case 常量表达式1: 语句块1 ;break;
        case 常量表达式2: 语句块2; break;
   case 常量表达式n:  语句块n: break;
            
        default : 语句块n+1
}

switch语句的使用

  • 每个常量表达式的值必须各不相同,否则将出现矛盾
  • 当表达式的值与case后面的常量表达式的值相等时,就执行case后面的语句。
  • switch中的表达式可以是整形,字符型表达式或枚举。
  • case 常量:只起语句标号的作用
  • break语句用于强行跳出switch体,一般每个case后面应有一个break语句,defalut
  • 分支后的break可以省略
  • 多个case可以执行一条语句

分数等级评判(ABCD)实例:

#include <stdio.h>
#include <stdlib.h>

int main()
{
   float score;
   printf("Please input your score\n");
   scanf("%f",&score);
   if(score<0||score>100)
    printf("input error!");
   else
   {
       switch((int)score/10)
       {
       case 10:
       case 9:
        printf("A\n");
        break;
       case 8:
       case 7:
        printf("B\n");
        break;
       case 6:
        printf("C\n");
        break;
       default:
        printf("D\n");
       }
   }
    return 0;
}

7.3 循环语句

循环程序语句

7.3.1 goto

如何使用go to来完成1-100的求和

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int a=1,sum=0;
loop:
    if(a<=100)
    {
        sum+=a;
        a++;
        goto loop;
    }
    printf("sum=%d\n",sum);
    return 0;
}

当程序有多个出口,使用goto把这些出口集中到一处很方便,特别是函数中有很多重

复的工作的时候。

理由是:

  • 无条件跳转易于理解
  • 可以减少嵌套
  • 可以避免那些忘记更新某一个出口点的问题

                 算是帮助了编译器做优化

7.3.2 while

while语句构成循环

基本形式:
while(表达式)
{
    statements;
}

循环条件:

1.变量初值

2.终止条件

3.变量变化

例子:1-100的求和:
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int a=1,sum=0;
    while(a<=100)
    {
        sum+=a;
        a++;
    }
    printf("sum=%d\n",sum);
    return 0;
}

7.3.3 do-while

do-while构成循环

基本形式

do{
    statements;
    
}while(表达式);
例子:1-100的求和:
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int a=1,sum=0;
    do
    {
        sum+=a;
        a++;
    }while(a<=100);
    printf("sum=%d\n",sum);
    return 0;
}

7.3.4 for

一般形式

for(expression1;expressiojn2;expression3)
{
    statements;
}

执行过程

1. 先求解表达式1,初始值。

2. 求解表达式2,若为真,则执行循环体,然后执行步骤三,若为假则执行步骤5

3. 求解表达式3

4. 转回执行步骤2

5. 执行for下面的语句

例子,1-100的求和:
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int a,sum=0;
    for(a=1;a<=100;a++)
    {
        sum+=a;
    }
    printf("sum=%d\n",sum);
    return 0;
}

for语句构成循环

  • 表达式1可以省略,但循环之前应要给循环变量赋值
  • 表达式2可以省略,将陷入死循环
  • 表达式3可以省略,但在循环体中增加循环使变量的值改变的语句
题目:打印九九乘法表
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int a,b,sum=0;
    for(a=1;a<=9;a++)
    {
        for(b=1;b<=a;b++)
    {
        sum=b*a;
        printf("   %d*%d=%d",b,a,sum);
    }
    printf("\n");
    }

    return 0;
}

7.4 辅助控制语句

7.4.1 break

用于从循环体内跳出一层循环体,即提前结束循环

break只能用在循环语句和switch语句中。

例子:圆的面积
#include <stdio.h>
#include <stdlib.h>
#define PI 3.14

int main()
{
    int r;
    float s;
    for(r=1;r<=10;r++)
    {
        s=PI*r*r;
        if(s>100)
            break;
        printf("r=%d s=%f\n",r,s);
    }
    return 0;
}

7.4.2 continue

结束本次循环,接着判定下一次是否执行循环

注意breakcontinue的区别

continue直结束本次循环,而break终止本层循环

例子:从100-120中选出%3(模上3)余数不为0的数字
#include <stdio.h>
int main()
{
    int n;
    for(n=100;n<=120;n++)
    {
        if(n%3==0)
            continue;
        printf("%d\n",n);
    }
    return 0;
}

注:

用例子来理解不同的控制语句效果会更加显著

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值