嵌入式0基础开始学习 ⅠC语言(4)循环结构

0.问题引入

      求0~100数据之和:
         int sum = 0;
         sum = 1+2+3+4+....+100;
        
         废手,那么有没有一种好的方法取操作呢?
         
         int sum = 0;
         int i =1;
         sum = sum +i;  // sum = 0+1;
         i = i+1 ;     // i = 2;
        
         sum = sum +i ;
         i = i + 1;
        
         将上面的那两行代码重复执行100次,
         那么0~100和就出来了!
        
         循环!!!
         循环的本质==>重复!!!
         所有重复的代码,都可以用循环来实现。
        
         在c语言中,能达到循环效果的语句
              (1)for语句
              (2)while语句
              (3)do....while语句
              (4)goto 和 if 构成循环
            

1. goto语句

        goto “去哪儿”
        goto:无条件跳转
              让cpu到指定的地方去执行
              
        语句:
               goto 行标识符:
                    
                    行标识符:
                               标识符,用来表示某一行。
                               写在一行的最前面,不需要顶格,可以有空白符
                               
                    如:想办法让计算机重复执行如下两条语句
                            sum = sum +i ;
                            i = i + 1;
                            
                    loop :
                           sum = sum +i ;
                           i = i + 1;
                           goto loop;
                           
                        像上面的这个语句块,可以实现循环效果,重复执行“sum = sum +i ; i = i + 1;”
                        但是上面语句块,构成了一个死循环。
                        所以说,goto语句 一般需要和if语句配合使用,避免造成“死循环”
                        
                    如:想办法让计算机重复执行如下两条语句100次
                            sum = sum +i ;
                            i = i + 1;
                            
                           int sum = 0;
                           int i = 1;
                        loop:
                              sum = sum+i;
                              i = i +1;
                              if(i<=100)//循环次数在100之内
                              {
                                 goto loop;
                              }
                              
                练习:请各位大佬,写一个程序,求100以内3的倍数之和(用goto语句实现)//3,6,9,12
                        #include <stdio.h>
                         int main()
                         {
                            int sum = 0;
                            int i = 3;
                            loop:
                                 sum = sum +i;
                                 i = i+3
                                if(i<=99)
                                {
                                   goto loop;
                                }
                            printf("%d\n",sum);     
                         }
                        
                    NOTE:
                          建议要限制使用goto,
                          并不是goto语句有问题,但是使用goto语句的人有问题
                          建议不使用goto!!!
                         

2.while语句

            语法:
                    while(表达式)
                                循环体语句;
            执行顺序:
                       当(while)“表达式”的值为非0,则执行“循环体语句”,执行完循环体语句之后
                       再跳转到上面继续判断“表达式”的值;
                       ......
                       当(while)”表达式“的值为0,结束循环
            表达式: C语言中任意合法表达式都OBJK    
            语句:
                    单语句:只有一个;号的语句
                    复合语句:
                             {}/if/switch/while....
 
                    例子:
                          int i = 1;
                          int sum = 0;
                          while(i<=100)                        
                           sum = sum +i;
                           i = i+1;
                    上面的这个while,只能够管到    “sum = sum +i;”    这一行语句,表达式的值一直为真
                    所以上面是一个“死循环”,因为i的值,一直为1,“表达式”的值一直为1(永远为真)

                    so:
                        不管while后面有没有语句,先打一对{},以确定while循环的管辖范围

                练习:  
                        用while循环来实现:逆序输出一个非负数的各个位上面的数字。
                            12345
                            54321
                            
                        S1:    定义一个整型变量,从键盘赋值
                            int a;
                            scanf("%d",&a);
                        S2:输出a的个位上的数字
                            geiwe = a%10;
                            printf("%d",gewei);    
                        s3:然后干掉个位
                            a = a/10;
                        s4:回到s2,知道当a为0结束循环    

            上面的程序,能不能用do...while来实现?
                        int a;
                        scanf("%d",&a);
                        do
                        {
                          //输出个位上的数字
                           geiwe = a%10;
                           printf("%d",gewei);
                           a = a/10;                           
                        }while(a!=0);   

