zoukankan      html  css  js  c++  java
  • 循环总结

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

    0.展示PTA总分


    1.本章学习总结

    1.1for循环语句

    c语言的基本形式为:
    for(表达式1;表达式2;表达式3)
    {
    循环语句;
    }

    for(int i=1;i<=n;i++)
    {
    sum+=i;//1~n求和;
    }
    

    for循环的表达式1初始条件,表达式2是循环条件,表达式3是运行指令,中间用分号隔开。
    先进行表达式1,再判断是否满足条件,满足就进入循环,循环结束后再进表达式3,再次循环。
    表达式1和表达式3可省略。

    • 一般用于已知循环次数的循环,不要忘记大括号

    1.2while,do-while循环语句

    c语言的基本形式为:
    while(表达式)
    {
    循环语句;
    }

    int i=1;
    while(i<=n)//循环条件
    {
    sum+=i;
    i++;
    }
    

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

    
    #include <stdio.h>
    #include <math.h>
    
    int main (){
        double emp=0.0,afterSum=0.0,beforeSum=0.0;
        int flag=1,den=1;
        scanf("%lf",&emp);
    
        do{ //如果用while,afterSum的值会多算一次
            beforeSum = f*(1.0/x);  //beforeSum为当前分数值
            afterSum+=beforeSum;   //最后值
            den+=3;   //分母
            flag*=-1;  //符号
        }while( fabs(beforeSum) > emp); //绝对值
    
        printf("sum = %.6f",afterSum);
        return 0;
    }
    

    while训话的表达式是循环条件,先判断是否满足条件,若满足条件就进入循环。

    • do-while先做一次,再判断,注意最后的分号

    1.3跳出循环相关语句breakcontinue

    break:跳出所在循环,只能跳出一个循环。
    continue:跳出此次循环,即后面的语句不执行,进行下次循环。
    两者均可以用在循环语句中。break在switch语句中用处也很大。

    1.4循环嵌套

    外循环一次,内循环一圈

    #include<stdio.h>//打印倒三角字符
    int main()
    {
        int n;
        scanf("%d",& n);
        char ch = 'A';
        if (n < 7) {//判断合理性
            while (n != 0)
            {
                for (int i = 0; i < n; i++) {
                    printf("%c ", ch);
                    ch++;
                }//循环结束,进行下面语句
                printf("
    ");
                n--;//外循环控制
            }
        }
        else
            printf("输入不正确");
            return 0;
    }
    

    学习体会

    把握好循环控制条件,因为之前有过很多次死循环,,,
    对于嵌套循环来说,注意用printf调试,找到错误,或者break调试一下。


    2.编程技巧

    2.1判断素数

    循环只需要到sqrt(x)即可,因为任意一个数可以分解成两个数相乘的形式,所以只需要到那个数的平方根即可。

    int prime( int p )
    {
        int k=sqrt(p);//避免多次调用
        if(p<=1){
            return 0;
        }else if(p==2){
            return 1;
        }else{
            for(int i=2;i<k;i++){//循环次数减少,效率提高
                if(p%i==0){
                    return 0;
                }
            }
            return 1;
        }
    }
    

    2.2调用库函数

    调用库函数时,如果改值将会重复使用,则应将库函数所得的值保存,避免多次调用影响效率。例如2.1的例题代码

    2.3解决问题的类型有

    1.求一组数的和,最大值,最小值,平均值。eg.7-3 求最大值
    2.画各种图形,如矩形,菱形,三角形。eg.7-5 打印菱形图形
    3.求两个数的最小公倍数
    4,求一个数的位数,逆序输出等


    3.PTA实验作业

    3.1数列求和问题

    3.1.1伪代码及代码实现

    for i=1 to n       
         sum=sum+1.0*t*i/(2*i-1);//找到通式※
    end for    
    

    3.1.2提交列表

    sum忘记初始化。。。。。。。。

    3.1.3提交列表及说明

    • 主要注意寻找到各项规律,即中学中的数列问题,转化为代码,for循环控制次数依次累加或累乘。
    • 与此题类似的数列求和问题,都是先找到通式

    3.2图形打印问题

    3.2.1数据处理

    打印图形要注意行和字符及空格的关系
    char ch;//打印的字符
    int n;//总行数
    观察空格与字符得到

    行数 空格数 字符 空格 字符
    第一行 2:5/2-1+1 ch 0
    第二行 1:5/2-2+1 ch+1 1:2*2-3 ch+1
    第三行 0:5/2-3+1 ch+2 3:2*3-3 ch+2
    第四行 1:5/2-2+1 ch+1 1:2*2-3 ch+1
    第五行 2:5/2-1+1 ch 0

    3.2.2代码截图

    第一次写的时候以为要强制转换,在输出的时候,后来发现不需要

    3.2.3提交列表及说明

    • 当时写的时候,没有注意下三角,再怎样转换的时候卡住了,后来发现其实一样,重复一下,改变ch的值即可。
    • 空格与字符位置把握好,可以通过列表格找到循环条件,思路更清晰

    3.3 printf调试如何检查错误

    3.3.1单步调试截图 7-2 特殊a串数列求和

    在恰当的循环里面写一个printf,观察每次sum的变化,可以看出具体哪一步出错

    3.3.2代码截图

    3.3.3提交及说明

    一下就AK了。。。,关键还是通式

  • 相关阅读:
    c#子类序列化与父类序列化(Serializable)的区别
    eclipse中启动项目报内存溢出问题通过修改配置解决
    java 代码的良好习惯
    s:iterator 标签使用错误记录
    html5 required属性的注意事项
    赋值文件夹名称为日期的doc命令
    cmd命令中截取日期字符
    s:if 标签 字符串比较 正确用法和错误用法
    Resource interpreted as Stylesheet but transferred with MIME type text/plain
    xmind指定32位jdk解决在64位系统上不能启动的问题
  • 原文地址:https://www.cnblogs.com/ww-yy/p/14004282.html
Copyright © 2011-2022 走看看