一、第三次PTA作业
题目1.最佳情侣身高
1.实验代码
int t;
char c;
double h;
scanf("%d\n",&t);
while(t--){
scanf("%c %lf",&c,&h);
getchar();
if(c=='M') {h/=1.09; printf("%.2f\n",h);}
else {h*=1.09; printf("%.2f\n",h);}
}
2.设计思路
-
定义身高h与字符型c
-
运用while循环结构实现多次输入
-
输入字符代表性别和身高,运用if语句判断性别运用数学公式求出最佳身高
3.本题调试碰到问题及解决办法
- 无法像pta那样输入两个身高后输出两个身高,只能一个一个身高输出,这样让t的值不知道有什么用处,调试发现直接跳过循环
4.本题PTA提交列表
题目2.特殊a串数列求和
1.实验代码
int a,n,i,j,x=10,s,b;
scanf("%d %d",&a,&n);
s=a;
b=a;
if(n!=1){
for(i=1;i<n;i++)
{
for(j=0;j<1;j++)
{
a=b+x*a;
}
s=s+a;
}}
else
s=a;
printf("s = %d",s);
return 0;
2.设计思路
-
定义正整数a和n,定义使a成10倍增加的数x,定义b来存放值
-
先运用第一个for循环结构实现加法累计运算,在里面运用第二个for循环结构实现a的倍数增加
-
求出a的值后每次累计进行加法运算得出所求值
-
用printf语句输出所得值
3.本题调试碰到问题及解决办法
- 一开始用a=a+x*a发现a的值会直接增加到2222,也就是说a的值再一次循环之后如果不经过还原成原来输入的值那之后的值会直接递增,所以我这里用了b来存放a的值,使得a能够保持原来的值进行十倍递增
4.本题PTA提交列表
题目3.找出最小值
1.实验代码
int n,number,a=0,i;
scanf("%d",&n);
if(n!=1){
for(i=1;i<=n;i++)
{
scanf("%d",&number);
if(number-a<0) a=number;
else a=a;
}}
else {
scanf("%d",&number);
a=number; }
printf("min = %d",a);
return 0;
2.设计思路
-
定义n为输入的值的数字,定义输入的数字number,定义a=0为初始对比数同时为最小值
-
判断n是否等于1,如果等于1则那个数即最小值,如果不等于1进入if语句,再运用if语句判断number与a的大小,如果a小于number则a为最小值,反之将number赋值给a为最小值
-
将所求得最小值用printf语句输出
3.本题调试碰到问题及解决办法
- 在n等于1的情况下忘记再次用scanf输入number使得编译错误,因为前面的输入number的scanf在for循环语句中
4.本题PTA提交列表
题目4.猜数字游戏
1.实验代码
int number, N, n, i=0;
scanf("%d%d", &number, &N);
scanf("%d", &n);
if(n<0)
{
printf("Game Over\n");
}
while(n>=0)
{
i++;
if(i>N)
{
printf("Game Over\n");
break;
}
else if(n>number)
printf("Too big\n");
else if(n<number)
printf("Too small\n");
else if(n=number&&i==1)
{
printf("Bingo!\n");
break;
}
else if(n=number&&i>1&&i<=3)
{
printf("Lucky You!\n");
break;
}
else if(n=number&&i>3&&i<=N)
{
printf("Good Guess!\n");
break;
}
scanf("%d", &n);
}
return 0;
2.设计思路
-
定义随机数number和次数N
-
判断n是否小于0,如果小于0则游戏结束输出结果
-
运用while语句实现多次数值的输入
-运用if语句判断i即输入次数与规定次数N的大小关系后输出所对应的语句
3.本题调试碰到问题及解决办法
-
最开始将i与N的判断放在了while循环语句的外面导致多次错误,发现这样做的话if的判断仅仅判断一次没有判断多次,于是把if语句全部放进while语句中结果马上正确了
-
不过本题和情侣身高的那题一样无法做到像pta那样输入多次后再进行输出,只能一次一次进行运算,这样的话调试过程会直接跳过结果所以也没必要放上调试的图了,我觉得类似这种题可能能用数组来实现
4.本题PTA提交列表
二、截图本周题目集的PTA提交列表及最后排名。
PTA排名
三、本周学习总结
1.你学会了什么
这周的循环结构明显难度开始加深,每题的作答时间也开始变多,不再像之前那样看一眼就能直接写出代码,关键是循环结构中的循环次数判断与因为繁杂而东缺西漏的代码会导致做题时的时间越来越多,不过这周学会了上学期没认真听得do while语句,虽然暂时没用到或者说用的不熟练所以不常用,不过好歹多学了一种方法,同时会使用空变量来存放另一个变量的值,这样使得原本很复杂的题目一下子变得简单
2.本周的内容你还不会什么
开心到上星期为止我一直认为编程就是要打代码多打代码一直打代码,这周我才发现很多基础概念开始模糊,光是打代码仅仅能加深会的印象,那些不会的还是不会,所以这周我多抽出了些时间看课本和听了网课,今后也会合理分配好打代码与看书的时间,以免再次出现会做却不知道怎么写的情况
3.分支结构上机考试总结。
上周的考试其他题目都非常顺利,很快就做完了,但剩下的问题说严重也严重,说粗心也是粗心,居然是忘记了对数函数的代码和字符型代码的写法导致整道题完全写不出来,就单单卡在这两点上,这也是我上面所说的光打代码不看书的后果,所以决定今后要事先做好准备,将基础打好,才能在会的基础上通过实践加深印象。