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嵌套。嵌套结构各个赋值放的地方不是很了解。对于龟兔赛跑之类的问题还不怎么熟悉,不知道如何解决这类问题。

posted @ 2017-11-01 22:10  烦呢,还要起名字  阅读(230)  评论(7编辑  收藏  举报