循环(for,while,do_while,break,continue) 2024.7.5

[1]循环

1.1 for

基本格式

for(表达式1;表达式2;表达式3)
{
    语句块;
}

表达式1循环变量初值

表达式2终止条件

表达式3增值

===============================

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

{
    printf("%d\n",i);
}

执行顺序

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

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

不成立循环结束

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

  1. 获取所有3位数
  2. 判断条件
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(i==g*g*g+s*s*s+b*b*b)
        printf("%d\n",i);
}

变形

int i;
for(i=1;i<5;i++)
{
    printf("%d\n",i);
}
printf("i:%d\n",i); //i=5

==============================

int i=1;
for(;i<5;i++)
{
    printf("%d\n",i);
}

================================

int i=1;
for(;i<5;)
{
    printf("%d\n",i);
    i++;
}

==================================

for(;;);

练习

嵌套结构

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

for(int i=0;i<5;i++)
{
    for(int j=0;j<3;j++)
    {
        printf("%d %d\n",i,j);
    }
}

打印九九乘法表

for(int i=1;i<10;i++)
{
    for(int j=1;j<=i;j++)
    {
        printf("%d*%d=%d\t",i,j,i*j);
    }
    putchar(10);
}

===========================

int a=2,b=22,c=222;
printf("%3d\n",a);
printf("%3d\n",b);
printf("%3d\n",c);
%m.n m:位宽 .n保留n位小数
float d=2;
printf("%4.1f\n",d);

练习

终端输入行数:5

***** 0空格

 **** 1空格

  *** 2空格

   ** 3空格

    * 4空格

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

1.2 while

int i=1;
while(终止条件)
{
    语句块;
    增值或减值;
}

===================

死循环while(1); for(;;);

1.3 do_while

do
{
    代码段;
} while (终止条件);

==============================

int i=11;
do
{
    printf("%d\n",i);
    i++;
} while (i<5);

whiledo_while区别

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

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

练习

A 00

1.4 循环控制语句

break

终止本层循环

continue

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

return 0

结束整个程序

#include<stdio.h>

int main(int argc, char const *argv[])
{
    int i=0;
    for(i=1;i<10;i++)
    {
        if(i%5==0)
        {
            // break;
            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)
            {
                // break;
                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[])
{
    int n;
    while(1)
    {
        scanf("%d",&n);
        if (n==0)
        {
            break;
        }
        else if(n%10==n/10000&&(n-n/10000*10000)/1000==n%100/10)
        {
            printf("这个数是回文数\n");

        }
        else
        {
            printf("这个数不是回文数\n");
        }
    }
    return 0;
}

2.写程序实现功能:读入两个整数(data1和data2)和一个运算符(op),计算表达式data1 op data2 的

值.其中op可以为+、-、*、/四个符号中的任一种(用switch语句实现)

#include<stdio.h>
int main(int argc, char const *argv[])
{
    int data1=0,data2=0;
    char op;
    printf("请输入data1 data2 op:");
    scanf("%d %d %c",&data1,&data2,&op);
    switch (op)
    {
    case '+':
        printf("%d\n",data1+data2);
        break;
    case '-':
        printf("%d\n",data1-data2);
        break;
    case '*':
        printf("%d\n",data1*data2);
        break;
    case '/':
        printf("%d\n",data1/data2);
        break;

    default:
        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,sum=0,i=0;
    printf("请输入数a 数b:");
    scanf("%d %d",&a,&b);
    if(a<b)
    {
        for(i=a;i<=b;i++)
        {
            if(a%2==0)
            {
                sum=sum+a;
            }
        }
    }
    else
    {
        for(i=b;i<=a;i++)
        {
            if(b%2==0)
            {
                sum=sum+b;
            }
        }
    }
    printf("两数之间偶数之和为:%d\n",sum);
    return 0;
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值