C语言第三次博客作业---单层循环结构

一、PTA实验作业

题目1

1.实验代码

	int N,i;
	char ch1,ch2;//ch2存放性别
	double Height,Height1; //Height为情侣的标准身高,Height1为计算者身高
	scanf("%d",&N);
	for(i=1;i<=N;i++){
		ch1=getchar(); //吸收换行符
		ch2=getchar();
		scanf("%lf",&Height1);
		switch(ch2){
		    case 'F':
		  	  Height=Height1*1.09;
		  	  printf("%.2f\n",Height);
		  	  break;
		  	case 'M':
			  Height=Height1/1.09;
			  printf("%.2f\n",Height);
			  break;	
		} 
    }

2.设计思路

  • 第一步:定义两个整数变量N,i,定义两个字符型变量ch1,ch2,ch2用来存放性别,ch1用来存放换行符,定义两个双精度浮点型变量,Height,Height1。
  • 第二步:输入N。
  • 第五步:i=1。
  • 第六步:输入ch1,ch2,Height。
  • 第七步:用switch语句判断ch2,若为F 则Height=Height1*1.09,并输出Height,并保留两位小数。
  • 第八步:若为M,则 Height=Height1/1.09,并输出Height,并保留两位小数。
  • 第九步:i++。
  • 第九步:循环第六步,直到i大于N。

3.本题调试过程碰到问题及解决办法

  • (1)在运行过程中发现循环第二次不能输入数据,通过调试监测ch2,我发现ch2会自动变成别的数据,解决方法:通过输入ch1存放换行符,使得ch2可以正确存放数据。

  • (2)在运行中发现输入什么都没有结果,通过调试监测ch2发现是漏了''

4.本题PTA提交列表

题目2

1.实验代码

	int i,a,n,s,vaule;//vaule用来存放a的初值
	s=0;
	scanf("%d%d",&a,&n);
	vaule=a;//给vaule赋值
	for(i=1;i<=n;i++){
		s=s+a;
		a=a*10+vaule;
	}
	printf("s = %d",s);

2.设计思路

  • 第一步:定义五个整形变量i,a,n,s,vaule,其中vaule用来存放a的初值。
  • 第二步:s=0,输入a,n,vaule=a,i=1。
  • 第三步:s=s+a。
  • 第四步:a=a*10+vaule。
  • 第五步:i++。
  • 第六步:循环第三步,直到i大于n。
  • 第七步:输出s。

3.本题调试过程碰到问题及解决办法

  • (1) 本题没有遇到什么问题,主要是a的值如何求出比较困难,但想一会儿就能解决。

4.本题PTA提交列表

题目三

1.实验代码

    int i,n,min,number;//number存放输入数,min用来存放最小值
    scanf("%d",&n);
    scanf("%d",&number);
    min=number;/*初始化min,让它的值为number */
    for(i=1;i<=n-1;i++){
        scanf("%d",&number); 
        if(number<=min)min=number; /*判断number和min的大小关系,选出最小值 */
    }
    printf("min = %d",min);

2.设计思路

  • 第一步:定义四个整数变量i,n,number,min。
  • 第二步:输入n和number, min=number,i=1。
  • 第三步:输入number,如果number小于等于min,那么min=number。
  • 第四步:循环第三步,直到i大于n-1。
  • 第五步:输出min。

3.本题调试过程碰到问题及解决办法

  • (1)本题较为简单,主要是一开始min的取值比较困难,所以错误几次。

4.本题PTA提交列表

题目四

1.实验代码

	int number,i,N,yournumber; //number表示系统随机产生数,yournummber表示猜的数
	scanf("%d%d",&number,&N);
	for(i=1;i<=N;i++){
		scanf("%d",&yournumber);
		if(yournumber<0) {printf("Game Over");//判断yournumber的值是否小于0
		 break;
		}
		else if(yournumber>number) printf("Too big\n");//对比yournumber和number的大小关系
		else if(yournumber<number) printf("Too small\n");
		else if(yournumber==number&&i==1) {printf("Bingo!");
		 break;
		}
		else if(yournumber==number&&i>1&&i<=3) {printf("Lucky You!");
		 break;
		}
		else if(yournumber==number&&i>3) {printf("Good Guess!");
		 break;
		}
	}
	if(yournumber!=number&&i>N) printf("Game Over");

2.设计思路

  • 第一步:定义number,,i,N,yournumber,number用来存放系统产生数,yournumber用来存放猜的数。
  • 第二步:输入number,N,i=1。
  • 第三步:如果yournumber小于0,输出Game Over,并退出循环。
  • 第四步:否则如果yournumber大于number,输出Too bif并还行。
  • 第五步:否则如果yournumber小于number,输出Too small,并还行。
  • 第六步:否则如果yournumber等于number而且i等于1,输出Bingo!,并退出循环。
  • 第七步:否则如果yournumber等于number而且i大于1而且i小于等于3,输出Lucky You!,并退出循环。
  • 第八步:如果yournumber等于number而且i大于3,输出Good Guess!,并退出循环。
  • 第九步:i++。
  • 第十步:循环第三步,直到i大于N。
  • 第十一步:如果yournumber不等于number并且i大于N,输出Game Over。

3.本题调试过程碰到问题及解决办法

  • (1)输入yournumber小于0,循环没有结束,解决方法:在这种情况后面打break
  • (2)审题出错,超过N次结束循环,我第N次也结束了循环
  • (3)错把if(yournumber!=number&&i>N) printf("Game Over");写在循环体里,通过调试发现进不去这个if,发现循环的条件是i小于等于N,找了很久,解决方法:认真审题,将这段写在for外。

4.本题PTA提交列表

二、截图本周题目集的PTA最后排名

三、本周学习总结

1.你学会了什么?

学会了新的循环体,while 以及do-while,格式为 while(进入循环条件){循环体},do{循环体}while(循环条件);。两种区别在于,while会先判断在进入循环,do-while先循环一次在判断。while与do-while 跟for的区别为for只能控制循环次数,而while和do-while适用面更广,本周还学了嵌套循环,用以解决更复杂的问题。对于分支结构,掌握的更加透彻。

2.本周的内容,你还不会什么?

对于嵌套循环的运用,掌握的不够深刻,做起题来还有点吃力,对于带有循环体的题目的算法写的不够好,总是带有主观性。

posted @ 2017-10-31 22:04  你们走啊  阅读(601)  评论(5编辑  收藏  举报