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语句。

posted @ 2017-10-31 22:14  久念  阅读(274)  评论(7编辑  收藏  举报