首页 > 安全资讯 >

C程序结构语句

16-11-02

4 1 分支结构之简单语句,判断语句如何表达?需用到C语言中的分支结构语句中的if条件语句,简单的if语句的基本结构,if(表达式){执行语句},如果表达式的值是真的,则执行其后的语句,否则不执行该语句。

4.1 分支结构之简单语句

判断语句如何表达?

需用到C语言中的分支结构语句中的if条件语句

简单的if语句的基本结构

if(表达式)
{
    执行语句
}
如果表达式的值是真的,则执行其后的语句,否则不执行该语句
#include 

int main()
{
    int height = 185;

    if (height >= 180)
    {
        printf("恭喜小明可以参加校篮球队: \n");
    }
    return 0;
}

4.2 分支结构之简单的if-else语句
简单的if-else语句的基本结构

if(表达式)
{
    执行代码块1;
}
else
{
    执行代码块2;
}
如果表达式是真的就执行代码块1,否则就执行代码块2。
#include 
int main()
{
    int result ;

    if(result=100)
    {
        printf("%s\n","买玩具");
    }
    else
    {
        printf("%s\n","没有奖励");
    }
#include 

int main()
{
    int year =2014;
    if(year%4==0&&year%100!=0)||year%400==0)
    {
        printf("%s\n","今年是闰年");
    }
    else
    {
        printf("%s\n","今年不是闰年");
    }

4.3 分支结构之多重的if-else语句
在C语言中就要用到多重if-else的基本结构是什么?

if()
{
    执行代码块;
}
else if()
{
    执行代码块;
}
。。。。
else
{
    执行代码块n;
}
依次判断表达式的值,当出现某个值为真时,则执行对应的代码块,否则则执行代码块n
#include 

int main()
{
    int score = 95;

    if (score > 90)
    {
        printf("%s\n","吃大餐");
    }
    else if (score = 100)
    {
        printf("%s\n","买玩具");
    }
    else
    {
        printf("%s\n","没有奖励");
    }
}

4.4 分支结构之嵌套if-else语句

if (表达式)
{
    if (表达式)
    {
        执行代码块;
    }
    else
    {
        执行代码块;
    }
}
else
{
    执行代码块;
}

任务
获奖条件为年销售业绩100万以上,并且入职满两年的员工。小明进入公司1年,销售业绩为120万。

#include 

int main()
{
    int sale = 120;
    int year = 1;

    if (sale > 100)
    {
        if (year >= 2)
        {
            printf("%s\n","恭喜你获得优秀员工");
        }
        else
        {
            printf("%s\n","非常遗憾,期望你再接再厉!");
        }
    }
    else
    {
        printf("%s\n""非常遗憾,期望你再接再厉");
    }

    return 0;
}

4.6 循环结构之while循环

反复不停的执行某个动作称之为循环 C语言有三种循环结构

while循环结构

while (表达式)
{
    执行代码块;
}
表达式表示循环条件,执行代码块为循环体。

while循环语句的语义是:计算表达式的值,当值为真时,执行循环体代码块。否则就结束循环

使用while语句应注意以下几点:

while语句中的表达式一般是关系表达式或者是逻辑表达式,当表达式的值为假时不执行循环体,反之,则一直执行。 一定要记得在循环体中改变循环变量的值,否则会出现死循环

循环体如果包含有一个以上的语句,则必须用{}括起来,组合复合语句

任务:
用while循环实现100以内的所有整数之和

4.7 循环结构之do-while循环

C语言的do-while循环的基本结构

do
{
    执行代码块;
} while (表达式);//英文的分号,易忘记

do-while循环语句的语义:先执行循环中的执行代码块,然后再判断while循环中的表达式是否为真,如果为真则继续循环,如果为假则终止循环

注意:
使用do-while 结构的语句时,while括号后必须有分号

任务:
某公司2014年在职人数为200人,以每年20%增长速度不断扩大招工规模,请使用do-while循环计算从2014开始至哪一年招工规模能够突破1000人。

#include 

int main()
{
    int number = 200;
    int year = 2014;
    do
    {
        year++;
        number *= 1.2;
    } while (number < 1000);
    printf("到%d年招工规模突破1000人\n",year);
    return 0;
}

4.8 循环结构之for循环(一)

for循环的基本结构

for (表达式1; 表达式2; 表达式3)
{
    执行代码块;
}

执行过程:
第一步:执行表达式1,对循环变量做初始化;
第二布:判断表达式2,若其值为真,则执行for循环体中执行代码块,继续执行,若其值为假,则结束循环。
第三步:执行表达式3
第四步:执行for循环中执行代码块后执行第二步;
第五步:循环结束,程序继续向下执行。

注意
for循环中的分号一定要写

任务:
体验一下for循环,实现一个10以内的数的小程序。

#include 

int main()
{
    int num = 0;
    int sum = 0;
    for (num = 0; num <= 10; num++)
    {
        sum += num;
    }
    printf("10以内数的和为: %d",sum);
    return 0;
}

4.9 循环结构之for循环(二)

使用for循环应注意的:

省略表达式1(循环变量赋初值),表示不对循环变量赋初始值
int i =1;
for( ;i<=10;i++)
{
    printf("第%d遍书写:computer\n",i);
}
省略表达式2(循环条件)不做其他的处理,循环一直执行;
int i;
for(i=0; ;i++)
{
    printf("第%d遍书写:computer\n",i);
}
省略表达式3(循环变量增量),不做其他处理,循环一直执行
int i;
for(i=0;i<=10; )
{
    printf("第%d遍书写:computer\n",i);
}
表达式1可以设置为循环变量的初值的赋值表达式,也可以是其他的表达式。
int sum,num;
num=0;
for(sum=0;num<=10;num++)
{
    sum+=num;
}
表达式1和表达式3可以是一个简单表达式也可以是多个表达式以逗号分割。
int sum,num;
for(sum=0,num=0;num<=3;num++,sum++)
{
    sum +=num;
    printf("num=%d,sum=%d\n",num,sum);
}
表达式2一般是关系表达式或者逻辑表达式,但也可是数值表达式或字符表达式,只要其值非零,就执行循环体。
int num,sum;
for(sum=0,num=0;num<=3&&sum<=5&&1;num++,sum++)
{
    sum +=sum;
    printf("num=%d,sum=%d\n",num,sum);
}
各表达式中的变量一定要在for循环之前定义
for(int sum=0,int num=0;num<=3&&sum<=5&&1;num++,sum++)
{
    sum +=num;
    printf("num=%d,sum=%d\n",num,sum);
}

任务:
输出所有水仙花数字

#include 

int main()
{
    int num = 0;
    int sum = 0;
    for (num = 0; num <= 10; num++)
    {
        sum += num;
    }
    printf("10以内数的和为: %d",sum);
    return 0;
}

4.10 循环结构之三种循环比较

在知道循环次数的情况下更适合for循环
不知道循环次数的情况下适合使用while或者do-while循环。
本质上,while、do-while、for循环之间是可以相互转化的

任务 使用循环计算1-2+3-4+5-6+….-100的值?

#include 

int main()
{
    int sum = 0;
    int i = 1;
    int flag = -1;

    while (i <= 100)
    {
        i++;
        sum += i*flag;
        flag *= -1;
    }
    printf("sum=%d\n",sum);
    return 0;
}
#include 

int main()
{
    int sum = 0;
    int i = 1;
    int flag = 1;
    do
    {
        i++;
        sum += i*flag;
        flag *= -1;
    } while (i <= 100);
    printf("sum=%d\n",sum);
    return 0;
}
#include 

int main()
{
    int sum = 0;
    int i = 1;
    int flag = 1;

    for (i = 1; i <= 100;i++)
    {
        sum += i*flag;
        flag *= -1;
    }
    printf("sum=%d\n",sum);
    return 0;
}

4.12 循环结构之多重循环

多重循环就是在循环结构的循环体中又出现循环结构

多重循环在执行的过程中,外层循环为父循环,内层循环为子循环,父循环一次,子循环再进入下一次,子循环继续执行。。。

注意: 一个父循环可以有很多个子循环

#include 

int main()
{
    int i, j;
    for (i = 1; i <= 5; i++)
    {
        for (j = 1; j <= 5; j++)
        {
            printf("*");
        }
        printf("\n");
    }
    return 0;

}
*****
*****
*****
*****
#include 

int main()
{
    for (int i = 1; i < 5; i++)
    {
        for (int j = 1; j < 5 - i; j++)
        {
            printf(" ");
        }
        for (int j = 0; j < 2 * i - 1; j++)
        {
            printf("*");
        }
        printf("\n");
    }
}
     * 
    ***
   *****
  *******
#include 

int main()
{
    int i, j, k;
    for (i = 1; i < 5; i++)
    {
        //每行的空格数
        for (j = i; j < 5 ; j++)
        {
            printf(" ");
        }
        //每行的数量
        for (k=0; k < 2 * i
         - 1; k++)
        {
            printf("*");
        }
        printf("\n");//每次循环换行
    }
}

4.13 使用for循环打印9*9乘法表

请使用for循环,倒序打印9*9乘法表

#include 

int main()
{
    int i, j;
    for (i = 9; i > 0; i--)
    {
        for (j = 1; j <= i; j++)
        {
            printf("%d*%d=%d\t", i, j, i*j);
        }
        printf("\n");
    }
}
#include 

int main()
{
    int i, j;
    for (i = 9; i > 0; i--)
    {
        for (j = 1; j <= i; j++)
        {
            printf("%d*%d=%d\t", i, j, i*j);
        }
        printf("\n");
    }
}

4.14 结束语句之break语句

使用break语句时注意以下几点:
1、在没有循环结构的情况下,break不能用在单独的if-else语句中。
2、在多层嵌套中,一个break语句只跳出当前的循环。

需要中断不再继续训练

#include 

int  main()
{
    int i;
    for (i = 1; i <= 10; i++)
    {
        printf("运动%d次\n",i);
        if (i == 5)
        {
            printf("哎呀!!坏了!肚子疼!");
            printf("停止训练....\n");
            break;
        }
    }
    printf("今天的训练到此结束。");
    return 0;

}

任务:

找出0~50之间的所有素数,所谓的素数就是在只能被1和他本身整除的数字。

#include 

int main()
{
    int m, n;
    for (m = 2; m <= 50; m++)
    {
        for (n = 2; n < m; n++)
        {
            if (m%n == 0)//什么条件下跳出当前循环
                break;//退出当前循环
        }
        if (m == n)
            printf("%d ",m);
    }
}

4.15 结束语句之continue语句

continue的作用是结束本次循环开始执行下一次循环。 break语句和continue语句的区别是:break是跳出当前的循环,continue是结束本次循环开始下一次循环。

任务:
计算1~20之间不能被3整除的数字之和

#include 

int main()
{
    int m, n;
    for (m = 2; m <= 50; m++)
    {
        for (n = 2; n < m; n++)
        {
            if (m%n == 0)//什么条件下跳出当前循环
                break;//退出当前循环
        }
        if (m == n)
            printf("%d ",m);
    }
}
#include 

int main()
{
    int i;
    for (i = 1; i <= 10; i++)
    {
        printf("运球%d次\n",i);
        if (i == 5)
        {
            printf("去接个电话\n");
            continue;
        }
    }
    printf("今天的训练到此为止。\n");
    return 0;
}

4.16 分支结构之switch语句

C语言提供了一种用于多分支选择的switch语句 小明对自己每周的学习和生活制定了计划方案,每天应该干什么都详细规划。

switch语句的基本结构:

switch (表达式)
{
    case 常量表达式:
        执行代码块;
        break;
    case 常量表达式:
        执行代码块;
        break;
    case 常量表达式:
        执行代码块;
        break;
    default:
        执行代码块;
}
#include 

int main()
{
    int day = 1;

    switch (day)
    {
    case 1:
        printf("%s\n","学英语");
        break;
    case 2:
        printf("%s\n","学C语言");
        break;

    default:
            printf("%s\n","好好休息");
            break;
    }

}

在使用switch语句时还应该注意以下几点:

1、在 case后的各常量表达式的值不能相同,否则会出现错误. 2、在case子句后面没有break;会一直往后执行一直遇到break,才会跳出switch语句。 3、switch后面的表达式语句只能是整型或者字符类型。 4、在case后,允许有多个语句,可以不用{}括起来 5、各case和default子句的先后顺序可以变动,而不会影响程序执行结果。 6、default子句可以省略不写。

任务:
小明参加期末考试,分数等级分为A-D,等级划分方式如下:
90<=分数<=100 ,等级为A。
80<=分数<90 ,等级为B。
60<=分数<80 ,等级为C。
分数<60 ,等级为D。
小明期末考试分数为87分,

没有弄懂的程序

#include 
int main()
{
    int score = 87; //考试分数为87分 

    switch (score)
    {
        /*想想以下代码为什么用这种方式;
        这种方式的好处?*/
    case 10:
    case 9:
        printf("等级A");
        break;
    case 8:
        printf("等级B");
        //这里是不是缺点什么?            
    case 7:
    case 6:
        printf("等级C");
        //这里是不是缺点什么?  
    default:
        printf("等级D");
        break;
    }
    return 0;
}
#include 

int main()
{
    int year, month, day,sum;
    printf("2008年8月8日");
    scanf("%d %d %d", &year, &month, &day);

    switch (month)
    {
    case 1:  sum = 0;    break;
    case 2:  sum = 31;   break;
    case 3:  sum = 59;   break;
    case 4:  sum = 90;   break;
    case 5:  sum = 120;  break;
    case 6:  sum = 150;  break;
    case 7:  sum = 181;  break;
    case 8:  sum = 212;  break;
    case 9:  sum = 243;  break;
    case 10: sum = 273;  break;
    case 11: sum = 304;  break;
    case 12: sum = 334;  break;
    }
    if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0))
    {
        sum = sum + 1;
    }
    else
    {
        sum = sum;

    }
    sum = sum + day;
    printf("%d",sum);
}
#include 

