C语言第三次博客作业---单层循环结构
一PTA实验作业
题目一 最佳情侣身高
1.实验代码
int N,i;
double high; //定义浮点型变量high身高和字符型变量sex性别//
char sex;
scanf("%d",&N);
for(i=1;i<=N;i++){
scanf(" %c%lf",&sex,&high); //输入用户的性别身高//
if(sex=='F')
printf("%.2f\n",high*1.09); //计算输出相应的情侣身高//
else
printf("%.2f\n",high/1.09);
}
2 设计思路
- 1定义浮点型变量high和字符型变量sex
- 2输入用户数量
- 3定义i的起始值为1
- 4输入用户的性别身高
- 5如果输入为F,则计算high*1.09并输出
- 6如果输入不为F,则计算high/1.09并输出
- 7i=i+1
- 8循环4 5 6 7当i<=N时结束
3.本题调试过程碰到问题及解决办法
- 一开始编程序时对应变量的表示没有表示好,本来就对F,M进行字符型定义,最后却要求浮点型输出,导致错误。
- 对于字符型输入输出的理解不够扎实,没有考虑到空格与回车键对字符型变量赋值的影响,导致应有的字符型变量没有输进去,答案错误。
4.本题PTA提交列表
题目二 特殊a串数列求和
1.实验代码
int a,n,sum,i; //定义整型变量a,n,sum,i//
scanf("%d %d",&a,&n); //输入a,n的值//
sum=0;
for(i=1;i<=n;i++)
{
sum=sum*10+a*i; //以for循环的形式计算a+aa...(n个a)的值//
}
printf("s = %d",sum);
2 设计思路
- 定义整型变量a,n,sum,i
- 输入a,n的值
- 定义sum的初始值为0,i为1
- 计算sum=sum* 10+a* i,i++
- 循环第4步,直到i>n退出
- 输出s的值
3.本题调试过程碰到问题及解决办法
一开始编程时没有思考好,所用公式错误,用dev-c++运行时发现数据错误
后几次改正自己思考的编程不足,随后通过别人的帮助重新思考式子之间的关系编写。
4.本题PTA提交列表
题目三 找出最小值
1.实验代码
#include<stdio.h>
int main()
{
int n,number,i,min; //n个整数,number表示输入的数值//
scanf("%d %d",&n,&number);
min=number; //对min赋值//
for(i=1;i<=n;i++){
scanf("%d",&number);
if(min>number) //不断把更小的值赋给min//
min=number;
else
min=min;
}
printf("min = %d",min);
return 0;
}
2 设计思路
- 1定义整型变量n,number,i,min
- 2输入n,number的值
- 3min=number,i=1
- 4如果min>number,则min=number,反之,min=min
- 5再次输入number的值,i++
- 6循环3 4 5,直到i>n结束
- 7输出min的值
3.本题调试过程碰到问题及解决办法
写代码时忘记在里面弄一个scanf语句能不断输入number的值,在pta输出时printf中的空格没弄好也导致错误
4.本题PTA提交列表
题目四 猜数字游戏
1.实验代码
#include<stdio.h>
int main()
{
int a,b,count,n;
scanf("%d %d",&a,&n); //输入随机数a以及猜测的最大次数n//
int flag = 0; //定义一个中间变量flag//
for (count=1;count<= n;count++)
{scanf("%d",&b); //输入猜测b//
if (b<0) break; //输入负数结束程序//
else if (b>a)
printf("Too big\n"); //输入的数较大,输出Too big,小为Too small//
else if (b<a)
printf("Too small\n");
else{
if (count==1) { //输一次就中,输出Bingo//
flag = 1;
printf("Bingo!\n");
break; }
if ( count>1&&count<=3){ //三次内中,Lucky You!//
flag = 1;
printf("Lucky You!\n");
break;}
if (count>3){
flag = 1;
printf("Good Guess!\n");//三次后在允许内猜中Good Guess!//
break; } } }
if (flag == 0)
printf("Game Over\n"); //跳出循环输出Game Over//
return 0;
}
2 设计思路
- 1定义整型变量a,b,count,n,flag
- 2输入a,n的值
- 3 flag=0
- 4输入猜测的值b
- 5如果b<0,Game Over
- 6 b>a,Too big
- 7 b<a,Too small
- 8 count=1时,flag=1,b=a,输出Bingo!,count=1,2时,flag=2,输出Lucky You!,count>3&&count<=n,flag=1,输出Good Guess!
- 9 循环4 5 6 7,并输出相应的要求,若在count<=n内不满足a=b,则结束循环
3.本题调试过程碰到问题及解决办法
在编写时没有很好的符合所有条件,一开始部分正确
调试方面该题不知道怎么入手,调整后总是部分正确,后在同学的建议下添加flag作为辅助量才正确。
4.本题PTA提交列表
二、截图本周题目集的PTA最后排名。
三、本周学习总结
1.你学会了什么?
- 嵌套循环的简单理解使用,在知道循环次数时多用for,其它多用while或者do while
- 简单的调试,添加查看输入变量调试,使用//或/* */注释
- break使用是结束循环,continue是跳过后面语句继续循环,continue只用于循环,break还可用于switch
- 编程时用flag等其他中间量
2.本周的内容,你还不会什么?
- 对于一些嵌套的逻辑思维不够,一些问题的编程会将其复杂化或一开始无从下手
- 对于do while语句使用不够熟练,continue,break使用不够灵活,一些语句在循环体内外的放置不够清晰,自己对一些经典例题还应好好揣摩,多编程
- 对于Dev-c++的调试还不够了解熟练,对于调试计算值以外的错误有时会不知道怎么调试
3.分支结构上机考试总结。
(1)哪些地方错了,为什么?
- 第一题时自己忘记整型之间的计算结果也为整型,导致一开始部分正确
- 第三题时对于中午十二点的描述没有很好的对应题目要求,造成部分正确
- 第四题时自己对switch语句的运用不够熟练,case后记得加空格,switch变量弄好后要记得用大括号把case情况括号起来
- 最后一题自己的时间不够来不及提交,自己打代码还不够熟练,基础不够扎实
(2)后续要怎么找程序错误?
- 学会用Dev-c++调试,查找错误,减少时间
- 多翻课本,巩固基础,减少不必要的错误
(3)对自己成绩满意么?不满意的话要怎么改进?
- 对自己的上机考试结果不满意
- 提高自己对Dev-C++调试的了解熟练程度
- 多编程,提高自己的速度和思维敏感度
- 多记录自己的错误,尽量不再犯同样的错误