这个作业属于哪个班级 | C语言--网络2011/2012 |
---|---|
这个作业的地址 | C博客作业00--循环结构 |
这个作业的目标 | 学习循环结构内容,包括for循环、while循环、循环嵌套 |
姓名 | 王小雨 |
目录 | |
0.展示PTA总分(0----2) | |
1.本章学习总结(2分) | |
1.1 for循环语法 | |
1.2 while、do while循环语法 | |
1.3 跳出循环相关语句break\continue | |
1.4 循环嵌套 | |
学习体会 | |
2 编程技巧总结(2分) | |
3.PTA实验作业(6分) | |
3.1 数列求和问题 | |
3.1.1 流程图或伪代码介绍思路 | |
3.1.2 代码截图 | |
3.1.3 PTA提交列表及说明 | |
3.2 图形打印问题 | |
3.2.1 数据处理 | |
3.2.2 代码截图 | |
3.2.3 PTA提交列表及说明 | |
3.3 自选一题,介绍printf调试如何检查错误 | |
3.3.1 单步调试截图 | |
3.3.2 代码截图 | |
3.3.3 PTA提交列表及说明 | |
评分注意事项。 |
0.展示PTA总分
本章学习总结
1.1 for循环语法
for(表达式1;表达式2;表达式3)
{
执行代码块
}
表达式1:对变量赋值做初始化
表达式2:循环条件 满足执行代码块,不满足结束循环
表达式3:循环体
注意:· for循环中三个表达式可以省略,分号;不能省略
· 表达式2或3如果不做处理,则为死循环
1.2 while、do while循环语法
while(表达式)
{
执行代码块
}
表达式为循环条件,执行代码块为循环体
满足表达式则执行循环体
循环体中如果包括一个以上语句,则必须用{}括起来,形成复合语句
do
{
执行代码块
}while(表达式);
do while的语义:先执行代码块,然后判断是否满足表达式,如果满足则继续循环,不满足则结束循环
因此do while至少会执行一次循环
注意:while括号后必须有分号;
1.3 跳出循环相关语句break/continue
break用于跳出当前循环
注意 · 没有循环结构时,break不能用在单独的if else语句中
· 多层循环中,一个break只能跳出当前循环
continue用于结束当前循环,进入下一次循环
区别:break是跳出当前整个循环,continue是结束本次循环开始下一次循环
1.4 循环嵌套
for语句与for语句形成嵌套,for语句也可与while,do-while语句相互嵌套,构成多重循环
学习体会
从循环开始,代码难度增加不少,十分考验自己的思维逻辑,大多数时候都没有思路,需要先参考别人的代码
2 编程技巧总结
2.1判断素数
if(m==1)// 1不是素数
{
flag=0;//引入flag
}
for(i=2;i<=m/2;i++)// m依次除以从2到m/2的所有数
{
if(m%i==0)// 一旦余数为0则不是素数
{
flag=0;//flag的值改为0
break;
}
}
if(flag=1)
{
printf("yes\n");
}
else
{
printf("no\n");
}
2.2四则运算
case '+':
z=x+y;
break;
case '-':
z=x-y;
break;
case '*':
z=x*y;
break;
case '/':
z=x/y;
break;
2.3转化
字符转数字
a=a-'0'
大写字母转小写
ch=ch-'A'+'a'
小写字母转大写
ch=ch-'a'+'A'
2.4数字逆序
sum=0;
do
{
n = num % 10;//取最后一位数
sum = sum * 10 + n;//组成新的数字
num = num / 10;//去除最后一位
}while(num != 0 );
2.4求交错序列前N项和
代码截图
2.5统计整数位数
思路:取个位,去个位
代码
count=0;//赋初始值
do{
number=number/10;//每次除去一位数
count++;//累计位数
}while(number!=0);
2.6图形打印问题
做法
通过两层循环分别控制行数和每一行的元素
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
...
}
}
3.PTA实验作业
3.1 数列求和问题
3.1.1介绍思路
相当于2+22+222...,利用for循环,count表示整数的位数,先用pow获取数的最高位赋给sum,然后累加
伪代码
定义变量a(a的值),n(n个数),sum(计算并存储每一项的值),s(数列之和);
for (int i=1;i<=n;i++)
{
下一项数表达式;//根据数列中前一项和后一项的关系得到下一个数的值
s等于sum累加求和;
}
end for;
输出s的值;
return 0;//结束程序;
3.1.2代码截图
3.1.3PTA提交列表及说明
忘了开始给s初始化
3.2 图形打印问题
3.2.1数据处理
int a,b,c
a代表行数,是控制最外层的循环;b控制每一行星号前面的空格数;c控制每一行星号的个数
伪代码
for(i=0;i<7;i++)
{
if(i<=3)//前三行
{
for(空格条件)
printf(" ");
for(*条件、关系式)
printf("*");
}
if(i>3)//后三行
{
for(空格条件)
printf(" ");
for(*条件、关系式)
printf("*");
}
printf("\n");
}
3.2.2代码截图
3.2.3PTA提交列表及说明
格式错误是因为没有看清题目要求第一行*前面有五个空格,我还以为是三个
3.3 打印九九口诀表
3.3.1数据处理
int a,b,N
N为题目中给出的,代表要打出11到NN的口诀表;b代表每行号右边的数,它在每行是不变的,所以是外层循环;a代表每行号左边的数,它从1开始递增
3.3.2代码截图
3.3.3PTA提交列表及说明
格式错误是因为题目中要求等号右边数字占4位左对齐,表示为%-4d