[黑马程序员]09[C语言]循环控制语句部分学习笔记总结

来源:互联网 发布:微信淘宝客发单机器人 编辑:程序博客网 时间:2024/06/05 15:06

------- android培训、java培训、IOS培训、期待与您交流! ----------



循环控制

 

1.    if-else

 

//有些题为了迷惑读者,或出现悬空else,

//我们所要遵循的时:else与向上最近的一个if匹配

//应用程序加载器

 

//注意事项:

//1.空语句

//2.if语句与复合语句

//3.if语句与return语句

//4.if语句的作用域问题

//5.作用域紊乱

//int nn=1;

//if(nn==1) int num;

////这样写代码是会报错的,因为作用域紊乱

//6.if语句与else子句的配对问题

 

//int main()

////首先要有一个数字,生成一个0-9的随机数

////在表示范围的时候,一般左边取得到,右边取不到[),所以要取0-9的数字的时候,我们取0-10的随机数

//{

//    int data;

//    //long l = random();

//    //随机数是一个伪随机数

//    //printf("%ld\n",l);

//    //时间种子来生成随机数

//    //Mac上创建随机数,使用函数arc4random_unform

//    int i =arc4random_uniform(10);//取不到10

//    printf("%d\n",i);

//

//    printf("请输入数据:\n");

//    scanf("%d",&data);

//

//    if (data == i) {

//        printf("恭喜你猜对啦!\n");

//    }

//    else{

//        printf("sorry~下次再来吧~\n");

//    }

//    return 0;

//}

 

 

//if-else-if语法:

#include<stdio.h>

 

int main(){

    int score;

    printf("请输入成绩:\n");

    scanf("%d",&score);

   

    if (score<=100&&score>=90) {

        printf("A\n");

    }

    elseif (score>=80){

        printf("B\n");

    }

    elseif (score>=70){

        printf("C\n");

    }

    elseif (score>=60){

        printf("D\n");

    }

    else{

        printf("E\n");

    }

    return0;

}

 

2.    while  do-while

 

两种基本一样的循环控制语句,不同的是do-while会必定执行一次,通常用在一些相匹配的客户需求环境

 

基本语法:

int main()

{

    int i =1;

   

    int sum =0;

   

    while (i<=100)

    {

        sum += i;

        i++;

    }

    printf("%d\n",sum);

   

    return0;

}

 

代表性具体题

 

//5.猜数字

 

//#include <stdio.h>

//#include<stdlib.h>

//

//int main()

//{

//    // 1.计算机分配一个随机数:

//    int computerNum = arc4random_uniform(10);

//    int input =0;

//    int i =0;

//

//    //2.提示用户开始猜

//    printf("请输入您猜的数字:\n");

//    scanf("%d",&input);

//    if (input == computerNum) {

//        printf("胜利\n");

//        return 0;

//    }else if (input >computerNum){

//        printf("大了\n");

//    }else{

//        printf("小了\n");

//    }

//

//    //3,循环判断

//    //4.如果正确了,直接提示胜利,如果不对,提示重新输入

//    while (i<2) {

//        printf("请重新输入您猜的数字:\n");

//        scanf("%d",&input);

//        if (input == computerNum) {

//            printf("胜利\n");

//            return 0;

//        }else if (input >computerNum){

//            printf("大了\n");

//        }else{

//            printf("小了\n");

//        }

//        i++;

//    }

//    //5.如果次数到了,循环正常结束,提示错误

//    printf("次数已到,失败\n");

//

//    return 0;

//}


 

3.    switch

 

语法很简单,分支选择输出,看实例:

 

int main()

{

    int year,month;

    printf("请输入年:\n");

    scanf("%d",&year);

    printf("请输入月:\n");

    scanf("%d",&month);

   

    if(month ==2)

    {

        if ((year %4 ==0 &&year %100 !=0) || year %400 ==0)

        {

            printf("29\n");

        }

        else

        {

            printf("28\n");

        }

    }

    else

    {

        switch (month) {

            case 4:

            case 6:

            case 9:

            case 11:printf("30\n");

                break;

            default:

                printf("31\n");

                break;

        }

    }

    return0;

}

 

4.    for

 

//for循环的诞生主要是针对需要严格显示循环次数的循环

 

//for语句的几种写法:

//1>将定义声明放在前面,只在for中初始化:

//int i; for(i =0;i<=10;i++) 好处:在循环以后,可以访问变量i(学完数组后这种写法有用)

//2.为了实现统一,将变量的定义放在for的初始语句中:

//for(int i =0;i <=10;i++){} 好处:第二种方便直观,不需要在for循环外调用i值的一般用

 

