嵌入式培训笔记-day3(C语言基础)

一、循环 
1.while循环 
格式:
    while(条件)//条件成立 则执行花括号里面的语句 执行完后 再判断条件是否成立
    {
        语句;//循环体
    }
(1)
    例子:
    #include<stdio.h>
    int main()
    {
        int i=0;//循环变量i初始化为0
        while(i<5)//判断能够进入循环的条件是i<5
        {
            printf("wa~~\n");
            i++;//循环变量增长的幅度
        
        }
        return 0;

    }
    
    ctrl+c 强制结束当前程序
    
    练习:打印输出26个字母 小写
    
    #include<stdio.h>
    int main()
    {
        int i=0;
        while(i<26)
        {
            printf("%c ",'a'+i);
            i++;
        }
        return 0;
    }
    
    练习:敲7  
    7 14 17 21 27 28 。。。
    #include<stdio.h>
    int main()
    {
        int i=1;
        while(i<100)
        {
            if(i%7==0||i%10==7||i/10==7)//70 72
            {
                printf("%d  ",i);
            }
            i++;
        }

        printf("\n");
        return 0;

    }
    
(2)求和
  
  int x=0;
  x = x+1;
  x = x+2;
  x = x+3;
  x = x+4;
  x = x+5;
  ....
  x = x+100;
  
  #include<stdio.h>
    int main()
    {
        int x=0;//记录和
        int i=0;
      while(i<=100)
      {
          x = x+i;
          i++;
      }
      
      printf("%d\n",x);
        return 0;
    }
  
    例子:
    #include<stdio.h>

    int main()
    {
        system("clear");//清屏


        printf("3\n");
        sleep(1);//使程序睡眠1s
        system("clear");

        printf("2\n");
        sleep(1);//使程序睡眠1s
        system("clear");
        
        
        printf("1\n");
        sleep(1);//使程序睡眠1s
        system("clear");
        return 0;

    }

    练习:1分钟倒计时
      #include<stdio.h>
    int main()
    {
        system("clear");

        int min=1,sec=0;
        printf("%02d:%02d\n",min,sec);

        sleep(1);
        system("clear");
        sec = 59;
        min = 0;

        while(sec>=0)
        {
            printf("%02d:%02d\n",min,sec);
            sleep(1);
            system("clear");
            sec--;
        }
        return 0;

    }

2.for循环语句
格式: 
    for(表达式1;表达式2;表达式3)
    {
        语句;//循环体 
    }

    表达式1:循环变量赋值
    表达式2:循环条件
    表达式3:循环变量增长的幅度
    #include<stdio.h>
    int main()
    {
        int i;
        for(i=0;i<5;i++)
        {
            printf("wa~~~\n");
        }
        return 0;
    }

    #include<stdio.h>
    int main()
    {

        int i,sum=0;
        for(i=0;i<=100;i++)
        {
            sum = sum+i;
        }
        printf("%d\n",sum);
        return 0;
    }
    练习:求和 1+3+5+7...+99
    #include<stdio.h>
    int main()
    {

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

    练习: 1-3+5-7+9-11+13-15....+101
    #include<stdio.h>
    方法1:
    int main()
    {
        int sum1=0,sum2=0;
        int i;

        for(i=1;i<=101;i+=4)
        {
            sum1 = sum1 + i;
        }
        
        for(i=3;i<=101;i+=4)
        {
            sum2 = sum2+i;
        }

        printf("%d\n",sum1-sum2);

        printf("%d %d\n",sum1,sum2);
        return 0;
    }
    
    #include<stdio.h>

    int main()
    {
        int i,sum=0;
        int a=-1;//a记录正负

        for(i=1;i<=101;i+=2)
        {
            a = a*(-1);//等价于a=-a 
            sum = sum+i*a;
        }
        return 0;

    }


    例子: 打印图形  每次只能打一个*
    *****
    *****
    *****

    for(i=0;i<3;i++)//行数
    {
        for(j=0;j<5;j++)//列数
        {
            printf("*");    
        }
    }
    
    练习 :
    *            
    **
    ***
    ****
    
    1 1
    2 2
    3 3
    4 4
    n n 

    #include<stdio.h>

    int main()
    {
        int i,j;
        int n;

        printf("please input row:\n");
        scanf("%d",&n);

        for(i=1;i<=n;i++)//hang 
        {
            for(j=1;j<=i;j++)//Lie
            {
                printf("*");
            }
            printf("\n");
        }
        return 0;
    }

    练习: 
    * 
    ***
    *****
    *******
    
    1 1
    2 3
    3 5
    4 7
    *  2*hang-1

    #include<stdio.h>

    int main()
    {
        int i,j;
        int n;

        printf("please input row:\n");
        scanf("%d",&n);

        for(i=1;i<=n;i++)//hang 
        {
            for(j=1;j<=2*i-1;j++)//Lie
            {
                printf("*");
            }
            printf("\n");
        }
        return 0;
    }
        
        
    练习: 
    * * * * * 
      * * * * *
        * * * *    * 
          * * * * *
            * * * * *    

    1 0
    2 1 
    3 2
    4 3
    ....    
  
          #include<stdio.h>

        int main()
        {
            int i,j,k;
            int n;

            printf("please input row:\n");
            scanf("%d",&n);

            for(i=1;i<=n;i++)//hang 
            {
                for(j=1;j<=i-1;j++)
                {
                    printf(" ");
                }
                
                for(k=0;k<5;k++)
                {
                    printf("* ");
                }
                printf("\n");
            }

            return 0;

        }
        
3.continue 
    练习:1+2+3+。。+100 求和 能整除7的数 不计算在内
    
    #include<stdio.h>

    int main()
    {
        int i=1;
        int sum=0;
        for(i=1;i<=100;i++)
        {
            if(i%7!=0)
            {
                sum  = sum+i;
            }
        }

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

    }

    另一种做法:
    #include<stdio.h>

    int main()
    {
        int i=1;
        int sum=0;
        for(i=1;i<=100;i++)
        {
            if(i%7==0)
            {
                continue;//结束本次循环 直接进入下一次循环 执行i++
            }
            sum  = sum+i;
        }

        printf("%d\n",sum);
        return 0;
    }

4.do-while 
先执行 再判断 
格式: 

    do 
    {
        语句;//循环体
    }while(条件);//分号必须加    
    如果条件为真 则执行下一轮循环 如果条件为假 则循环结束
    主要应用:输入的错误处理 输入冗错    
    #include<stdio.h>
    int main()
    {
        int a;
        do 
        {
            scanf("%d",&a);
        }while(a<0||a>10);//  0=<a<=10
        return 0;

    }    

    例子: 
    求和 
        #include<stdio.h>

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

        }
        