3.do....while

    语法:
            do
             {
                 循环体语句;
             }
              while(表达式);
        执行顺序:  
                   先执行“循环体语句”,然后再判断“表达式的值”,如果表达式的值为非0
                    则回到上面,继续执行“循环体语句”;
                    ....
                    直到“表达式”的值为0,结束循环

            例子:求1-100之和
                int i = 1;
                int sum = 0;
                do
                    sum += i;
                    i++;
                while(i<=100);
                
                "sum += i;
                  i++;" 这两行代码既不是单语句,也不是复合语句。
                          导致do没有和它匹配while,编译出错!!!
                
                建议:不管do后面有没有语句,先打一对{}!!!

        练习:
              求n!(n是用户输入的一个正整数)
              n! = 1*2*3*...*(n-1)*n
              
              int n;
              scanf("%d",&n);
              
              int i = 1;//变量累加
              int s = 1;//保存n!
              
              s =s*i ;//s = 1*1
              i++ ; // i = 2
              
              s = s*i; // s = 1*2
              i++;// i = 3
              .....
              重复语句
              
              do
              {
                 s = s*i;
                 i++;
              }
              while(i<=n);
              
              c语言代码;
                        int n;
                        scanf("%d",&n);
                        int i = 1;//变量累加
                        int s = 1;//保存n!
                        do
                       {
                         s = s*i;
                         i++;
                       }
                       while(i<=n);
                       printf("%d",s);
                      

4.for循环

        语法:
             for(表达式1;表达式2;表达式3)
                  循环体语句;
        执行顺序:先执行表达式1,然后再判断表达式2的值,如果为非0,则执行循环体语句,然后再跳到上面执行
                  再执行表达式3;
                  然后再判断表达式2的值;
                  ....
                  直到表达式2的值为0,结束循环
                  
            表达式1;表达式2;表达式3:
                  任意表达式都可以
                  并且“表达式1;表达式2;表达式3”都可以省略,但是两个;
                  是不能省略的!!!!
                  如果表达式2省略,则表示for循环的执行条件永远为真。
                  for(表达式1;;表达式3)
                    循环体语句;
                  ====》
                  for(表达式1;1;表达式3)
                     循环体语句;
                    
                例子:求1~100
                     int sum = 0;
                     int i;
                     for(i=1;i<=100;i++);// i=101
                      sum = sum +i;//sum = 0+101
                     printf("%d\n",sum);//101
                    
                     没有语法问题!!!
                               for循环中的“循环体语句”如果没有{},那么for语句它只能管到一个;!!!!
                               so:
                                   不管这个for后面有没有语句,先打一对{}
                                   for(;;)
                                   {
                                    
                                   }
                    
            练习:
                  1.打印所有的“水仙花数”(100-999)
                     水仙花数: 是一个三位数,并且这个三位数的个位,十位,百位上的数字的
                                立方和等于其本身。
                                
                                如:
                                   149 != 1*1*1 +4*4*4 +9*9*9
                                   
                                 思路;
                                      x为一个三位数
                                      a,b,c分别为x的个位,十位,百位
                                      
                                      x = 100
                                      a = x%10
                                      b = x/10%10
                                      c = x/100
                                      if(a*a*a+b*b*b+c*c*c)
                                      {
                                         printf x
                                      }
                                      
                                      x++
                                       
                                      a = x%10
                                      b = x/10%10
                                      c = x/100
                                      if(a*a*a+b*b*b+c*c*c==x)
                                      {
                                         printf x
                                      }
                                      .....
                                   
                    c语言代码:
                                int x,a,b,c;
                                for(x=100;x<1000;x++)
                                {
                                  a = x%10;
                                  b = x/10%10;
                                  c = x/100;
                                  if(a*a*a + b*b*b + c*c*c ==x)
                                  {
                                     printf("%d\n",x);
                                  }
                                }
                                153,370,371,407
                                
                  2.判断一个整数是否为质数
                     质数:除了1和它本身之外,没有其他的因数,称之为质数
                    
                    伪代码;
                            i =>[2,x-1]
                            scanf x
                            i= 2
                            x%i == 0?
                            
                            i++                            
                            x%i == 0?
                            
                            i++                            
                            x%i == 0?
                        
                        int i,x;
                        scanf("%d";&x);
                        int flag = 0; // 0 -是质数
                                      // 1 -不是质数
                        for(i=2;i<x;i++)
                        {
                           if(x%i==0)
                           {
                             flag =1;
                             break;
                           }
                           
                        }
                        if(flag==0)
                        {
                           printf("shi");
                        }
                        else
                        {
                          printf("bushi");
                        }
                    
                  

