• 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语句执行更多的循环。

  • 相关阅读:
    【Jdbc/Metadata】借助Metadata获得表字段的设定细节
    MASTER: Multiaspect nonlocal network for scene text recognition
    Centos8 中如何使用journalctl分析日志
    如何调试SSH连接
    如何将lvm卷移动到另一台服务器中
    CentOS8中恢复根目录为默认权限
    lightdb/postgresql中序列的使用以及oracle兼容计划
    PostgreSQL 15 Beta 1 发布
    PostgreSQL 14.3、13.7、12.11、11.16 和 10.21 发布
    MySQL/mariadb到LightDB开发迁移指南
  • 原文地址:https://www.cnblogs.com/jy00/p/14020110.html
Copyright © 2020-2023  润新知