5.无限循环
(1)
    while(1)
    {
        ;
    }    

    (2)
    for(;;;)
    {
        
    }
    结束无限循环:ctrl+c 
6.break 

    int main()
    {
        int i=1;
        int sum=0;
        for(i=1;i<=100;i++)
        {
            if(i%7==0)
            {
                break;//跳出本层循环 
            }
            sum  = sum+i;
        }
        printf("%d\n",sum);
        return 0;
        
    }
    
    break:跳出循环或switch语句  break只能用于循环及switch语句
    continue:结束本次循环 进入下次循环 不跳出循环
    return :结束函数    
    
    练习:计算1元人民币兑换成1分 2分 5分的不同兑换方法 输出方法总数 
    #include<stdio.h>

    int main()
    {
        int one,two,five,count=0;
        for(one=0;one<=100;one++)
        {
            for(two=0;two<=50;two++)
            {
                for(five=0;five<=20;five++)
                {
                    if(1*one+2*two+5*five==100)
                    {
                        count++;
                    }
                }
            }
        }
        
        printf("%d\n",count);
        return 0;

    }
    练习:
    在三位数100-999 中 找到水仙花数
    407=4*4*4+0*0*0+7*7*7
    153=1*1*1+5*5*5+3*3*3;
    
    153
    个位:153%10-->3
    十位:153/10 -->15  15%10-->5
    百位:153/100-->1
    
    #include<stdio.h>
    int main()
    {
        int x,y,z;
        int i;
        for(i=100;i<1000;i++)
        {
            x= i/100;
            y = i/10%10;
            z = i%10;
            if(i==x*x*x+y*y*y+z*z*z)
            {
                printf("%d\n",i);
            }
        }
        return 0;
    }
    
    作业:
    1.实现奔跑的H 
    1 0 
    2 1 
    3 2
    #include<stdio.h>
    int main()
    {
        system("clear");


        int i=0,j;
        while(i<20)
        {
            for(j=0;j<i-1;j++)
            {
                printf(" ");
            }

            printf("H\n");
            sleep(1);
            system("clear");
            i++;
        }
        return 0;

    }
    
    升级:小人 跑
    O
   <H>
   I I
   
   #include<stdio.h>

    int main()
    {
        int i,j;
        for(i=0;i<=20;i++)
        {
               for(j=0;j<i-1;j++)
           {
               printf(" ");

           }
           printf(" O\n");
           
           for(j=0;j<i-1;j++)
           {
             printf(" ");
           }
              printf("<H>\n");
           
           for(j=0;j<i-1;j++)
           {
             printf(" ");
           }
             printf("I I\n");

           sleep(1);

           system("clear");
          // while(1);
        }
     }

    2.
       *
      ***
     *****
    *******    
    1 1      
    2 3 
    3 5
    4 7
    
    *  2*i-1 
    
    
    1 3  
    2 2  
    3 1  
    4 0
    
    空格 4-i
    
    #include<stdio.h>
    int main()
    {
        int i,j,k;
        int n;
        printf("please input row:\n");
        scanf("%d",&n);
        for(i=1;i<=n;i++)
        {
            for(j=0;j<n-i;j++)
            {
                printf(" ");
            }
            
            for(k=0;k<2*i-1;k++)
            {
                printf("*");
            }
            printf("\n");
        }
        return 0;

    }
        
    
    

猜你喜欢

转载自blog.csdn.net/daojuedi1023/article/details/81121840