zoukankan      html  css  js  c++  java
  • c博客作业02--循环结构

    这个作业属于哪个班级 C语言--网络2011/2012
    这个作业的地址 C博客作业02--循环结构
    这个作业的目标 学习循环结构内容,包括for循环、while循环、循环嵌套
    姓名 李雷默

    0.展示PTA总分


    1.本章学习总结

    1.1 for循环语法

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

    or

    for (循环变量赋初值; 循环条件; 循环变量增值)
    {
        语句;
    }
    
    • 在表达式1、表达式2和表达式3之间是用分号;隔开的。

    • for(表达式1;表达式2;表达式3)的后面不能加分号。

    • 从第二个语句中可以看出,“表达式1”只执行一次,循环是在“表达式2:循环条件”“表达式3:循环变量增值”和“内嵌语句”之间进行的。

    1.2 while、do while循环语法

    while:

    while (表达式)
    {
            语句;
    }
    
    • 当表达式为真,则执行下面的语句;语句执行完之后再判断表达式是否为真,如果为真,再次执行下面的语句,直到表达式为假,跳出循环。

    • 循环条件成立时的话,while 循环会一直执行下去,成为死循环。

    • 循环条件不成立的话,while 循环就一次也不会执行。

    do while:

    do
    {
        语句;
    }
    while (表达式);
    
    • do-while循环与while循环的不同在于:它会先执行“语句”,然后再判断表达式是否为真,如果为真则继续循环;如果为假,则终止循环。因此,do-while 循环至少要执行一次“语句”。

    1.3 跳出循环相关语句breakcontinue

    break:

    • break语句不仅可以跳出“循环体”,还可以跳出switch。但是break语句不能用于循环语句和switch语句之外的任何其他语句中。

    • break语句只能跳出一层循环。当有多层循环嵌套的时候,break只能跳出最里面的那一层循环,无法一次跳出所有循环(但是return可以)。

    continue:

    • continue的作用为结束本次循环,即跳过循环体中下面尚未执行的语句,然后进行下一次是否执行循环的判定。

    区别:

    • continue语句和break语句的区别是:continue 语句只结束本次循环,而不是终止整个循环。break 语句则是结束整个循环过程,不再判断执行循环的条件是否成立。而且,continue 只能在循环语句中使用,即只能在 for、while 和 do…while 中使用,除此之外continue不能在任何语句中使用(包括switch语句)。

    1.4 循环嵌套

    while和for循环实例:

    while(条件表达式)
    {
          for(循环变量赋初值; 循环条件; 循环变量增值)
          {
                循环体;
          }
    }
    

    要点:

    • if-else、while、do-while、for可以相互嵌套,就是一条语句里面还有另一条语句,例如 for 里面还有 for,while 里面还有 while,或者 for 里面有 while,while 里面有 if-else。

    • 外层for每次循环时,都必须等待内层for循环完毕才能进行下次循环。虽然i为变量,但是对于内层for来说,每次循环时它的值都是固定的。

    学习体会:

    这一周通过学习循环结构的知识,我对c语言的了解进一步加深,能读懂更多的的代码,也能够运用循环的知识。

    但是对于本次的大作业,出现了许多平时没用过的代码,加上函数的学习还一知半解,我一时无从下手。

    幸运的是,我在这几周的学习中,逐渐培养了计算机思维,解题的思路也更加清晰,我相信只要我巩固好基础知识点,完成这次的挑战不是问题。

    2.编程技巧总结

    数列求和问题

    7-2 特殊a串数列求和

    #include <stdio.h>
    int main()
    {
        int a, n;
        double item = 0;
        double sum = 0;
        scanf("%d %d", &a, &n);
        for (int i = 1; i <= n; i++) {
            item = item * 10 + a;
            sum += item;
        }
    
        printf("sum = %.lf
    ", sum);
        return 0;
    }
    
    • 数列求和时要注意变量的类型,否则再运算时会出现字节溢出的现象,好几次调试失败都是因为没有注意变量类型。

    • 运算时输出变量要记得定义初值,累加sum初值为0,累乘sum初值为1。

    • 注意sum += item 等价为 sum = sum + item。(题目要求s,这里方便阅读用sum)

    字符如何转数字、数字逆序问题

    • 字符如何转数字
    m='1'-'0';//将字符'1'变数字1
    
    • 数字逆序问题
    while(num>0)
    {
          item=num%10;
    
          sum=sum*10+item;
    
          num=num/10;
    }
    

    图形打印问题

    7-5 打印菱形图形 :

    #include<stdio.h>
    #include<math.h> 
    int main()
    {
        int i,j;
      for(i=0;i<7;i++)
      {
          if(i<=3)
          {
              for(j=0;j<5-i;j++)
                printf(" ");
              for(j=0;j<1+2*i;j++)
                printf("*");
          }
          if(i>3)
          {
              for(j=0;j<5-(6-i);j++)
                printf(" ");
              for(j=0;j<1+2*(6-i);j++)
                printf("*");
          }
          printf("
    ");
      }
        return 0;
    }
    

    根据行数判断输出“ ”或者“*”并用for循环一行一行输出,打印出菱形。

    四则运算问题

    int a = rand() %100 +1
    

    产生1`100的一个随机整数

    switch(a)
    {
          case 1: op='+';
          case 2: op='-';
          case 2: op='*';
          case 2: op='/';
     }
    

    选择不同的运算符,如果要随机产生运算符可以用rand产生1`4的随机整数来选择运算符(我用这样的思路去做大作业,但是没有成功)。

    3.PTA实验作业

    3.1 数列求和问题

    3.1.1 流程图或伪代码介绍思路

    通过for循环得到a、aa、aaa的值用item表示,最后用s += item;累加这些数据得到数列求和的结果

    3.1.2 代码截图

    3.1.3 PTA提交列表及说明

    3.2 图形打印问题

    3.2.1 数据处理

    根据行数判断输出“ ”或者“*”并用for循环一行一行输出,打印出菱形。

    3.2.2 代码截图

    3.2.3 PTA提交列表及说明

    3.3 自选一题,介绍printf调试如何检查错误

    3.3.1 单步调试截图

    我在单步调试时输入N为5,然后F11发现进行了5次循环最后输出,证明代码没有问题。

    3.3.2 代码截图

    3.3.3 PTA提交列表及说明

  • 相关阅读:
    Spring Boot学习笔记
    打造高效率的软件测试
    如何将测试结果在jenkins上发布
    如何在docker container中运行web自动化测试
    Jmeter中随机读取测试文件的内容
    如何提高UI自动化测试的质量
    mac系统上添加定时任务
    keypass口令管理实践
    GPG实践
    树的遍历
  • 原文地址:https://www.cnblogs.com/llmnb/p/14017501.html
Copyright © 2011-2022 走看看