5.break 和 continue

    break:
        break 语句只能用在switch语句和循环体语句(while/for...)中,
                (1)break用在switch中,用来跳出它所属的switch语句
                (2)break用在循环体中,用来跳出它所属的那一个循环的。
        一句话 break“跳出”
        switch或循环体,是不是一定要用到break?
            不一定,看您的心情!!!

    continue:
         continue只能用在循环体中(while/for...)中,
         表示结束本次循环,继续下一次循环!!!1
        
         例子:
               输出如下数组元素值,除了值为5的那一个元素
                int a[10] ={1,2,3,4,5,6,7,8,9,10};
                
                int i;
                for(i=0;i<10;i++)
                {
                   if(a[i]==5) //i == 4
                   {
                      continue;
                   }
                   printf("%d\n",a[i]);
                }
                    
        练习:
            1. 求1000以内所有的完数
                完数:是指除了本身以外所有的因子之和等于其本身
                如:
                    6:1 2 3
                    6 == 1+2+3
                    分析:
                          1~1000
                          满足:它的因子之和(除去本身)等于它本身(1~x/2)
                          2:
                              1 !=2
                          3: 1 !=3
                          ...
                          x= 1
                              if x所有的因子之和 == x
                                   printf x
                               x++
                          x = 2
                               if x所有因子之和 == x
                                   printf x
                               x++
                               
                            =》
                                int x,i,sum;
                               for(x=2;x<1000;x++)//2~1000 的数
                               {
                                   sum = 0;
                                   for(i=1;i<=x/2;i++) //i:因子 范围[1,x/2]
                                   {
                                       if(x%i==0)
                                       {
                                          sum += i;//sum = sum +i
                                       }
                                   }
                                   if(sum==x)
                                   {
                                      printf("%d\n",x);
                                   }
                               }
            
            2.求两个整数m,n 最大公约数,最小公倍数(m,n是从键盘输入的数字)
                 最小公倍数 = m*n/最大公约数
                
                 最大公约数:
                             m %l ==0
                             n %l ==0
                             l是m,n的一个公约数
                            
                             设g是为m,n的最大公约数。
                             g=>[1,min(m,n)]
                             满足:m%g==0 && n%g==0
                             从(m,n)中最小的那一个数开始找
                                x = min(m,n);
                                   if x是不是m,n 的一个公约数
                                      则x就是最大公约数
                                
                                x--
                                ....
                                
                            for(x=min(m,n);x>0;x--)
                            {
                               if(m%x==0&&n%x==0)
                               {
                                 x就是最大公约数
                                 break;
                               }
                            }

回顾:
       1.goto .....if...
            goto 无条件跳转指令
   
       2.while 语句
            while (表达式)
                   循环体语句;
    
       3.do....while
            do
            {
                循环体语句;
            }            
            while(表达式);
        
        4.for 语句
            for(表达式1;表达式2;表达式3)            
               循环体语句;
            执行顺序:
        
        5.break 和 contiune
        


    
