PTA实验作业
题目1
1.实验代码
#include <stdio.h>
int main () {
int N;
char sex;
float high;
scanf("%d", &N);
getchar(); //接受一个换行符
while ( N-- ) { //当N为0时跳出循环
scanf("%c %f", &sex, &high);
getchar();
if ( sex == 'F' )
printf("%.2f\n", high * 1.09);
else
printf("%.2f\n", high / 1.09);
}
return 0;
}
2.设计思路
- 1:定义一个整数变量N代表人数。定义一个单精度浮点变量high。定义字符型变量sex
- 2:输入N的值,并用getchar()吸收换行符
- 3:进入while ( N-- )循环,输入sex high的值,判断sex是否等于F,若是执行4
- 4:printf("%.2f\n", high * 1.09); 否则执行5
- 5: printf("%.2f\n", high / 1.09);
- 6:判断N的值若为0跳出循环,否则执行3.
3.本题调试过程中碰到问题及解决办法
遇到的问题:
1.主要问题是不知道如何换行输入值。
2.还有就是用while语句时如何界定次数
解决方法:
1.运用一个gechar()吸收一个符号达到输入时换行
2.看MOOC后发现了这个while ( N-- )语句简便快捷。
4.本题PTA提交列表
题目2
1.实验代码
#include<stdio.h>
int main(){
int a,k,s,n,i;
s=0;
k=0;
scanf("%d%d",&a,&n);
for (i=0;i<n;i++)
{
k=k*10+a;
s=s+k;
} printf("s = %d\n",s);
return 0;}
2.设计思路
- 1:定义a,k,s,n,i 5个整数变量,
- 2:s=0;k=0;
- 3:输入a,n的值
- 4:进入for循环for(i=1;i<=n;i++)
- 5: k=k*10+a; s=s+k;
- 6:判断是否i<=n若是则执行4,否则执行7.
- 7:输出s的值
3.本题调试过程中碰到问题及解决办法
遇到的问题:
这题比较简单,没有遇到问题主要是格式及粗心的语法错误
4.本题PTA提交列表
题目3
1.实验代码
#include<stdio.h>
int main( )
{
int n,i,l,min;
scanf("%d",&n);
scanf("%d",&l);
min=l;//先定义一个min来做为参考并将l赋值于min
for(i=1;i<n;i++){
scanf("%d",&l);
if(min>l)//在循环中比较min的值,并将小的赋值于min中
min=l;
}
printf("min = %d",min);
return 0;
}
2.设计思路
- 1:定义n,i,l,min 3个整数变量
- 2:输入n与l的值
- 3: min=l
- 4:进入for循环 for(i=1;i<n;i++),输入l的值
- 5:判断min>l是否为真若是真的则 min=l;
- 6:判断i是否小于n若是则跳出循环执行下一步,否则执行4
- 7:输出min的值
3.本题调试过程中碰到问题及解决办法
遇到的问题:
1.遇到的问题主要是思路的问题,不知道在循环中如何比较大小
解决办法:
1. 后来询问舍友后,知道先定义一个参考值来做比较,就是定义一个min来作参考量
4.本题PTA提交列表.
题目4
1.实验代码
#include <stdio.h>
int main()
{
int number, n;
int count = 0; //做为计数,应该先赋值为0
int value;
scanf("%d%d", &number, &n);
while(count <= n) {
scanf("%d", &value);
if(value < 0) {
printf("Game Over\n");
break;
}
count++;
if(value > number)
printf("Too big\n");
else if(value < number)
printf("Too small\n");
else {
if(count == 1) //判断猜对的次数
printf("Bingo!\n");
else if(count <= 3)
printf("Lucky You!\n");
else if(count <= n)
printf("Good Guess!\n");
break;
}
}
if(count > n) //判断输入的次数,应该放在循环外
printf("Game Over\n");
return 0;
}
2.设计思路
- 1:定义 number, n value count = 0 4个整数变量
- 2: 输入number, n的值
- 3:进入while循环while(count <= n)
- 4:进入while循环while (d--)
- 5:输入value的值
- 6:判断value > number是否为真若是真的则输出Game Over\n并且跳出循环,否则继续循环
- 7: count++;
- 8:判断value > number是否为真若是真的则输出Too big\n,分支判断value < number若是输出Too small\n
- 9:继续判断剩余的情况,如果count == 1输出Bingo!\n如果count <= 3输出Lucky You!\n如果count <= n输出Good Guess!\n 并且跳出循环
- 10:判断count > n若是输出Game Over\n
3.本题调试过程中碰到问题及解决办法
遇到的问题:
1.这题其实设计算法并不难但是在写程序是太多的分支,导致输出结果总是错误
2.输出时总是有的没法输出,甚至有的在运行时进入死循环,pta是运行超时
解决办法:
1.花了很多时间,慢慢理清程序,确保条件都有输入,千万不能急躁
2.检查后发现主要是break没输,以及循环条件的不充分在使用调试工具后发现问题并解决,调试确实有很大的作用
4.本题PTA提交列表.
二、截图本周题目集的PTA最后排名。
三、本周学习总结
1.你学会了什么?
**1. **我学会了用调试来修改程序,因为以前没用过,而且电脑也一直不能用,所以没试过这个功能,
所以每次程序错的时候都要找好久,找出来确实一个小错误,现在会使用调试功能后程序的错误
都可以根据值的变化来判断效率高了好多
2. 使用了for while来使用循环 我发现while比较简便。
3.明白了嵌套循环的原理,花了好长时间才明白,是通过用笔一步一步推出来的,感觉工程量好大,
不过对于一些问题确实很方便。
4.上次作业中没有规定的变量名这次也有改正,例如分子分母特地去百度了它的英文做为变量。
2.本周的内容,你还不会什么?
循环的语法内容是可以掌握,但是当循环遇上实际问题就很难解决,所以希望可以锻炼一下自己的
解题思路及逻辑能力