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

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

    0.展示PTA总分

    单循环

    嵌套循环

    (7.3和7.8只能做到部分正确,实在是调试不出来

    1.本章学习总结

    1.1 for循环语法

    一般格式

    for(表达式)
    {
          循环语句;
    }
    

    适用条件:循环次数明朗的简单循环。

    1.2 while、do while循环语法

    一般格式

    while(表达式)
    {
          循环语句;
    }
    

    基本意义:当表达式为真,则执行下面的语句;语句执行完之后再判断表达式是否为真,如果为真,再次执行下面的语句;然后再判断表达式是否为真……一直循环下去,直到表达式为假,跳出循环。

    do
    {
          循环语句;
    }while(表达式);//注意不要忘记此处的“;”号
    

    基本意义:先执行一次循环体,然后再判别表达式。当表达式为真时,返回重新执行循环体,如此反复,直到表达式为假为止,此时循环结束。

    适用条件:两者相似,用于循环次数不明确,需要通过其他条件控制循环。

    注意:while 循环体内部不一定会执行,当表达式一开始就为假的时候它就不会执行。但 do…while 不管表达式开始为真还是为假,循环体内部都会先执行一次。

    1.3 跳出循环相关语句breakcontinue

    • break:当 break 关键字用于 while、for 循环时,会终止循环而执行整个循环语句后面的代码。break 关键字通常和 if 语句一起使用,即满足条件时便跳出循环。
      :使用 while 循环计算1加到100的值:
    #include <stdio.h>
    int main()
    {
        int i = 1, sum = 0;
        while (1)//循环条件为死循环
        {  
            sum += i;
            i++;
            if (i > 100) break;//用break跳出死循环
        }
        printf("%d
    ", sum);
        return 0;
    }
    
    • continue:跳过循环体中剩余的语句而强制进入下一次循环。continue语句只用在 while、for 循环中,常与 if 条件语句一起使用,判断条件是否成立。
      :输入一串数字,不输出其中的4和5。
    #include <stdio.h>
    int main() 
    {
        char c = 0;
        while (c != '
    ') //回车键结束循环
        {  
            c = getchar();
            if (c == '4' || c == '5') //输入的是数字键4或5
            {  
                continue;  //跳过当次循环,进入下次循环
            }
            putchar(c);
        }
        return 0;
    }
    

    1.4 循环嵌套

    含义:顾名思义,在循环语句中在加入循环语句,即使用两种及以上循环结构,故如如for循环中再使用for循环。
    :求出 1!+2!+3!+…+n!的和。

    # include <stdio.h>
    int main(void)
    {
        int n = 0;  //存储1!+2!+3!+…+n!中n的值
        int i = 0, j = 0;  //循环变量
        int m = 1;  //用于计算每个数的阶乘
        unsigned long sum = 0;  /*阶乘的值往往很大, 定义成long型。虽然如此, 下面输入的n的值也不能太大, 不然long也放不下*/
        printf("请输入n的值:");
        scanf("%d", &n);
        for (i = 1; i <= n; ++i)
        {
            for (j = 1; j <= i; ++j)  //求一个数的阶乘
            {
                m = m * j;
            }
            sum = sum + m;  //求完之后就立即把它加到sum中
            m = 1;
        }
        printf("sum = %ld
    ", sum);
        return 0;
    }
    

    学习体会

    1. 循环结构相比之前的顺序和分支结构难度上升不少,需要的逻辑思维能力更强,再加上循环嵌套使难度再上升一个档次。
    2. PTA的题目存在很多问题,也有时会遇到没思路的情况,会借鉴同学的代码进行阅读。
    3. 要学会灵活利用三种循环结构来使问题更简单的解决。
    4. 积极阅读别的同学的更简介明了的代码进行学习。

    2.编程技巧总结

    3.PTA实验作业

    3.1 数列求和问题

    题目

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

    思路:题目中比较明显的表面了循环次数n,所以使用for循环,第二位数正好是第一位数的十倍后加上第一位数,所以用此作为循环语句。

    3.1.2 代码截图

    3.1.3 PTA提交列表及说明

    • 第一次多种错误是因为理解错了题意,以为第二位数是a的平方,第三位数是a的立方
    • 第二次部分错误是同第一次时的错误,只因为修改碰巧过了一个测试点

    3.2 图形打印问题

    题目

    3.2.1 数据处理

    n:为输入数字
    ch:为输入字母
    m:判断外循环次数 //因为输入数字为奇数,所以 m=(n+1)/2,即可得到外循环次数
    i:用于外for循环中,定义i=0;
    j:用于输出菱形上半部分内for循环中,定义j=0;
    k:用于输出菱形下半部分的内for循环中,定义k=1;

    3.2.2 代码截图


    3.2.3 PTA提交列表及说明

    1. 之前几次编译错误中 应该为ch=ch-2,忽略了最后一次循环中ch的变化
    2. 输出值时第二次应该输出ch++,不然无法把ch的正确值输出
    3. 之后部分错误中发现输出格式错误因为菱形下半部分还想着用m来控制循环而导致输出错误,后面新定义了一个k值,然后用k值可以更方便的表示循环次数,利用新定义来简化编程过程(其实用m来控制也可以,但是会比较复杂且逻辑过多,用新定义可以减少思考)

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

    题目

    3.3.1 单步调试截图

    • 设置断点
    • 设置printf调试
    • 进行单步调试

    3.3.2 代码截图


    3.3.3 PTA提交列表及说明

    1. 最开始那次部分错误是因为在每个循环中都设置了输出,导致如下结果
    2. 之后的几次部分错误真的搞不懂
      在第一个测试点中
      题目展示输出样式
      我的代码输出样式
      我反复检查了空格和格式,是一模一样的但是测试过不去,实在不知道原因。
  • 相关阅读:
    IOS8定位
    ios通讯录基本操作2014-12月版
    ios悬浮按钮的实现
    MartinLiPageScrollView广告栏实现
    ios分享(友盟分享)
    vue2.0路由-适合刚接触新手简单理解
    git链接GitHub命令及基本操作
    Node
    JS数组sort()排序
    原生JS获取CSS样式并修改
  • 原文地址:https://www.cnblogs.com/miao-witch/p/13987048.html
Copyright © 2011-2022 走看看