一、第四次PTA作业
题目1.查询水果价格
1.本题PTA提交列表
2.设计思路
定义价格与序号函数
输出列形式的序号所对应水果名称
用if语句判断序号,进入各个序号所对应的水果
输出所对应水果的价格
3.本题调试碰到问题及解决办法
- 选这题虽然很简单也的确提交一次就过了,不过事实上在dev上我卡在如何退出循环非常久,用了各种其他循环来退出一直编译错误,也是来警醒自己对各个函数的运用还不够,不够熟练,不然看到exit就应该立马想到break语句,今后要锻炼这种能力意识
题目2.打印九九口诀表
1.本题PTA提交列表
2.设计思路
定义n与i变量
运用for函数令横项i逐渐增加,i应小于N即我们所要值
在for中再次运用for令n列项逐渐增加
判断结果是个位数还是两位数,如果是个位数在个位数后多加个空格使得格式整齐
输出乘法表
3.本题调试碰到问题及解决办法
- 写这题因为格式问题提交试了蛮多次,主要是学到了%d也可以用格式符,虽然这题我用了并不合适,因为这个格式符是前空格,与题目的后面空格不一样,所以最后我多用了一个判断语句加土方法空格键来使格式整齐,不过这种方法今后能令很多程序变得更加整洁舒适
题目3.梅森数
1.本题PTA提交列表
2.设计思路
定义MN为梅森素数,i为指数
判断n是否在条件内,是的话进入下一条语句
运用for使i在条件内逐渐递增
写入MN运算公式,令r=1
运用for逐个判断该数是否素数,如果余数为0则令r=0退出语句
是梅森素数的话则输出,最后输出所有梅森素数
3.本题调试碰到问题及解决办法
- 一开始将r=1放在了int定义那边,导致第一个测试点一直错误,无法输出31这个数,调试发现如果r=1放在外面在循环时定义值会发生改变导致错误
二、同学代码结对互评
1.互评同学名称 :农献清
2.我的代码、互评同学代码截图
int n,MN,i,j,r=1; //MN为梅森素数,题目说的梅森素应该是表达错误
scanf("%d",&n);
if(n<20&&n>1)
{
for(i=2;i<=n;i++)
{
MN=pow(2,i)-1;
for(j=2;j<=MN/2;j++)
{
if(MN%j==0) //如果是素数则此循环不会进入
{
r=0;
break; //如果不是素数则跳出循环,令r=0来说明不是素数
}
}
if(r==1) //如果是素数 则r的值不变
{
printf("%d\n",MN);
}
}
}
else if(n<=1)
printf("None\n");
else
printf("Too Big!\n");
return 0;
3.我和同学代码不同在哪里?有哪些各自优势?你更喜欢哪种代码风格?如果同学代码有错的也请帮忙指出来哪里出问题。
1.格式:她的代码格式比较漂浮,但是这样便于解读更加清晰,而我在if和else后如果只有一条语句就习惯不加{},这样虽然代码看起来紧凑我也比较喜欢这样看着舒服但是对以后的程序解读可能会造成影响,我会尽力改过来
2.注释:她主要注释都做了,但是还是希望能把变量的注释加上,这样便于更快的解读程序
3.代码:她的代码判断先判断了n不属于范围内的情况,我觉得应该先写好范围内的代码再去一步步判断范围外的特殊情况才不容易漏掉
她的代码总体情况思路清晰,注释也比较全,同时在r=1放在哪的问题上我也请教了她,也谢谢她的帮助,总体我们都学过c语言,对这种类型的题目思路都有框架很容易构建,主要都是一些小细节问题会导致发生错误卡主,希望能一起继续加油
三、截图本周题目集的PTA最后排名。
四、本周学习总结
1.你学会了什么
学会了%d的格式符功能,加深了对break语句的运用,对函数的定义与声明有了更加清晰的认识
2.本周的内容你还不会什么
本周学习状态非常差,除了听课以外其他自主学习时间非常懈怠,引起警示,本周作业情况是个教训,慢慢补上的同时下周会定下计划改变,先写完作业再去复习其他内容。
我对设计思路这方面锻炼还是不够,语言始终适应不了一部部写思路总是一概而论,一直在改正,接下去我每个程序会都在纸上先写思路再打代码,甚至有的不要求做的题目也试试写写思路,以此来锻炼这个能力。