虚拟机day5课堂笔记及作业

day05

练习:

答案:B

知识点:case分支后边没有break,会从符合条件的分支开始一直运行到整个switch语句执行完才结束

[1]循环

1.1 for

基本格式:

for(表达式1;表达式2;表达式3)

{

语句块

}

表达式1循环变量初值

表达式2终止条件

表达式3增值

执行顺序

        先执行表达式1判断表达式2是否成立

        成立:进入循环执行代码块执行表达式3判断表达式2是否成立

        不成立:循环结束

示例:

#include <stdio.h>
int main(int argc, char const  * argv[])
{
    for(int i=0;i<5;i++)
    {
        printf("%d\n",i);
    }  
    return 0;
}

运行结果:

变形:

第一种:

#include <stdio.h>
int main(int argc, char const  * argv[])
{
    int i;
    for(i=0;i<5;i++)
    {
        printf("%d\n",i);
    }
     printf("%d\n",i);   //5
}

第二种:

#include <stdio.h>
int main(int argc, char const  * argv[])
{
    int i=0;
    for(;i<5;i++)
    {
        printf("%d\n",i);
    }
     printf("%d\n",i);   //5
}

第三种:

#include <stdio.h>
int main(int argc, char const  * argv[])
{
    int i=0;
    for(;i<5;)
    {
        printf("%d\n",i);
        i++;
    }
     printf("%d\n",i);   //5
}

三种变形运行结果都一样:

死循环:

第一种:

#include <stdio.h>
int main(int argc, char const  * argv[])
{
    int i=0;
    for( ; ; )
    {
        printf("%d\n",i);
        i++;
    }
     printf("%d\n",i); 
}

运行结果:按 ctrl+c  结束死循环

第二种:最简单的死循环

#include <stdio.h>
int main(int argc, char const  * argv[])
{
    for( ; ; );
}

运行结果:按 ctrl+c  结束死循环

练习

答案:D           解析:先算术运算再赋值

练习

打印所有三位数之间水仙花数153==1^3+5^3+3^3

思路:

1.  获取所有3位数

2.  判断条件

代码如下:

#include <stdio.h>
int main(int argc, char const  * argv[])
{
    int g=0,s=0,b=0;
    for(int i=100;i<1000;i++)
    {
        g=i%10;
        s=i/10%10;
        b=i/100;
        if(g*g*g+s*s*s+b*b*b==i)
        {
            printf("%d\n",i);
        }
    }
    return 0;
}

运行结果:

嵌套结构

外层执行一次内层执行一轮

#include <stdio.h>
int main(int argc, char const *  argv[])
{
    for(int i=0;i<5;i++)
    {
        for(int j=0;j<3;j++)
        {
            printf("%d\n"i,j);
        }
    }
    return 0;
}

运行结果:

打印九九乘法表

#include <stdio.h>
int main(int argc, char const *  argv[])
{
    for(int i=1;i<10;i++)
    {
        for(int j=1;j<=i;j++)
        {
            printf("%d*%d=%d\t",j,i,i*j);
        }
        printf("\n");  //或putchar(10);
    }
    return 0;
}

运行结果:

对齐方式

示例:

#include <stdio.h>
int main(int argc, char const *  argv[])
{
    int a=2,b=22,c=222;
    float d=2;
    printf("%3d\n",a);
    printf("%3d\n",b);  
    printf("%3d\n",c);
    printf("%4.1f\n",d);    //  %m.n     m:位宽 .n保留n位小数
}

运行结果:

练习

1.终端输入行数

5

*

**

***

****

*****

代码如下

#include <stdio.h>
int main(int argc, char const *  argv[])
{
    int a=0;
    scanf("%d",&a);
    for(int i=1;i<=a;i++)
    {
        for(int j=1;j<=i;j++)
        {
            printf("*");
        }
        printf("\n");
    }
}

运行结果:

2.终端输入行数

5

*

**

***

****

*****

***** 0空格

 **** 1空格

  *** 2空格

   ** 3

    *

代码如下:

#include <stdio.h>
int main(int argc, char const *  argv[])
{
    int a=0;
    scanf("%d",&a);
    for(int i=1;i<=a;i++)
    {
        for(int j=1;j<=i;j++)
        {
            printf("*");
        }
        printf("\n");
    }  
    for(int i=1;i<=a;i++)
    {
        for(int j=1;j<i;j++)
        {
            printf(" ");
        }
        for(int k=a;k>=i;k--)
        {
            printf("*");
        }
        printf("\n");
    }
    return 0;
}

运行结果:

1.2 while

基本格式:

int i=1;

while(终止条件)

{

语句块

增值减值

}

示例:

#include <stdio.h>
int main(int argc, char const *  argv[])
{
    int a=0;
    while(a<5)
    {
        printf("%d\n",a);
        a++;
    }
}

运行结果:

死循环:

#include <stdio.h>
int main(int argc, char const *  argv[])
{
    while(1);
}

运行结果: 按 ctrl+c  结束死循环

1.3 do_while

基本格式:

do

{

代码段

} while (终止条件);

示例:

