C语言—第二次作业
1.本章学习内容
1.1思维导图
1.2本章学习体会即代码量学习体会
1.2.1学习体会
在本章中对循环的内容进行了加深训练,学习了一种解决问题的方法循环嵌套,也学到了伪代码的运用,在描述算法是运用伪代码往往能然阅读者更能明白代码的功能。目前对伪代码的运用还不是很熟练,用伪代码描述算法也有点不习惯
1.2.2代码累计
2.PTA总分
2.1截图PTA中循环结构2次题目集的排名得分
2.2我的总分
总分:290
3PTA实验作业
3.1PTA题目1
从读入的整数数据中,统计大于零的整数个数和小于零的整数个数。用输入零来结束输入,程序中用变量 i 统计大于零的整数个数,用变量 j 统计小于零的整数个数。
3.1.1算法分析
输入多个不为零的数
while(n!=0) do
if(n>0) then
i++ //计算正数的个数
else
j++ //计算负数的个数
end if
end while
输出i和j的值
3.1.2代码截图
3.1.3测试数据
3.1.4PTA提交列表及说明
- Q1:刚开始出现答案错误
- A1:感觉在编译器上并没有什么问题,后来发现输入的数值应该是先输入再判断而不是先判断再输入
- Q2:运行超时
- A2:在判断n等于0时输入结束时所用语句有错误。
3.2PTA题目2
乌龟与兔子进行赛跑,跑场是一个矩型跑道,跑道边可以随地进行休息。乌龟每分钟可以前进3米,兔子每分钟前进9米;兔子嫌乌龟跑得慢,觉得肯定能跑赢乌龟,于是,每跑10分钟回头看一下乌龟,若发现自己超过乌龟,就在路边休息,每次休息30分钟,否则继续跑10分钟;而乌龟非常努力,一直跑,不休息。假定乌龟与兔子在同一起点同一时刻开始起跑,请问T分钟后乌龟和兔子谁跑得快?
3.2.1算法分析
输入比赛结束的时间
int rd=0 td=0 flag=0 //初始化乌龟、兔子所走的路程
for time=1 to T do
time1=0 //初始化兔子休息的时间
rd+=9 //乌龟没分钟走3米
if(flag==0) then //flag=0代表兔子没在休息
rd+=9
end if
if(time%10==0) then
if(rd>td) then //兔子跑得比乌龟远开始休息
while(time1<30&&time1+time<T) do //判断兔子休息的时间不超过30分钟,并且判断比赛的总时间不超过限制
td+=3
time1++
end while
time=time1+time
end for
if(rd>td) then
兔子赢了输出兔子跑的路程
end if
if(rd<td) then
乌龟赢了输出乌龟走的路程
end if
平局输入任意一个所走的路程
3.2.2代码截图
3.2.3测试数据
3.2.4PTA提交列表即说明
- Q1:之前几次错误基本都是由于没有考虑到在兔子睡觉时比赛结束这一例子
- A1:前几次都是如果兔子比乌龟跑得远的话乌龟走的路程直接加上90而兔子的不变,后来才再加上一层循环逐分钟判断总时间是否会超过比赛的时间
3.3PTA题目3
本题要求编写程序,对任一正整数n(n<20),输出所有不超过2n次方−1的梅森数。
3.3.1算法分析
输入n表示范围
初始化flag=0 flag1=0
for(i=2 to n ) do
number=pow(2,i)-1
flag=0 //用于判断是否是素数
for(x=2 to number) do
num1=number%x
if(num1==0) then //判断是否为素数
flag=1
end if
end for
if(flag=0) then
是素数则输出
flag1=1
if(flag1=0)
输出None //范围内没有满足要求的数
3.3.2代码截图
3.3.3测试数据
3.3.4PTA提交列表即说明
- Q1:出现答案错误n=1时出现问题
- A1:当n=1时程序无输出,经调试过后发现最后一个判断范围内是否有满足条件的数放在了第一个for里面出现了n=1时不会进入第一个循环从而导致无输出,将第一个for‘的范围缩小就解决了’