C语言第三次博客作业---单层循环结构
一、PTA实验作业。
题目1:7-2 最佳情侣身高
1.实验代码
int N,i;
char sex;
double man_height,woman_height;
scanf("%d\n",&N);
for(i=1;i<=N;i++){
scanf("%c",&sex);
if(sex=='M'){
scanf("%lf\n",&man_height);
woman_height=man_height/1.09;
printf("%.2f\n",woman_height);
}
if(sex=='F'){
scanf("%lf\n",&woman_height);
man_height=woman_height*1.09;
printf("%.2f\n",man_height);
}
}
2.设计思路
-
(1)定义两个双精确浮点型的变量man_height,woman_height。定义两个整型变量N,i。定义符号变量sex。man_height放男性身高,woman_height放女性身高。
-
(2)输入一个整型变量N。
-
(3)给i赋值1,若i<=N则进入循环,若不是则跳出循环。在每次循环都需i++;
-
(4)输入符号变量sex,若sex=='M',则输入浮点型变量man_height,并计算‘woman_height=man_height/1.09’。并输出woman_height,保留2位小数。
-
(5)若sex=='F',则输入浮点型变量woman_height,并计算‘man_height=woman_height*1.09’。并输出man_height,保留2位小数。
-
(6)当i>N时跳出循环。
3.本题调试过程碰到问题及解决办法
-
碰到的问题:
- ![](http://images2017.cnblogs.com/blog/1232112/201711/1232112-20171101205058920-1849516003.png)
输出语句放在for语句外面最多只能有两个值。
- ![](http://images2017.cnblogs.com/blog/1232112/201711/1232112-20171101212251154-1207878193.png)
输出的数值完全不明所以,所以错了。
- ![](http://images2017.cnblogs.com/blog/1232112/201711/1232112-20171101212509607-1279946907.png)
只输出了两个值,而我定义的是输出三个值。
- 解决办法:放在里面
4.本题PTA实验结果
题目2:7-4 特殊a串数列求和
1.实验代码
int a,n,s,i,t;//t表示中间值。
s=0,t=0;
scanf("%d%d",&a,&n);
for(i=1;i<=n;i++){
t=t*10+a;
s=s+t;
}
printf("s = %d",s);
2.设计思路
-
(1)定义五个整型变量a,n,s,i,t。t表示中间值。
-
(2)将0分别赋值给s,t
-
(3)输入整型数据a,n。
-
(4)i赋值1,当i<=n时,进入循环,计算‘t=t*10+a,s=s+t’,并每次循环执行i++
-
(5)当i>n时,跳出循环。输出s。
3.本题调试过程碰到问题及解决办法
-
碰到的问题:
- ![](http://images2017.cnblogs.com/blog/1232112/201711/1232112-20171101213425982-453468764.png)
计算表达式错误,输出的是266.
- ![](http://images2017.cnblogs.com/blog/1232112/201711/1232112-20171101213711498-740425587.png)
本来应该是222,却变成了242,a变成了24,所以错了。
- 解决办法:重新定义一个变量,用来放a的值。
4.本题PTA实验结果
题目3:7-6 找出最小值
1.实验代码
int n,time,i,a,b;//time表示次数
scanf("%d",&time);
scanf("%d",&n);
for(i=1;i<=time;i++){
a=n;
scanf("%d",&n);
if(a<=n){
b=a;
n=a;
}
else{
b=n;
continue;
}
}
printf("min = %d",b);
2.设计思路
-
(1)定义五个整型变量n,time,i,a,b,time表示次数。
-
(2)输入两个整型变量n,time。
-
(3)将1赋值给i。当i<=time,进入循环。将n的值赋给a,并输入值一个新n,如果a<=n,则将a值赋给b,将a值赋给n;否则将n值赋给b,并跳过下步骤,执行新循环,i++,直至i>time时跳出循环。
-
(4)输出min的值
3.本题调试过程碰到问题及解决办法
-
碰到的问题:
无法比较大小。
-
解决办法:比较值大小需要定义一个空白变量,在将其中一个放入空白变量,再比较,这样比较简便。
4.本题PTA实验结果
题目4:7-8 猜数字游戏
1.实验代码
int ture_number,N,your_number,i;
scanf("%d %d\n",&ture_number,&N);
scanf("%d\n",&your_number);
i=1;
while(i>=0){
if(your_number<0){
printf("Game Over\n");
break;
}
else if(your_number>ture_number){
printf("Too big\n");
}
else if(your_number<ture_number){
printf("Too small\n");
}
else{
if(i==1){
printf("Bingo!\n");
break;
}
else if(i>1&&i<=3){
printf("Lucky You!\n");
break;
}
else{
printf("Good Guess!\n");
break;
}
}
i++;
if(i>N){
printf("Game Over\n");
break;
}
scanf("%d\n",&your_number);
}
2.设计思路
-
(1)定义四个整型变量ture_number,N,your_number,i。
-
(2)输入ture_number,N。再输入your_number。
-
(3)将1赋值给i,若i>=0,进入循环,i++,循环末再输入your_number,并进入下一次循环。
-
(4)如果your_number<0,输出Game Over,并且跳出循环。
-
(5)如果your_number>ture_number,输出Too big。
-
(6)如果your_number<ture_number,输出Too small。
-
(7)如果your_number=ture_number,则若i==1,输出Bingo!并跳出循环。若i>1&&i<=3,输出Lucky You!并跳出循环;若i>3,输出Good Guess!并跳出循环
-
(8)如果i>N,输出Game Over,并跳出循环。
3.本题调试过程碰到问题及解决办法
-
碰到的问题:
-
只能进行到这一步,而且与答案不服。而且每输入一个数就自动弹出答案,调式中也会这样。 -
进入了这个语句再输出的是
-
-
解决办法:首先它用的是while,因为次数未知,是系统自己规定。其次应将your_number<0首先判断,不然就直接会输出too small。
4.本题PTA实验结果
二、截图本周题目集的PTA提交列表及最后排名。
1.PTA提交列表
2.PTA排名
三、本周学习总结
1.你学会了什么?
循环结构的基本使用方法,for语句的循环次数确定,而while的循环次数不确定。while和for的区别得到基本了解。学会了如何求最大公约数。比较值大小需要定义一个空白变量,在将其中一个放入空白变量,再比较,这样比较简便。
2.本周的内容,你还不会什么?
什么时候用for的嵌套,不知道是否有while嵌套。嵌套结构各个赋值放的地方不是很了解。对于龟兔赛跑之类的问题还不怎么熟悉,不知道如何解决这类问题。