练习:
            1. 请大家输入自己的生日(y-m-d),求自己在这个世界上浪费了多少天的公粮!!!
                1.你出生的那一天到那一年的年末还有多少天
                   switch(m)
                   {
                      case 1:
                              d1 += 31;
                      case 2:
                              if(y是闰年)
                                  d1 += 29;
                               else
                                  d1  +=28;
                      case 3:
                          .....
                                   
                   }
                  d1= d1 -d;
                  
                2.你出生的第二年年初---2022年年末一共多少天
                for(i=y+1;i<year-1;i++)
                {
                   if(i是不是闰年)
                       d2 +=366;
                    else
                       d2 +=365;
                }
                3.2023已经过了多少天
            2.求Sn = a + aa +aaa +...+....(n个a)
              其中,n,a都是由用户输入
              a =>[0,9]
              
              如:
                  n = 5, a=2
                 Sn = 2+22+222+2222+22222
                
                求和:
                       求第ai项
                       累加
                       sum + ai ->sum
                       
                例子:a = 2;
                      n = 5;
                      ai = 0;
                      Sn = 2 + 22+222+2222+22222;
                      
                      i = 0
                      ai = ai*10+a
                      sum+=ai;
                      
                      i = 1
                      ai = ai*10+a;
                      sum +=ai;
                      
                     for(i=0;i<n;i++)
                     {
                         ai = ai*10+a;
                         sum += ai;
                     }
                       
                                

            3.求10000000!末尾有多好个0    
               只要有一对2*5 末尾就会产生一个0
               
               将1*2*3*.....*10000000进行质因数分解
               只需要求分解质因数之和5的个数即可
               
               int count =0; //记录末尾的0的个数
               for(x=5;x<10000000;x+=5)
               {
                  int i = x;
                  while(i%5==0)
                  {
                      count++;
                      i = i/5;
                  }
               }

            4.1024的655次方最后三位数是多少?
              p = 1;
              for(n = 1;n<=655;n++)
              {
                  p= p*1024;
                  p = p%1000;
              }

 5,下面程序的功能是把316表示为两个加数的和,使两个加数分别能被13和11整除,请选择填空

(C)

#include<stido.h>

main()

{

int i=0,j,k;

do{i++;k=316-13*i;}while(__);

j=k/11;

printf("316=13*%d+11*%d",i,j);

}
          
A,k%11==0                 B,k/11

C,k%11                        D,k/11==0

6,设j和i都是int型,则以下for循环语句(B)

for(j=0,k=-1;k=1;j++,k++)

printf("****\n");

A,循环体一次也不执行

B,是无限循环

C,循环结束的条件不合法

D,循环体只执行一次

7有以下程序段

int n=0,p;

do

{

scanf("%d",&p);

n++;

}while(p!=12345&&n<3);

此处do-while循环结束的条件为?

(p的值等于12345或者n的值大于等于3)

8,以下叙述正确的是?(C)

A,用do-while构成循环时,只有在while后的表达式为非0时结束循环

B,do-while语句构成的循环不能用其他语句构成的循环来代替

C,用do-while构成循环时,只有在while后的表达式为零时结束循环

D,do-while语句构成的循环只能用break语句推出

9,以下程序的输出结果是?(10)

int k,j,s;

for(k=2;k<6;k++,k++)

{

s=1;

for(j=k;j<6;j++)

s+=j;

}

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

10,以下程序段中,能够正确执行循环的是(B)

A,static int a;while(a)

B,int s=6;do s-=2;while(s);

C,for(i=1;i>10;i++)

D,int s=6;m:if(s<100)   exit(0);  else  s-=2;  goto  m;

11,以下程序中,while循环的循环次数是(死循环,不确定次数)

main()

{

int i=0;

while(i<10)

{

if(i<1)   continue;

if(i==5) break;

i++;

}

}

12,以下程序段的输出结果是?(1  -2)

int x=3;

do

{

printf("%3d",x-=2);

}while(!(--x));

13,下面程序的运行结果是?(0)

#include <stido.h>

main()

{

int y=10;

do{y--;}while(--y);

printf("%d\n",y--);

}

14,下面程序段的输出结果是?  (11)

int i=0,sum=1;

do

{

sum+=i++;

}while(i<5);

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

15,有以下程序段:

s=1.0;

for(k=1;k<=n;k++)

s=s+1.0/(k*(k+1));

printf("%f\n",s);

请填空,使下面的程序段的功能完全与之等同,

s=0.0;

d=1.0;

k=0;

do

{

s+=d;

____;

d=(1.0)/(k*(k+1));

}while(____);

printf("%f\n",s);

(k++            k<=n)

16,下列程序的功能是输入一个整数,判断其是否为素数,如果为素数输出1,否则输出0,请填空

main()

{

int i,x,y=1;

scanf("%d",&x);

for(i=2;i<___;i++)

{

if(___){y=0;break;}

}

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

}

(x/2    x%i==0)

17,执行以下程序后的输出结果是?(5,4,6)

{

int a,b,c,d,i,j,k;

a=10;b=c=d=5;i=j=k=0;

for(;a>b;++b)

i++;

while(a>++c)

j++;

do

k++;

while(a>d++);

printf("%d,%d,%d",i,j,k);

}

