C语言第三次博客作业---单层循环结构
一、PTA实验作业
题目一
1.实验代码
int i,N;
char sex; //sex为计算者性别
double height; //height为计算者身高
scanf("%d",&N);
for(i=1;i<=N;i++){
scanf("\n%c%lf",&sex,&height); //\n吸收换行符
if(sex=='M')
printf("%.2f\n",height/1.09);
else
printf("%.2f\n",height*1.09);
}
2 设计思路
- 第一步:定义变量,sex放性别,height放身高。
- 第二步:输入N。
- 第三步:i=1。
- 第四步:输入sex,height。
- 第五步:如果sex=='M',则输出height/1.09,并保留两位小数。
- 第六步:否则输出height*1.09,并保留两位小数。
3.本题调试过程碰到问题及解决办法
- (1).在运行过程中发现循环第二次不能输入数据,通过调试监测sex,我发现循环会直接跳到第二步去。解决方法:通过输入\n存放换行符,让数据正确存放。
- (2).在做题过程中不知道怎么按题目要求输出,通过尝试发现也可以不用按照输出格式来。
4.本题PTA提交列表
题目二
1.实验代码
int i,a,n;
scanf("%d%d",&a,&n);
int k=a,s=0;
for(i=1;i<=n-1;i++){
a*=10;
a+=k;
s+=a;
}
printf("s = %d",s+k);
2 设计思路
- 第一步:定义变量i,a,n,s,k。
- 第二步:k=a,s=0。
- 第三步:a=a*10。
- 第四步:a=a+k。
- 第五步:s=s+a。
- 第六步:重复第三步,直到i大于n-1。
- 第七步:输出s+k。
3.本题调试过程碰到问题及解决办法
- (1).刚开始时还不懂题意,无法表达a于n的关系,但之后就明白了。
- (2).没有对s赋值导致结果不对,解决方法就是对s赋值为0。
4.本题PTA提交列表
题目三
1.实验代码
int i,N,num,min;
scanf("%d",&N);
if(N>1){
for(i=1;i<=N;i++){
scanf("%d",&num);
if(min>num)
min=num;
}
printf("min = %d",min);}
else if(N==1){
scanf("%d",&num);
printf("min = %d",num);}
else
printf("no");
2 设计思路
- 第一步:定义变量i,N,num,min,其中num放输入的数,min放最小数。
- 第二步:输入N。
- 第三步:如果N大于1,输入num,如果min大于num,则min=num。
- 第四步:循环第三步,直到i大于N。
- 第五步:如果N==1,min=num。
- 第六步:否则,输出no。
3.本题调试过程碰到问题及解决办法
- 没有考虑到N不大于1时的情况,解决办法是加入N不大于1时的几种情况。
4.本题PTA提交列表
题目三
1.实验代码
int i,N,mynumber,yournumber;
scanf("%d%d",&mynumber,&N);
for(i=1;i<=N;i++){
scanf("%d",&yournumber);
if(yournumber<0){
printf("Game Over");break;}
else if(yournumber>mynumber)
printf("Too big\n");
else if(yournumber<mynumber)
printf("Too small\n");
else if(yournumber==mynumber&&i==1){
printf("Bingo!\n");break;}
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;}
}
if(yournumber!=mynumber&&i>N)
printf("Game Over\n");
2 设计思路
- 第一步:定义变量i,N,mynum放被猜的数,yournumber放猜的数。
- 第二步:输入mynumber,N。
- 第三步:如果yournumber小于0,输出Game Over,结束循环。
- 第四步:如果yournumber大于number,输出Too big并换行。
- 第五步:如果yournumber小于number,输出Too small并换行。
- 第六步:如果yournumber等于number且i等于1,输出Bingo!,并结束循环。
- 第七步:如果yournumber等于number且i大于1而且i小于等于3,输出Lucky You!,并结束循环。
- 第八步:如果yournumber等于number且i大于3,输出Good Guess!,并结束循环。
- 第九步:重复第三步,直到i大于N。
- 第十步:如果yournumber不等于number并且i大于N,则输出Game Over。
3.本题调试过程碰到问题及解决办法
- 这道题还是比较简单的,调试过程中会出现格式错误等小问题,但并不影响做题。
4.本题PTA提交列表
二、截图本周题目集的PTA最后排名
三、本周学习总结
1.你学会了什么?
- 学到了新的循环体,while 以及do-while,以及之前循环体的一些区别,while会先判断再进入循环,do-while先循环一次再判断。
- 还学到了嵌套循环,还有一些格式的输入,比如\n可以吸收字符。
2.本周的内容,你还不会什么?
- 不是能够很好的理解PTA上面的题意,嵌套循环理解不够深入,代码格式不太整洁美观,有时会多绕弯路。
3.分支结构上机考试总结。
- 一些数学函数表达式不会用。
- 输入时要空格,严格按照题目要求输入。