循环结构
0.展示PTA总分
1.本章学习总结
1.本章学习总结
这两周主要学习了循环和循环的嵌套,通过这些学习,我们又可以做很多题目
1.2 本章学习体会
学习感受:c语言的学习需要持之以恒的精神和兴趣 缺一不可。
代码量 500行。
2.PTA实验作业
2.1 7-1 求n以内最大的k个素数以及它们的和 (20 分)
2.1.1 伪代码
for(i=1;i<=a;i++) 通过第一层循环使各个素数依次判断;
for(j=2;j<n;j++)
// 判断素数
{
flag=1;
if(n%j==0)
{
flag=0;
break;
}
}
if(flag1)
{
sum+=n;
num++;
if(k1)
{
printf("%d=%d",n,n);
goto zero;
}
if(num<k)
{
if(num1)
printf("%d",n);
else if(num>1&&num<k)
printf("+%d",n);
}
if(numk)
goto out;
通过第二个循环嵌套来判断是否是素数
若是素数,则进入后面的语句。
2.1.2 代码截图
2.1.4 PTA提交列表及说明
部分正确:没有考虑到只有一个数和只有一个句号的情况。补充考虑后则正确。
答案错误:后面等号的情况没有考虑 忘记打等号 后面用跳出循环后则输出等号的形式解决。
2.2 7-6 水仙花数
2.2.1 数据处理
for(i=pow(10,N-1);i<pow(10,N);i++)
通过对题目的观察确定了i的取值范围
int mask=pow(10,N-1);
{
for(j=1;j<=N;j++)
{
do d=a/mask;
c=c*d;
}
a%=mask;
mask/=10;
sum=sum+c;
c=1;
引入mask 来使这个数的各个位置的数分离开来 然后用一个小的for循环来替代pow函数 加快编译速度。
2.2.4 PTA提交列表及说明
部分正确:刚开始用pow函数 导致数据过大时运行超时 后改用for循环解决。
2.3 7-7 换硬币
2.3.1 数据处理
使用三个循环嵌套 分别对应一分 两分 五分
for(a=19;5a>0;a--)
{
for(b=50;2b>0;b--)
{
for(c=99;c>0;c--)
而后使用if判断是否能整合为1
if(5a+2b+1*c==x)
{count++;
printf("fen5:%d, fen2:%d, fen1:%d, total:%d\n",a,b,c,a+b+c);
2.3.2 代码截图
2.3.4 PTA提交列表及说明
第一次是把一分和五分位置选反了 第二次是把每一种情况从最小的开始加 改正后正确。
3.代码互评
同学代码截图
自己代码截图
都一样 没得变化