C语言第三次博客作业---单层循环结构
一、PTA实验作业
题目1: 最佳情侣身高
1.实验代码
int N, i;//i用来控制循环次数,N来表示将输入几组数据。
double height ,height1;//height表示最佳情侣身高,height1表示用户身高
char sex;//sex表示性别
i=1;
scanf("%d",&N);
getchar();
while(i<=N){
scanf("%c%lf",&sex,&height1);
getchar();
if(sex=='M') {height=height1/1.09;
printf("%.2f\n",height);}
else {height=height1*1.09;
printf("%.2f\n",height);}
i++;
}
2 设计思路
- 第一步:定义整型变量N来存放输入数据的数量,用i来控制循环次数,定义浮点型变量height来存放最佳情侣身高,height1来存放用户的身高,定义字符型变量sex来存放用户性别
- 第二步:赋值i=1
- 第三步:输入N的数据
- 第四步:当i<=N时执行步骤五六七八九
- 第五步:输入sex和height1的值
- 第六步:如果sex为‘M’则执行步骤七,如果sex为‘F’则执行步骤八
- 第七步:\(height=height1/1.09\),输出height的值
- 第八步:\(height=height1*1.09\),输出height的值
- 第九步:i++
3.本题调试过程碰到问题及解决办法
- 刚刚开始是遇到循环次数不正确的问题,也就是输入数据个数和我所期望的不太一样 解决办法:看了几个课本上的代码,和它对应的题目要求需要的次数对比,最总算是懂了循环几次需要的条件
- 刚刚开始时候输出的数据都异常 解决办法:同学提示在输入后加getchar()
跟踪变量截图
4.本题PTA提交列表
题目2: 特殊a串数列求和
1.实验代码
int a,n,s=0,i,m=0;//i用来控制循环次数,m表示每项
scanf("%d %d",&a,&n);
for(i=0;i<n;i++){
m=m+a*pow(10,i);
s=m+s;
}
printf("s = %d",s);
2 设计思路
- 第一步:定义整型变量a,n,s存放和,m表示每一项,i用来控制循环次数
- 第二步:输入a和n
- 第三步:i=0
- 第四步:当i<n时执行步骤五六七,否则执行步骤八
- 第五步:\(m=m+a*pow(10,i)\)
- 第六步:\(s=m+s\)
- 第七步:i++
- 第八步:输出s的值
3.本题调试过程碰到问题及解决办法
跟踪变量截图
4.本题PTA提交列表
题目3: 找出最小值
1.实验代码
int n,i,number,min;//n表示输入数据的个数,i用来控制循环次数,number表示每个输入的数据,min表示最小值
scanf("%d",&n);
while(i<n){
i++;
scanf("%d",&number);
if (i==1)min=number;
if (min>number){min=number;
}
}
printf("min = %d",min);
2 设计思路
- 第一步:定义整型变量n表示输入数据的个数,i用来控制循环次数,number表示每个输入的数据,min表示最小值
- 第二步:输入n
- 第三步:当i<n时执行步骤四五六七,否则执行步骤八
- 第四步:i++
- 第五步:输入number的数据
- 第六步:如果i等于1则min=numer
- 第七步:如果min>number则min=number
- 第八步:输出min的值
3.本题调试过程碰到问题及解决办法
跟踪变量截图
4.本题PTA提交列表
题目4: 猜数字游戏
1.实验代码
int n,N,i=0,number=1;//n表示游戏机产生的随机数,N表示猜测的最大次数,i用来统计猜测次数,number用来表示输入的猜测数
scanf("%d%d",&n,&N);
while (number>0) {
i++;
scanf("%d",&number);
if (number>0){
if(i<=N){
if (number==n){
if (i==1){printf("Bingo!"); break;}
else if (i<=3){printf("Lucky You!"); break;}
else if (i>3&&i<=N){printf("Good Guess!"); break;}
}
else if (number>n) {printf("Too big\n"); continue;}
else if (number<n) {printf("Too small\n"); continue;}
if (i>N) printf("Game Over");break;
}
} else if (number<0) {printf("Game Over");break;}
}
2 设计思路
- 第一步:定义整型变量n表示游戏机产生的随机数,N表示猜测的最大次数,i用来统计猜测次数,number用来表示输入的猜测数
- 第二步:输入n和N
- 第三步:i=0,number=1
- 第四步:当number>0时执行步骤五
- 第五步:i++
- 第六步:输入number
- 第七步:如果number>0执行步骤八,如果number<0执行步骤十五
- 第八步:如果i<=N执行步骤九,如果i>N执行步骤十五
- 第九步:如果number等于n执行步骤十,十一,十二,如果number>n执行步骤十三,如果number<n执行步骤十四
- 第十步:如果i等于1输出Bingo!并结束循环
- 第十一步:如果i<=3输出Lucky You!并结束循环
- 第十二步:如果i>3且i<=N输出Good Guess!并结束循环
- 第十三步:输出Too big 并用continue结束该轮循环
- 第十四步:输出Too small 并用continue结束该轮循环
- 第十五步:输出Game Over并用break结束循环
3.本题调试过程碰到问题及解决办法
- 各种if套if的语句把自己弄的有点懵 解决办法:其实也没有特别清楚,但就是这么运行然后正确了...
- 没考虑到直接输入负数退出时应输出一个Game Over 解决办法:通过pta的错误提示 然后在合适的位置给加上了一条输出语句
4.本题PTA提交列表
二、截图本周题目集的PTA最后排名。
三、本周学习总结
1.你学会了什么?
- 上周不会的字符型数据输入输出可以算是学会了(通过最佳情侣身高那题)
- 知道了需要几次应该加什么样的条件
- 可以说是慢慢的懂的一些诸如猜数游戏这样有些复杂的题目的思考方式了,应该是先找到一个临界点将问题分成两类或几类,接下来在分类里面再分类,把每个情况都考虑全面。
2.本周的内容,你还不会什么?
- 嵌套结构吧,预习过后还是云里雾里,其实是题目难以转换成以计算机的角度解决,思维方式和计算机的衔接还是非常的慢,所以做题也特别慢,挫败感比较强。
- 本周pta的韩信点兵,同学告诉了我题意,最开始是根本不懂他记下一个数字是干嘛用,后来同学说就是用它的总兵数除以报数人数最后能剩下的那个数字,然后才有头绪写,要不是跟同学讨论,我自己是无法完成的。