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