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

一、PTA实验作业

题目1

1.实验代码

        int n,i;                 
	double h;             //h储存身高,n储存输入次数,i储存循环变量
	char sex;            //sex储存性别
	scanf("%d",&n);
	for(i=1;i<=n;i++){                           //循环输入
		scanf("\n%c%lf",&sex,&h);
		if(sex=='M'){                          //性别判断
			h=h/1.09;
			printf("%.2f\n",h);
		}
		else{
			h=h*1.09;
			printf("%.2f\n",h);

2 设计思路

  • 1.定义整型变量n储存输入次数,浮型变量h储存身高,字符型变量sex储存性别
  • 2 输入输入次数
  • 3 输入性别和身高,i=1
  • 4 判断性别,若为M,h=h/1.09,输出身高保留两位小数
  • 5 i=i+1
  • 6 重复步骤3,直到i大于n

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

  • 1.编译错误本来是想定义一个hi的变量来保存不同输入的输出身高,后面发现没有必要,在c语言中也是不可行的。
  • 2.答案错误不小心将printf语句放在for循环中,导致错误,经过调试后发现printf语句多次运行,改正错误。

4.本题PTA提交列表

题目2

1.实验代码

	int a,i,n,sum;        
	scanf("%d%d",&a,&n);
	sum=0;
	for(i=1;i<=n;i++){
		sum=a*i*pow(10,n-i)+sum;                         //循环加a串数列每一位的和来得出结果
	}
	printf("s = %d",sum);

2 设计思路

  • 1.定义整形变量a储存正整数,i储存循环变量,n储存a的最大个数,sum储存字符串之和.
  • 2.输入a,和最大位数n,sum=0,i=1
  • 3.sum=aipow(10,n-i)+sum;
  • 4.i=i+1
  • 5.重复步骤3直到i大于n
  • 6.输出sum

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

  • 本体无误
  • 变量监测:

4.本题PTA提交列表

题目3

1.实验代码

        int number1,number2,n,i,min;           //number1,number2存放输入数,min存放最小值
	scanf("%d",&n);
	scanf("%d",&number1);
	min=number1;
	for(i=1;i<n;i++){
		scanf("%d",&number2);
		if(number2<number1&&number2<=min){            //比较number1,number2,min的关系,使min等于三数的最小值
			min=number2;
		}
		else if(number2>=number1&&number1<=min){
			min=number1;
		}
		number1=number2;             //将number2的数存放number1,以便让number2存下个数
	}
	printf("min = %d\n",min);

2 设计思路

  • 1.定义整形变量number1,number2存放输入数,min存放最小值,n存放输入个数
  • 2.输入n和number1
  • 3.min=number1;,i=1
  • 4.输入number2,若number2<number1且number2<=min,min=number2;否则如果number2>=number1且number1<=min,min=number1;
  • 5.number1=number2
  • 6.i++
  • 7.重复步骤4直到i大于n

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

  • 答案错误,通过变量监测找出问题至此发现问题,由于number1,number2没有和min比较产生问题

4.本题PTA提交列表

题目4

1.实验代码

	int your,mine,right,times,n,i;        //your存放猜的数,mine存放随机数,right存放正确次数,time存放猜的次数
	scanf("%d%d",&mine,&n);
	times=right=0;                ///变量初始化
	for(i=1;i<=n;i++){
		scanf("%d",&your);
		if(your<0){                 
			printf("Game Over\n");
			return 0;
		}
		else if(your>mine){
			printf("Too big\n");
			times++;
		}
		else if(your<mine){
			printf("Too small\n");
			times++;
		}
		else{
			times++;
			right++;
			break;
		}
	}
	if(times==1&&right==1){           //判断time和right的关系并输出相应语句
		printf("Bingo!\n");
	}
	else if(times<=3&&right==1){
		printf("Lucky You!\n");
	}
	else if(right==0){
		printf("Game Over");
	}
	else{
		printf("Good Guess!");
	}

2 设计思路

  • 1.定义整形变量your存放猜的数,mine存放随机数,right存放正确次数,time存放猜的次数
  • 2.输入随机数your和可猜的次数n
  • 3.输入猜的数mine
  • 4.若mine<0结束程序,若your>mine,输出Too big,time++,若mine>your,time++,输出Too small,否则time++,right++,跳出循环
  • 5.i++
  • 6重复步骤3直到i>n
  • 7.若times1且right1,输出Bingo!若times<=3且right1,输出Lucky You!,若right0,输出Game Over,否则输出Good Guess!

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

  • 1没有想到用time和right储存输入次数和正确次数,导致思路很乱,后来看了书上例题才知道

4.本题PTA提交列表

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

三、本周学习总结

1.你学会了什么?

  • 1.学会了while语句,for语句,do while语句,主要区别是当循环次数为0时,do while执行一次,其他语句不执行
  • 2.还学会了嵌套循环,外循环执行一次内循环执行一轮
  • 3.还懂得了用printf语句来调试程序

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

  • 嵌套循环很难,掌握不容易,每道题都要想很久,还需要多加练习
  • 对于三种循环语句,只熟悉for语句,对其他两个语句不够熟练
  • 用监测变量的方法来调试程序不够熟

3.分支结构上机考试总结

  • 忘记了fabs与abs的区别导致第一题做错,从这次考试中我知道我对书本内容不够熟悉,有空应该多回归课本,不应该忽略课本的知识,以后更应该多调试程序,增加熟练度,对自己的成绩不是很满意吧,下次努力吧
posted @ 2017-11-01 23:29  Airoure  阅读(356)  评论(4编辑  收藏  举报