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

    0.展示PTA总分


    1.本章学习总结

    1.1 for循环语法

    for 循环:

    for (初始值;循环持续的条件;循环后需要做的执行语句)
    {
    循环体//所要执行的语句
    }

    1.2 while、do while循环语法

    while循环:

    while(循环执行的条件)
    {
    循环体
    }
    //while里的条件很容易误解为跳出循环的条件。

    do while循环:

    do-while 循环
    do
    {
    循环体
    } while (循环执行的条件); //无论是否满足条件,第一个循环体会被执行然后跳出循环。

    1.3 跳出循环相关语句breakcontinue

    循环中需要合理利用break,continue。
    break是跳出这一循环,而continue则是跳过下面的语句,再继续执行这一循环体。
    两者可以合理的利用if控制。

    #include <stdio.h>
    
    int main()
    { 
    	int n = 99;
    	int flag = 1;
            int i;
    	for (i = 1; i <= 99; i++)
    	{
    		if (i == 2)
    		{
    			break;
    		}
    		else if (i == 1) {
    			continue;
    		}
    		flag = 0;
    	}
    		printf("flag = %d
    ", flag);
                    printf("i = %d",i)
    	return 0;
    } 
    
    

    这段代码最后的输出结果为

    则在i=1时,程序跳过了flag=0的语句,重新进入了循环,在i=2的执行语句中用break结束了循环。

    1.4 循环嵌套

    嵌套循环为在一个循环里再使用一个循环的语句,与if的嵌套类似。

    例如这一题
    我们需要打印九行的乘法,每一行从1列逐渐递增到9列,列的个数与行的位数相同。这则需要我们使用嵌套循环来完成打印。

    #include<stdio.h> 
    int main()
    {
        int i, j, n, k;
        scanf("%d", &n);//输入行数
        for (i = 1; i <= n; i++) {//用i来控制行数
            for (j = 1; j <= i; j++) 
                //用j来控制当前行的列数,j<=i则列数不超过所在行的位数
            {
                printf("%d*%d=%d", j, i, j * i);
                if (i * j >= 10) 
                {
                    printf("  "); 
                }
                else printf("   ");
            }
            printf("
    ");
        }
    }
    
    

    嵌套循环中需要注意的是初始化的位置,如果是计算一行数的和,则在小循环结束后应该将初始化,
    则sum=0应放在大循环的开头或者小循环完后。

    学习体会

    2 编程技巧总结

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

    字符转为数字:
    x='a'-'0'//a为数字

    数字逆序:

    int number;
    int sum=0;
    while (x > 0)
    {
        number = x % 10;
        x /= 10;
        sum = sum * 10 + number;
    }//将数字x逆序
    

    字符的转换

    字符小写字母转大写字母:
    ch=ch-'a'+'A'

    字符大写转小写:
    ch=ch-'A'+'a'

    字符往后移位:
    ch = (ch + 1 - 'a') % 26 + 'a'

    四则运算

    switch(1+rand()%4)//利用随机数随机产生1-4的数
    {
       case 1://再根据随机数选择加减乘除
       result += x;
       break;
       case 2:
       result -= x;
       break;
    }
    

    3.PTA实验作业

    3.1 数列求和问题

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

    数列中有两个重要的数 一个sum和一个是每次循环需要加上的数count
    再利用flag来控制每一次是加或者减

    3.1.2 代码截图

    3.1.3 PTA提交列表及说明

    3.2 图形打印问题

    3.2.1 数据处理

    1.输入高度与起始的字符
    2.用坐标的方法建立起该菱形的坐标轴,设k=h/2,则-k~k刚好为h。
    3.先用变量i初始化为-k来控制行,由图形可知最长行的行数等于高度,则用j初始化为-k来控制列数
    4.根据行和列与图形的关系来打印字符

    3.2.2 代码截图

    3.2.3 PTA提交列表及说明


    说明:开始难以想到怎么控制上面的一部分与下面的一部分,可能需要写两个循环,但是由于他的对称可以得到利用坐标的方法更简易的能打印出图形。

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

    3.3.1 单步调试截图

    利用每次循环后打印出的数的值与sum的值来检查错误。

    第一次打印出来的值正确
    再继续执行,直到检查出相对应的错误项来分析错误的原因

    则其原因为while语句过早结束循环,也就是精确值不够所以得出错误的结果,则需要更改精确值

    3.3.2 代码截图

    3.3.3 PTA提交列表及说明

    说明:sample并不对,所以可以先用sample来检查代码的错误,
    并侧重检查每次出来的值,可能为小数未处理好等等。
    经过调试,分析出最后一次的count小数点后第三位较小,则此时的原因应该是还需要加上更多的count,则需要调整精度,让while语句执行更多的循环。

  • 相关阅读:
    【codecombat】 试玩全攻略 第二章 边远地区的森林 一步错
    【codecombat】 试玩全攻略 第十八关 最后的kithman族
    【codecombat】 试玩全攻略 第二章 边远地区的森林 woodlang cubbies
    【codecombat】 试玩全攻略 第二章 边远地区的森林 羊肠小道
    【codecombat】 试玩全攻略 第十七关 混乱的梦境
    【codecombat】 试玩全攻略 第二章 边远地区的森林 林中的死亡回避
    【codecombat】 试玩全攻略 特别关:kithguard斗殴
    【codecombat】 试玩全攻略 第二章 边远地区的森林 森林保卫战
    【codecombat】 试玩全攻略 第二章 边远地区的森林
    实验3 类和对象||
  • 原文地址:https://www.cnblogs.com/jy00/p/14020110.html
Copyright © 2011-2022 走看看