18,如果一次输入字符AB,在以下while语句执行后ch的值是?(0)

while(ch=getchar()=='A');

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/15981.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GB28181协议中常用SDP信息的含义

u字段&#xff1a;u行应填写视音频文件的URI。该URI取值有两种方式&#xff1a;简捷方式和普通方式。简捷方式直接采用产生该历史媒体的媒体源&#xff08;如某个摄像头&#xff09;的设备ID&#xff08;应符合6.1.2的规定&#xff09;以及相关参数&#xff08;如回放类型、下载…

Three.js——二维平面、二维圆、自定义二维图形、立方体、球体、圆柱体、圆环、扭结、多面体、文字

个人简介 &#x1f440;个人主页&#xff1a; 前端杂货铺 ⚡开源项目&#xff1a; rich-vue3 &#xff08;基于 Vue3 TS Pinia Element Plus Spring全家桶 MySQL&#xff09; &#x1f64b;‍♂️学习方向&#xff1a; 主攻前端方向&#xff0c;正逐渐往全干发展 &#x1…

在Mac电脑下怎么部署QAnything?

在Mac电脑下部署QAnything&#xff0c;可以选择使用纯Python环境进行部署&#xff0c;这种方式不依赖GPU&#xff0c;适合在Mac等笔记本电脑上运行。以下是基于QAnything的纯Python环境安装教程的步骤[18]&#xff1a; 安装要求 Python 3.10&#xff08;建议使用Anaconda3来管…

RabbitMQ-默认读、写方式介绍

1、RabbitMQ简介 rabbitmq是一个开源的消息中间件&#xff0c;主要有以下用途&#xff0c;分别是&#xff1a; 应用解耦&#xff1a;通过使用RabbitMQ&#xff0c;不同的应用程序之间可以通过消息进行通信&#xff0c;从而降低应用程序之间的直接依赖性&#xff0c;提高系统的…

功率电感的设计步骤

文章目录 1&#xff1a;高导磁气隙&#xff08;铁氧体&#xff09;1.1设计原理1.2 设计步骤 2 铁粉芯2.1&#xff1a;设计原理2.2&#xff1a;设计步骤 TI电感设计 学习视频原链接 截图 1 截图1 截图1 截图 2 截图2 截图2 1&#xff1a;高导磁气隙&#xff08;铁氧体&#…

基于机器学习判断面部微表情发现哪些人更容易诊有帕金森病

1. 概述 帕金森病&#xff08;Parkinson’s disease&#xff0c;PD&#xff09;是一种慢性、进展性的神经退行性疾病&#xff0c;主要影响运动系统。该病症以大脑中黑质致密部多巴胺能神经元的逐渐丧失为特征&#xff0c;导致多巴胺&#xff08;一种重要的神经递质&#xff09…

【Qt】深入探索Qt窗口与对话框:从创建到管理:QDockWidget(浮动窗口)、QDialog(对话框)

文章目录 前言&#xff1a;1. 浮动窗口2. 对话框介绍2.1. 示例&#xff1a;主窗口中&#xff0c;通过点击按钮&#xff0c;弹出一个新的对话框。2.2. 创建自定义对话框2.2.1. 纯代码的方式2.2.2. 图形化界面的方式 3. 模态对话框 和 非模态对话框4. Qt 内置对话框4.1. 消息对话…

Nginx R31 doc-12-NGINX SSL Termination 安全加密

前言 大家好&#xff0c;我是老马。很高兴遇到你。 我们为 java 开发者实现了 java 版本的 nginx https://github.com/houbb/nginx4j 如果你想知道 servlet 如何处理的&#xff0c;可以参考我的另一个项目&#xff1a; 手写从零实现简易版 tomcat minicat nginx 系列 从零手…

Git Submodules:深入理解与应用

在大型项目或跨多个独立项目的开发中&#xff0c;代码管理往往变得复杂。Git Submodules 是 Git 提供的一个强大功能&#xff0c;允许你在一个 Git 仓库&#xff08;称为父仓库&#xff09;中嵌套另一个 Git 仓库&#xff08;称为子模块仓库&#xff09;。本文将详细介绍 Git S…

Linux/Windows下如何同时运行服务端和客户端