do_while与while的区别:

  • do-while 循环至少执行一次,因为条件判断位于循环体的末尾。
  • while 循环可能会一次都不执行,如果初始条件为假,则循环体根本不会被执行。
  • do-while 循环的条件判断在循环体的末尾,使用 while 关键字后跟条件表达式。
  • while 循环的条件判断在循环体的开始,同样使用 while 关键字后跟条件表达式。
  • do-while 循环适用于至少需要执行一次循环体的情况,然后根据条件判断是否继续执行。
  • while 循环适用于在执行循环体之前需要先判断条件是否满足的情况。
  • 在 do-while 循环中,如果条件表达式为真,循环将继续执行;如果条件表达式为假,循环将结束。
  • 在 while 循环中,循环只有在条件表达式为真时才会开始执行,如果条件表达式一开始就为假,循环体将不会被执行。

        do_while 执行一次代码段判断条件是否成立

        while 判断条件是否成立运行代码段

#include <stdio.h>
int main(int argc, char const *  argv[])
{
    int a=11;
    do
    {
        printf("%d\n",a);
        a++;
    } while (a<5);

    while(a<5)
    {
        printf("%d\n",a);
        a++;
    }
}

运行结果:

练习

答案:A    解析: 非0值为真,0为假     x+=2  ->-2          x++=-1  !(-1)=0,不成立

1.4 循环控制语句

break 终止本层循环

continue 结束本层本次循环继续下一次循环

return 0 结束整个程序

break示例:

#include <stdio.h>
int main(int argc, char const *  argv[])
{
    int i=0;
    for(i=1;i<10;i++)
    {
        if(i%5==0)
        {
            break;
        }
        printf("%d",i);
    }
    printf("hello\n");
    return 0;
}

运行结果:

#include<stdio.h>
int main(int argc, char const *argv[])
{
    int i=0;
    for(i=1;i<6;i++)
    {
        for(int j=1;j<4;j++)
        {
            if(j==2)
            {
                 break;
            }
            printf("i:%d j:%d\n",i,j);
        }
    }
    printf("hello\n");
    return 0;
}

运行结果:

continue示例:

#include <stdio.h>
int main(int argc, char const *  argv[])
{
    int i=0;
    for(i=1;i<10;i++)
    {
        if(i%5==0)
        {
            continue;
        }
        printf("%d",i);
    }
    printf("hello\n");
    return 0;
}

运行结果:

#include<stdio.h>
int main(int argc, char const *argv[])
{
    int i=0;
    for(i=1;i<6;i++)
    {
        for(int j=1;j<4;j++)
        {
            if(j==2)
            {
                continue;
            }
            printf("i:%d j:%d\n",i,j);
        }
    }
    printf("hello\n");
    return 0;
}

运行结果:

练习

1.  循环输入一个5位数,判断它是不是回文数。当输入0时循环结束。

即12321是回文数,个位与万位相同,十位与千位相同。

方法一:

#include<stdio.h>
int main(int argc, char const *argv[])
{
    while(1)
    {
        int i=0,w=0,q=0,s=0,g=0;
        scanf("%d",&i);
        w=i/10000;
        q=i/1000%10;
        s=i%100/10;
        g=i%10;
        if(i!=0)
        {
            if(w==g &&q==s && i>=10000 && i<100000)
            {
                printf("%d是回文数\n",i);
            }
            else if(i>=10000 && i<100000){
                printf("%d不是回文数\n",i);
            }
            if(i<10000 || i>=100000)
            {
                printf("error\n");
            }
        }
        else{
            break;
        }
    }
    return 0;
}

方法二:

#include <stdio.h>
int i = 0;
int main()
{
    while (1)
    {
        scanf("%d", &i);
        if (i == 0)
            break;
        if (i > 99999 || i < 10000 && i != 0)
        {
            printf("error");
            printf("\n");
        }
        else if (i / 10000 == i % 10 && i / 10 % 10 == i / 1000 % 10)
            printf("%d是回文数\n", i);
        else
        {
            printf("%d不是回文数\n", i);
        }
    }
    return 0;
}

运行结果:

2.  写程序实现功能:读入两个整数(data1和data2)和一个运算符(op),计算表达式data1 op data2 的值.其中op可以为+、-、*、/四个符号中的任一种(用switch语句实现)

#include <stdio.h>
int main(int argc, char const  * argv[])
{
    int a=0,b=0;
    char c=0;
    scanf("%d %d %c",&a,&b,&c);
    switch (c)
    {
    case '+':
        printf("%d+%d=%d\n",a,b,a+b);break;
    case '-':
        printf("%d-%d=%d\n",a,b,a-b);break;
    case '*':
        printf("%d*%d=%d\n",a,b,a*b);break;
    case '/':
        if(b==0)
        {
            printf("除数不能为0\n");
        }
        else{
            printf("%d/%d=%d\n",a,b,a/b);
            break;
        }
    }
    return 0;
}

运行结果:

3.  输入任意两个数,输出两数之间(包括这两个数)偶数之和。

思路:将输入的两个数a,b中小的数a,依次加1,加到b的值,

每次循环判断这个数a是否为偶数,是则累加到sum中

#include <stdio.h>
int main(int argc, char const  * argv[])
{
    int a=0,b=0,t=0,sum=0;
    scanf("%d %d",&a,&b);
    if(a>b)
    {
        t=a;a=b;b=t;
    }
    for(int i=a;i<=b;i++)
    {
        if(i%2==0)
        {
            sum+=i;
        }
    }
    printf("%d\n",sum);
    return 0;
}

运行结果:

作业

1.  梳理笔记先把课上练习题解决

  • 30
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值