一、PTA实验作业
题目1:最佳情侣身高
1.实验代码
int n;
double height1,height2;
char sex,c;
scanf("%d",&n);
while (n>0){ //当n大于0时循环
scanf("%c%c%lf",&c,&sex,&height1); //c用来获取输入n之后的回车键
switch (sex){ //判断输入的sex是f还是m
case 'F':height2=height1*1.09;n--; //若是f,执行计算,n-1,跳出判断
break;
default :height2=height1/1.09;n--; //若不是,执行另一计算,n-1,跳出判断
break;
}
printf("%.2f\n",height2);
}
2.设计思路
- (1)定义一个整形变量n,和两个浮点型变量height1,height2,和两个字符型变量sex,c
- (2)首先输入n的值,进行下列循环:1.输入c,sex和height的值,其中c用来获取输入n之后的回车键
2.进入switch的条件语句倘若sex=‘F’,则:height2=height1*1.09,n=n-1
否则height2=height1/1.09,n=n-1。直到n<0循环结束。 -
(3)最后以保留两位小数的方式输出height2.
3.本题调试过程碰到问题及解决办法
答:这道题刚开始的时候难到我了,做了好久都没做出来,提交结果一直都是运行超时,不知道为什么,后来
改了很多遍才发现while语句中的判断条件弄反了。调试了一下进入了死循环,看来是对于while语句还掌握不够熟悉。
后来看了书多次对比就懂得了()里的要为真,才能继续循环。4.本题PTA提交列表
题目2: 特殊a串数列求和
1.实验代码
int a,n,i=0,s=0,b=0;
scanf("%d",&a);
scanf("%d",&n);
while(i<n){
b=b+(a*pow(10,i));
s=s+b;
i++;
}
printf("s = %d\n",s);
return 0;
2.设计思路
- (1)首先先定义5个变量a,n,i,s,b,i用来对循环次数的限定,b用来存放aaa...的值,s用来存放总值。
- (2)然后分别给i,s,b定义一个初始值0,接下来依次输入a,n的值
- (3)进行一个循环b=b+(a*pow(10,i)),s=s+b,i=i+1.直到i>n循环结束。
- (4)最后输出s的值。
3.本题调试过程碰到问题及解决办法
答:这题很过分题目意思没有表明清楚,aaa难到不是表示三个a相乘吗?好吧是我理解错
题目的意思了,做了好久哦,思路那么清晰,都是答案错误,后来问了下舍友才直到这个aaa的含义
好吧,这题不难,在懂得题目意思后的我三两下就做出来了。不过感觉有个难点就是用那个b来存放aaa...的值,当时这边稍微想了一下。
4.本题PTA提交列表
题目3: 找出最小值
1.实验代码
int i,n,min,a;
scanf("%d",&n);
scanf("%d",&a);
min=a;
for(i=1;i<=n;i++)
{
scanf("%d",&a);
if(min<=a)
min=a;
if(min>a)
min=min;
}
printf("min = %d,min");
2.设计思路
- (1)这题吧,我首先是先定义四个变量i,n,min,a,a是用来存放随机输入的数字min为最终的所有数中的最小值。
- (2)然后输入n和a的值,令min=a。
- (3)进行一个循环语句令i=1,i=i+1,直到i>=n结束循环
1.首先在循环中再次输入一个a,让min的值与a进行比较。
2.若min>a相当于最开始输入的那个值更大,则min=a,让min等于更小的一个值,
3.若是min<a则说明上一个a的值为更小值,则min=min, -
(4)最后输出min的值。
3.本题调试过程碰到问题及解决办法
答:这题呢,看似我上面的思路很清晰,可是答案错了,哈哈哈,我没有做出来,我和你一样感觉没问题呀,
就是答案错误,我改了很多遍,我感觉自己可以做出来这题,所以我就没有问同学哦,回去再思考下,
由于电脑不知道怎么会我的Devc都不能用所以都调试不了,很烦啊!好吧我回去再想下。4.本题PTA提交列表
题目4: 猜数字游戏
1.实验代码
int mynumber,yournumber,n,i=1;
scanf("%d%d",&mynumber,&n);
while(i<=n){
scanf("%d",&yournumber);
if(yournumber==mynumber&&i==1){
printf("Bingo!\n");
break;
}
else if(yournumber<0){
printf("Game Over\n");
break;
}
else if(yournumber>mynumber){
printf("Too big\n");
}
else if(yournumber<mynumber){
printf("Too small\n");
}
else if(yournumber==mynumber&&i>1&&i<=3){
printf("Lucky You!\n");
break;
}
else if(yournumber==mynumber&&i>3&&i<=n){
printf("Good Guess!\n");
break;
}
i++;
}
if(yournumber>=0&&yournumber!=mynumber)
printf("Game Over\n");
return 0;
2.设计思路
- (1)首先定义四个变量mynumber yournumber n,i。然后输入mynumber和n的值。
- (2)然后进入while的循环语句i=i+1,直到i>n是结束循环
-
(3)在循语句中又进行条件语句的嵌套,如果yournumber=mynumber并且i=1的时候输出Bingo!结束这个条件语句
如果yournumber<0,直接输出Game Over!然后结束这个条件语句
如果yournumber>mynumber输出Too big 结束这个条件语句
如果yournumber1并且i<=3 则输出Lucky You!然后结束这个条件语句
如果yournumber==mynumber并且i>3并且i<=n则输出Good Guess!然后结束这个条件语句
如果yournumber>=0并且yournumber不等于mynumber则输出Game Over!
是不是思路很清晰???哈哈哈3.本题调试过程碰到问题及解决办法
这道题稍微有一点麻烦,难点主要是在while循环语句中嵌套的if语句,这需要比较清晰的思维和逻辑,和对于break的巧妙运用。
当时我做的时候就是思路没有理清楚对于yournumber>=0&&yournumber!=mynumber这个语句不知道要放在循环内还是循环外比较合适。4.本题PTA提交列表
二、截图本周题目集的PTA最后排名
三、本周学习总结
1.你学会了什么?
答:这周我主要是学习了循环语句和嵌套语句,学会了break,continue的相同点和不同点,不同点主要是continue只能用于循环,而break既可用于
循环也可用于switch语句。
还有就是学会了如何在循环中嵌套循环或者选择。初步接触了函数的使用。
2.本周的内容,你还不会什么?
嵌套语句真的有一点难,基本是由掌握,但是感觉题目还是有点难度,需要多加练习才行,今天看了翁恺的视屏感觉还挺有意思的,感觉会比老师讲的更好哦,哈哈哈。
3.分支结构上机考试总结
这次上级考试我考的很不理想,说实话有点郁闷,这段时间傍晚需要去校运会训练好多次课都没有上到,然后最近也挺不自觉的代码打得少了,对学习开始有点松懈,
马马虎虎的有点开始应付作业,没有深入去思考。
错误的地方主要是一些细节,一些思维方式还是不行,感觉自己是那种比较笨的,想法都好奇怪,然后就是打字比较慢效率不高
然后我觉得以后还是要多看看翁恺的视屏,代码也要多大,问题还是需要深入去思考。因为笨所以更需要努力。