假设服务端和客户端程序分别为server.c和client.c注意顺序&#xff01; 先运行服务端&#xff0c;后运行客户端先结束客户端&#xff0c;后结束客户端 编译 gcc -o server server.cgcc -o server client.c运行 # 先运行服务器 ./server# 再运行客户端 ./client./表示当前目录…

Hybrid Block Storage for Efficient Cloud Volume Service——论文泛读

TOS 2023 Paper 论文阅读笔记整理 问题 传统桌面和服务器应用程序向云的迁移给底层云存储带来了高性能、高可靠性和低成本的挑战。由于这些传统应用程序的I/O模式和一致性要求&#xff0c;与采用特定编程模型和范式&#xff08;如MapReduce[22]和RDD[52]&#xff09;的云原生…

香橙派AIpro(OrangePi AIPro)开发板初测评

开发板简介 最近&#xff0c;我拿到手一款Orange Pi AI Pro 开发板&#xff0c;它是香橙派联合华为精心打造的高性能AI 开发板&#xff0c;最早发布于2023年12月&#xff0c;其搭载了昇腾AI 处理器&#xff0c;可提供8TOPS INT8 的计算能力&#xff0c;内存提供了8GB 和16GB两…

基于jeecgboot-vue3的Flowable新建流程定义(一)

因为这个项目license问题无法开源&#xff0c;更多技术支持与服务请加入我的知识星球。 1、vue3版本因为流程分类是动态的&#xff0c;不再固定了&#xff0c;所以新建的时候需要选择建立哪种流程类型的流程 代码如下&#xff1a; <!-- 选择模型的流程类型对话框 -->&…

算法提高之一个简单的整数问题2

算法提高之一个简单的整数问题2 核心思想&#xff1a;线段树 懒标记&#xff1a;add存每个子节点需要加的数pushdown&#xff1a;将懒标记向下存 同时清除本行懒标记 #include <iostream>#include <cstring>#include <algorithm>using namespace std;type…

数据结构(六)图

2024年5月26日一稿(王道P220) 6.1 图的基本概念 6.1.1 图的定义 6.2 图的存储及基本操作 6.2.1邻接矩阵法 6.2.2 邻接表

python web自动化(分布式测试Grid)

Grid介绍 Selenium Grid 是 Selenium 提供的⼀个⼯具&#xff0c;⽤于⽀持在多台计算机上并⾏运⾏测试。 它允许将测试分发到不同的机器和浏览器组合上&#xff0c;同时收集结果。 1.并⾏执⾏测试⽤例&#xff1a;在不同的机器上并⾏执⾏测试⽤例&#xff0c;从⽽加速整个测试过…

Vulhub——adminer

文章目录 一、CVE-2021-21311&#xff08;SSRF&#xff09;二、CVE-2021-43008&#xff08;远程文件读取&#xff09; 一、CVE-2021-21311&#xff08;SSRF&#xff09; Adminer是一个PHP编写的开源数据库管理工具&#xff0c;支持MySQL、MariaDB、PostgreSQL、SQLite、MS SQL…

如何在WRF模型中更好地设置这些海洋物理参数以提高模拟精度?

在WRF&#xff08;Weather Research and Forecasting&#xff09;模型中正确设置海洠物理参数是提高模拟精度的关键&#xff0c;特别是当模拟涉及到海洋和大气的相互作用时。以下是一些提高模拟精度的策略和建议&#xff1a; 1. 理解模拟的地区和目标 在进行参数设置之前&…

基于SpringBoot+Vue的人事管理系统

引言 目前,人事管理的系统大都是CS架构的大型系统,很少有面向机关,事业单位内部的基于BS架构的微型人事系统,因此.开发一个基于BS架构的人事信息管理系统是非常必要的.但是基于BS架构的人事系统对于安全是一个大的考验点.在人事信息系统中,功能需简单清晰,可操作性强,其次安全…

使用paddlepaddle框架构建ViT用于CIFAR10图像分类

使用paddlepaddle框架构建ViT用于CIFAR10图像分类 硬件环境&#xff1a;GPU (1 * NVIDIA T4) 运行时间&#xff1a;一个epoch大概一分钟 import paddle import time import paddle.nn as nn import paddle.nn.functional as F import paddle.vision.transforms as transforms…