int main()
{
    int year = 2008;
    int month = 8;
    int day = 8;
    scanf("%d %d %d", &year, &month, &day);
    int sum ,flag;

    switch (month)
    {
    case 1:  sum = 0;    break;
    case 2:  sum = 31;   break;
    case 3:  sum = 59;   break;
    case 4:  sum = 90;   break;
    case 5:  sum = 120;  break;
    case 6:  sum = 150;  break;
    case 7:  sum = 181;  break;
    case 8:  sum = 212;  break;
    case 9:  sum = 243;  break;
    case 10: sum = 273;  break;
    case 11: sum = 304;  break;
    case 12: sum = 334;  break;
    default:
        printf("一年当中只有12个月");
        break;
    }
    //计算天数
    sum += day;
    //当该年是闰年的时候,将状态位设置为1否则设置为0
    if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0))
        flag = 1;
    else
        flag = 0;
    //当需计算的日期是闰年并且需计算的月份大于2月份时,计算的天数自动加1
    if (flag == 1 && month > 2)
        sum++;
    printf("%d年%d月%d日是该年的第%d天,year,month,day,sum");
    return 0;
}

臭名远扬的goto语句

goto语句是一种无条件的分支语句,
goto语句的格式:
goto  语句标记

程序实现从控制台输出1-10,使用goto语句,实现当输出完3之后跳出循环体。

#include 

int main()
{
    int sum = 0;
    int i;
    for (i = 1; i <= 100; i++)
    {
        printf("%d\n",i);
        if (i == 3)
            goto LOOP;
    }
     LOOP:printf("结束for循环了...");
}
相关文章
最新文章
热点推荐