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

原文地址:https://www.cnblogs.com/jy00/p/14020110.html