int main()

{

    for (int i =0; i <3; i++)

    {

        printf("\n");

    }

   

    for (int i =1; i <=3; i++)

    {

        printf("\n");

    }

   

    for (int i =10; i >3; i--)

    {

        printf("\n");

    }

    return0;

}

 

 

//3.在早期计算机,++i(1,1,只需要一个内存空间),相比于i++(0,1,需要两个内存空间)可以节约内存

 

for循环嵌套实例(打印空心菱形)

#include<stdio.h>

#define N4

 

int main()

{

    for (int i =0; i <N; ++i) {

        //1.打印空格N-1-i

        //for (int k =N -1- i; k>0; --k)

        for (int k = 0; k <N-1-i; ++k)

        {

            printf(" ");

        }

        //2.打印*2*i+1

        for (int j =0; j <2*i+1; ++j) {

            //打印空金字塔

            //1.第一行与最后一个打印"*"

            //2.最后一行和第一行不考虑

            //            if (i ==0||i ==N -1)

            //            {

            //                printf("*");

            //            }else if (j ==0 ||j ==2*i)

            //            {

            //                printf("*");

            //            }else

            //            {

            //                printf(" ");

            //            }

            printf(i ==0|| j ==0 ||j ==2*i ?"*" : " " );

        }

        //打印换行

        printf("\n");

    }

   

    for (int i =N-1; i >=0; --i) {

        //1.打印空格N-1-i//i

        //for (int k =N -1- i; k>0; --k)

        for (int k = 0; k <N -1-i; ++k)

        {

            printf(" ");

        }

        //2.打印*2*i+1 //2*(N-i-1)+1

        for (int j =0; j <2*i+1; ++j) {

            //打印空金字塔

            //1.第一行与最后一个打印"*"

            //2.最后一行和第一行不考虑

            //            if (i ==0||i ==N -1)

            //            {

            //                printf("*");

            //            }else if (j ==0 ||j ==2*i)

            //            {

            //                printf("*");

            //            }else

            //            {

            //                printf(" ");

            //            }

            printf(i ==0|| j ==0 ||j ==2*i ?"*" : " " );

        }

        //打印换行

        printf("\n");

    }

   

    return0;

}

 

5.    break&&continue

 

//breakswitch语句中,表示跳出switch结构,不执行后面的case

 

//在循环中break有一样的涵义,表示跳出循环(就是结束当前所有的循环,不再执行了)

 

//break在使用时候常常和if连用,表示在满足某个条件时跳出循环

 

//比较一下各个循环实现的效果:

//统计字符个数

//1>while

//int main()

//{

//    while (1) {

//

//        printf("5\n");

//

//        break;

//    }

//    return 0;

//}

 

//2>do-while

 

//int main()

//{

//    int i =0;

//    char ch;

//    do {

//        scanf("%c",&ch);

//        i++;

//    } while (ch!='\n');

//    printf("%d\n",i -1);

//    return 0;

//}

//whiledo-while写的是题目的反条件

//当条件多了后有时候容易混淆

//可以这样写:!(e1||e2&&e3||e4)

//也可以这样写:

//while (1){

//    if(符合要求) break;

//}

 

//int main()

//{

//    int i =0;

//    while (1) {

//        if (getchar() =='\n') break;

//        i++;

//    }

//    printf("%d\n",i);

//

//    return 0;

//}

 

//continue语句

//continue表达的意思是结束本次循环,直接进入下一次循环(break是跳出全部)

//案例:打印出1-100中不能被3整除的整数(遇到能被3整除的跳过,不能被3整除的打印)这里适合用continue

int main()

{

    int i,j =0;

   

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

        if (i%3==0) {

            continue;

        }

        //j

        j++;

        printf("%d\t",i);

        if (j%6 ==0) {

            printf("\n");

        }

        //这里j的引入专门处理行打印问题

    }

    return0;

}

 

 

 

int main2()

{

    for (int i =0; i <3; ++i) {

        for (int j =0; j <2; ++j) {

            printf("%d,%d",1,2);

        }

    }

    return0;

}

 

//循环套循环查找某个数据是否存在的时候,在最内层里怎么一次性跳出

 

//1>设置intflag =1;查找结束时设置

//if (需要条件满足){

//flag = 0;break;

//}

 

//2>goto语句,直接从当前位置跳出:

//if(需要条件满足){

//goto num;

//}

//...

//num: return 0;

 

//3>在当前位置改变循环变量位超出循环范围的值,使循环自动跳出

//if (需要条件满足){

//int i=32423423231;(0<i<100)

//}

0 0
原创粉丝点击