C语言第三次博客作业---单层循环结构
一、PTA实验作业
题目1
1.实验代码
int i,N;
double height;
char gender;/*定义变量gender表示性别*/
scanf("%d",&N);
for(i=1;i<=N;i++){/*用来循环输入数据,判断并输出所要数据 */
getchar();
scanf("%c%lf",&gender,&height);
if(gender=='F'){/*判断性别*/
printf("%.2f\n",height*1.09);}
else {
printf("%.2f\n",height/1.09);
}
}
2 设计思路
- 第一步:定义变量i,N,height,gender
- 第二步:输入N
- 第三步:输入gender,height
- 第四步:判断gender是否为F,如果是,执行第五步,否则执行第六步
- 第五步:输出情侣的最佳身高为height*1.09
- 第六步:输出情侣的最佳身高为height/1.09
- 第七步:重复第三步,直到i>N
3.本题调试过程碰到问题及解决办法
发现只能输入一个用户的数据,然后就结束运行了,输出了两个同样的答案,经过分析,应该要把输入数据和运算输出放在同一条for语句中,这样才能实现循环输入与输出
4.本题PTA提交列表
题目2
1.实验代码
int a,n,i,item,sum;
scanf("%d%d",&a,&n);
item=0;/*初始化变量*/
sum=0;
for(i=1;i<=n;i++)
{
item=item+a*pow(10,i-1);/*计算每个加数*/
sum=sum+item;/*累加每个加数*/
}
printf("s = %d",sum);
2 设计思路
- 第一步:定义变量a,n,i,item,sum
- 第二步:输入a,n
- 第三步:初始化item,sum
- 第四步:item=item+a*pow(10,i-1);
- 第五步:sum=sum+item;
- 第六步:重复第四步,直到i>n
- 第七步:输出sum
3.本题调试过程碰到问题及解决办法
本题要求计算a+aa+aaa+~~+a(n个a),所以此处item应为22才符合题目要求,而此处却为20,由此判断错误可能出现在item=a*pow(10,i-1)
里,经过分析,item应该累加,把代码改为item=item+a*pow(10,i-1)
结果答案正确
4.本题PTA提交列表
题目3
1.实验代码
int n,m,i,min;
scanf("%d",&n);
scanf("%d",&m);
min=m;/*把第一个输入的数先判定为最小值*/
for(i=1;i<=n-1;i++)
{
scanf("%d",&m);
if(m<min)/*比较后来输入的每个数与前面输入中最小值的大小*/
{
min=m;
}
}
printf("min = %d",min);
2 设计思路
- 第一步:定义变量n,m,i,min
- 第二步:输入变量n,m
- 第三步:min=m
- 第四步:输入m
- 第五步:判断m是否小于min,如果条件成立,执行第六步
- 第六步:min=m
- 第七步:重复第四步,直到i>n-1
- 第八步:输出min
3.本题调试过程碰到问题及解决办法
本题思路清晰,一遍就过
4.本题PTA提交列表
题目4
1.实验代码
int mynumber,yournumber,i,N;
scanf("%d%d",&mynumber,&N);
for(i=1;i<=N+1;i++)
{
scanf("%d",&yournumber);
if(i<=N&&yournumber<0)/*输入为负数,结束循环*/
{
printf("Game Over");
break;
}
else if(i==1&&yournumber==mynumber)/*一次答对,输出提示Bingo!,结束循环*/
{
printf("Bingo!");
break;
}
else if(i<=3&&yournumber>mynumber)/*猜数过大,输出提示Too big*/
{
printf("Too big\n");
}
else if(i<=3&&yournumber<mynumber)/*猜数过小,输出提示Too small*/
{
printf("Too small\n");
}
else if(i<=3&&yournumber==mynumber){/*在三次内猜对,输出提示Lucky You!,结束循环*/
printf("Lucky You!");
break;
}
else if(i>3&&i<=N&&yournumber>mynumber)/*在N次内,猜数过大,输出提示Too big*/
{
printf("Too big\n");
}
else if(i>3&&i<=N&&yournumber<mynumber)/*在N次内,猜数过小,输出提示Too small*/
{
printf("Too small\n");
}
else if(i>3&&i<=N&&yournumber==mynumber){/*超出3次,但在N次内猜对,输出提示Good Guess!,结束循环*/
printf("Good Guess!");
break;
}
else if(i>N)/*超出N次,输出Game Over,结束循环*/
{
printf("Game Over");
break;
}
}
2 设计思路
- 第一步:定义变量mynumber,yournumber,i,N
- 第二步:输入mynumber,N
- 第三步:输入yournumber
- 第四步:判断i<=N&&yournumber<0,如果成立,执行第五步,否则执行第六步
- 第五步:输出Game Over,跳出循环
- 第六步:判断i1&&yournumbermynumber,如果成立,执行第七步,否则执行第八步
- 第七步:输出Bingo!,跳出循环
- 第八步:判断i<=3&&yournumber>mynumber,如果成立,执行第九步,否则执行第十步
- 第九步:输出Too big
- 第十步:判断i<=3&&yournumber<mynumber,如果成立,执行第十一步,否则执行第十二步
- 第十一步:输出Too small
- 第十二步:判断i<=3&&yournumber==mynumber,如果成立,执行第十三步,否则执行第十四步
- 第十三步:输出Lucky You!,跳出循环
- 第十四步:判断i>3&&i<=N&&yournumber>mynumber,如果成立,执行第十五步,否则执行第十六步
- 第十五步:输出Too big
- 第十六步:判断i>3&&i<=N&&yournumber<mynumber,如果成立,执行第十七步,否则执行第十八步
- 第十七步:输出Too small
- 第十八步:判断i>3&&i<=N&&yournumber==mynumber,如果成立,执行第十九步,否则执行第二十步
- 第十九步:输出Good Guess!,跳出循环
- 第二十步:判断i>N,如果成立,执行第二十一步,否则执行第二十二步
- 第二十一步:输出Game Over,跳出循环
- 第二十二步:重复第三步,直到i>N+1
3.本题调试过程碰到问题及解决办法
经调试后发现,输出的内容和输入的内容挤在一起,没有换行,所以在应该换行的地方加上换行符
4.本题PTA提交列表
二、截图本周题目集的PTA最后排名。
PTA排名
三、本周学习总结
1.你学会了什么?
本周我学会了有关循环语句的一些知识,比如for语句和while语句,for语句中的for后面括号中一般跟三个表达式:初值表达式,条件表达式,步长表达式,以此来实现循环;while语句后可以接任意合法的表达式,while语句中还有个do-while语句,称为直到型循环语句,它是先执行循环体语句,再判断条件;以上循环语句各有各的优点与缺点,需要根据实际情况来合理使用。
2.本周的内容,你还不会什么?
本周的内容基本上都已经学会了,学会了循环语句中的for语句和while语句。