美文网首页
电商专业学习嵌入式软件开发第二十九天

电商专业学习嵌入式软件开发第二十九天

作者: 雨打梨花闭门寒 | 来源:发表于2017-02-24 19:42 被阅读0次
    • C第三天

    今天老师讲的是循环,理解起来都不难,就是运用到题目中很难,而且老师主要是以做题为主,老师在讲课之前先把昨天的作业给讲了一。今天做的练习都不是第一次做了,但是除了前面的较简单的题目,后面的都做不出来。

    作业:简单计算器

    #include <stdio.h>
    void main()
    {
        float a,b;
        char c;
        printf("请输入:");
        scanf("%f%c%f",&a,&c,&b);
        switch(c)
        {
            case '+':
                printf("%.1f\n",a+b);
                break;
            case '-':
                printf("%.1f\n",a-b);
                break;
            case '*':
                printf("%.1f\n",a*b);
                break;
            case '/':
                if(!b) //也可以写为if(b == 0)
                    printf("除数不能为0!\n");
                else
                    printf("%.1f\n",a/b);
                break;
            default:
                printf("输入有误,请重新输入!\n");    
        }
    }
    

    循环语句:

    1.while
    格式:
    while(条件)
    {
        语句;
    }
    

    原理:当条件成立的时候(真),就执行大括号中的语句,执行完成之后,回过去继续判断条件是否成立,如果成立,就继续执行大括号对应的语句,如果不成立,不再执行对应的语句,转而执行大括号后面的语句。

    例:

    #include <stdio.h>
    void main()
    {
        int a=5;
        while(a>0)
        {
            printf("a=%d\n",a);
            a--;
        }
        printf("xxx\n");
    }
    

    练习:计算1~100之和

    sum前1=1;
    sum前2=sum前1+2
    ...
    sum前97=sum前96+97
    sum前98=sum前97+98
    sum前99=sum前98+99
    sum前100=sum前99+100
    =>sum=sum+n    n=1~100
    
    #include <stdio.h>
    void main()
    {
      int sum=0,n=1;
      while(n<=100)
      {
          sum=sum+n;  //记住
          n++;
      }
      printf("sum = %d\n",sum);
    }
    

    练习:写一个自动销售饮料的售货机的程序,有相应的界面,购买的时候,输入金额,和购买产品。售货机会给出相应的提示。

    #include <stdio.h>
    #include <stdlib.h>
    void main()
    {
        char ch='y';
        while(ch=='y')
        {
            system("clear");//清理系统
            printf("\n\n");
            printf("      ***********************************\n"); //那么多星星只是为了好看。。。
            printf("      *             欢迎选购            *\n");
            printf("      *                                 *\n");
            printf("      *            1.红茶 ¥3           *\n");
            printf("      *            2.脉动 ¥4           *\n");
            printf("      *            3.红牛 ¥6           *\n");
            printf("      *            4.牛奶 ¥5           *\n");
            printf("      *                                 *\n");
            printf("      *         请选择:                 *\n");
            printf("      *         请投币:                 *\n");
            printf("      ***********************************\n");
            int c,m;
            system("tput cup 10 24");//定位:tput行坐标 cup列坐标
            scanf("%d%*c",&c);
            system("tput cup 11 24");
            scanf("%d%*c",&m);
            system("tput cup 13 1");        
            switch(c)
            {
                case 1:
                    if(m>3)
                        printf("给你红茶,收好找零:%d\n",m-3); 
                    else if(m==3)
                        printf("红茶不能多喝哦!\n");
                    else
                        printf("不好意思,余额不足!\n");
                    break;
                case 2:
                    if(m>4)
                        printf("脉动回来,收好找零:%d\n",m-4);
                    else if(m==4)
                        printf("脉动给你力量!\n");
                    else
                        printf("不好意思,余额不足!\n");
                    break;
                case 3:
                    if(m>6)
                        printf("红牛真牛,收好找零:%d\n",m-6);
                    else if(m==6)
                        printf("跟着红牛一起牛!\n");
                    else
                        printf("不好意思,余额不足!\n");
                    break;
                case 4:
                    if(m>5)
                        printf("给你牛奶,收好找零:%d\n",m-5);
                    else if(m==5)
                        printf("牛奶多喝长个!\n");
                    else
                        printf("不好意思,余额不足!\n");
                    break;
                default:
                    printf("选择有误!\n");
            }
            printf("是否继续输入?(y/n)\n");
            ch=getchar();
        }
    }
    

    练习:从键盘上输入若干个整数,当输入0时结束输入,求输入的整数之和。

    方法1:使用while
    #include <stdio.h>
    #include <stdlib.h>
    void main()
    {  
        int sum=0,num;
        printf("intput num: ");
        scanf("%d",&num);
        while(num!=0)
        {
            sum=sum+num;
            printf("intput num: ");
            scanf("%d",&num);
        }
        printf("sum is:%d\n",sum);
    }
    
    方法2:使用do...while
    #include <stdio.h>
    #include <stdlib.h>
    int main()
    {
       int i,sum = 0;
       do
        {
            scanf("%d",&i);
            sum += i;   
        }while(i != 0);
        printf("整数之和是:%d\n",sum);
    }
    

    练习:输入一个整数,使这个数逆序输出
    12345=>54321

    #include <stdio.h>
    #include <stdlib.h>
    void main()
    {
        int data,r_data;
        printf("请输入一个数:");
        scanf("%d",&data);
        while(data!=0)
        {
            r_data=data%10;
            printf("%d",r_data);
            data=data/10;
        }
        printf("\n");
    }    
    

    练习:36块砖,36个人搬,4/男,3/女,2个小孩抬1块。问一次性搬完,男,女,小孩各多少人。
    男:9
    女:12
    小孩:36-男-女
    男:1 女:1~12 小孩:36-男-女
    男:2 女:1~12 小孩:36-男-女
    ...
    男:9 女:1~12 小孩:36-男-女

    while(男<9)
    {
        女=1;
        while(女<12)
        {
            小孩=36-男-女;
            if(4*男+3×女+小孩/2==36 && 小孩%2==0)
                printf(...);
            女++;
        }
        男++;
    }
    
    方法1:使用while
    #include <stdio.h>
    void main()
    {
        int man,woman,child;
        man=1;
        while(man<9)
        {
            woman=1;
            while(woman<12)
            {
                child=36-man-woman;
                if((man*4+woman*3+child/2)==36 && child%2==0)
                    printf("man:%d woman:%d child:%d\n",man,woman,child);
                woman++;
            }
            man++;
        }
    }
    
    方法2:使用for
    #include <stdio.h>
    void main()
    {
            int m,w,c;
        for(m = 1;m < 9;m++)
        {
            for(w = 1;w < 12;w++)
            {
                c = 36 - m - w;
                if(4*m+3*w+c/2==36&&c%2==0)
                printf("m:%d w:%d c:%d\n",m,w,c);
            }
        }
    }
    

    2.do...while
    格式:

    do
    {
        语句;
    }while(条件);
    

    原理:先执行一次循环语句,然后判断条件是否成立,如果条件成立,就继续回去执行循环语句,接着再判断条件是否成立,如果不成立,循环结束,故此循环不管条件成立不成立,都会至少执行一次循环体。
    while:先判再做
    do...while:先做再判

    练习:统计从键盘输入的字符的个数。do...while
    enter:\n\r;

    #include <stdio.h>
    void main()
    {
        char c,p;
        int x=0;
        do
        {
            printf("请输入字符:");
            do
            {
                c=getchar();
                x++;
            }while(c!='\n');
            printf("统计输出的字符个数为:%d\n",--x);
            printf("是否继续统计?");
            p=getchar();
            getchar();
        }while(p=='y' || p=='Y');
    }
    

    练习:计算机猜拳游戏:石头,剪刀,布
    玩法:先自己出个拳,计算机随机出一个石头/剪刀/布,然后给出谁赢了。

    怎么产生一个随机值:
    #include <time.h>
    #include <stdlib.h>
    srand((unsigned)time(NULL));//产生一个随机值发生器
    //srand(time(0));
    a=rand();
    

    a%3: 0:剪刀 1:石头 2:布=>计算机
    3:剪刀 5:石头 7:布=>人

    计算机赢了:4 7 if
    我赢了:5 8 else if
    平了:else

    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    #include <unistd.h>
    void main()
    {
        char c;
        int people,computer,total;
        while(1)
        {
            sleep(3);
                system("clear");
            printf("\n\n       这是一个猜拳小游戏\n");
            printf("           A.剪刀\n");
            printf("           B.石头\n");
            printf("           C.布\n");
            printf("           D.不玩了\n");
            printf("       请选择:");
            c=getchar();
            getchar();//吸收残留回车
            switch(c)
            {
                case 'A':
                case 'a':
                    people=3;
                    break;
                case 'B':
                case 'b':
                    people=5;
                    break;
                case 'C':
                case 'c':
                    people=7;
                    break;
                case 'D':
                case 'd':
                    return; //结束当前函数    
            }
            srand((unsigned)time(NULL));
            computer=rand()%3;
            switch(computer)
            {
                case 0:
                    printf("电脑出了\"剪刀\"!\n");
                    break;
                case 1:
                    printf("电脑出了\"石头\"!\n");
                    break;
                case 2:
                    printf("电脑出了\"布\"!\n");
                    break;
            }
            total=computer+people;
            if(total==4 || total==7)
                printf("电脑赢了!\n");
            else if(total==5 || total==8)
                printf("你赢了!\n");
            else
                printf("平局\n");
        }
    }
    

    3.for

    相关文章

      网友评论

          本文标题:电商专业学习嵌入式软件开发第二十九天

          本文链接:https://www.haomeiwen.com/subject/ulgwwttx.html