PTA实验作业

题目1

1.实验代码

	int i,N;                           //定义N存放输入整数的个数// 
    double height1,height2;   //定义height1存放输出的身高,height2存放输入的身高//
	char ch1,ch2;               //定义ch1、ch2存放输入的字符//
	scanf("%d",&N);           //输入正整数N//
	for(i=1;i<=N;i++)
	{
	ch1=getchar();
	ch2=getchar();
	scanf("%lf",&height2); 
	switch(ch2)
	{
		case 'F':
		height1=height2*1.09;
		printf("%.2f\n",height1);  //保留两位小数输出男方的最佳身高//
		break;
			
		case 'M':
		height1=height2/1.09;
		printf("%.2f\n",height1);  //保留两位小数输出女方的最佳身高//
		break;   }

2.设计思路

  • 第一步:定义两个整数变量i和N,其中N存放用户数。定义两个双精度浮点变量height1和height2,两者均存放用户的体重。定义两个字符型变量ch1和ch2。
  • 第二步:i=1
  • 第三步:输入height2,对字符型变量ch2使用switch语法,当ch2为‘F’时,height1=height2*1.09,然后跳出switch语法;当ch2=‘M’时,height1=height2/1.09,然后跳出switch语法
  • 第四步:i=i+1,重复第二步,直到i>N跳出循环
  • 第五步:保留两位小数输出height1

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

  • 遇到的问题:
    只定义了一个字符型变量ch,每次能输入的字符只有一个,与题意的两个不符合,导致答案错误
  • 解决方法:
    多添加一个字符型变量就可以输出与题意相符的两个字符型变量了

4.本题PTA提交列表

题目2

1.实验代码

	int i,a,n,s;          //定义a存放输入的数,n存放a的个数,s存放所有a代数式的和//
	s=0;                  //初始化s=0//
	scanf("%d%d",&a,&n);     //输入a,n//
	for(i=1;i<=n;i++)   
	{
		s=10*s+a*i;     //计算所有a的代数和s//
	}
	printf("s = %d",s);   //输出s//

2.实验思路

  • 第一步:定义四个整数变量i,a,n,s,其中a存放输入的数,n存放a的个数,s存放所有a的总和
  • 第二步:初始化a=0
  • 第三步:输入a和n
  • 第四步:i=1,
  • 第五步:s=10s+ai
  • 第六步:i=i+1,重复第四步,直到不满足条件跳出循环
  • 第七步:输出s

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

  • 遇到的问题:本题没有碰到什么疑难点
  • 解决方法:

4.本题提交列表

题目3

1.实验代码

	int integer,n,i,min;   //定义integer存放输入的整数,n存放输入整数的个数,min存放输入整数的最小值//
 	int a=5000;             //初始化a=5000//
	scanf("%d",&n);      //输入n//
	for(i=1;i<=n;i++)
	{
		scanf("%d",&integer);    //输入integer//
		if(a>=integer&&n!=1)    //判断a和integer的大小与n的值//
		{
			a=integer;
			min=integer;
		}
	}
	if(n==1)
	{
		min=integer;
	}
	printf("min = %d",min);   //输出min的值//

2.设计思路

  • 第一步:定义四个整数变量i,n,integer,min,其中integer存放输入的整数,n存放输入的整数的个数,min存放输入的数的最小值
  • 第二步:初始化a=5000
  • 第三步:输入n
  • 第四步:i=1
  • 第五步:输入integer
  • 第六步:判断if(a>=integer&&n!=1)是否成立,若成立,a=integer,min=integer;再判断if(n==1)是否成立,若成立,min=integer
  • 第七步: i=i+1,重复第四步,直到i>n跳出循环
  • 第八步:输出min

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

4.本题提交列表

题目4

1.实验代码

	int time,i,number,random,N;
	scanf("%d%d",&random,&N);   //输入随机数random和个数//
	for(i=1;i<=N+2;i++)
	{
	   scanf("%d",&number);     //输入我们猜的数number//
	   if(number<0)                  //判断number的值//
	   {
	      printf("Game Over\n"); 
	      break;     //如果number小于0,跳出循环//
	   }
	   else if(number==random)
	   {
	   	  time++;
	   	  break;     //如果number等于random,跳出循环//
	   }
	   else if(number<random)
	   {
	   	  time++;
	   	  printf("Too small\n");
	   }
	   else
	   {
	   	  time++;
	   	  printf("Too big\n");
	   }
	}
	if(time==1&&number>0)
	{
		printf("Bingo!\n");
	}
	else if(time<=3&&number>0)
	{
		printf("Lucky You!\n");
	}
	else if(time>=3&&time==N&&number>0) //如果time大于等于3且等于N和number大于0的条件成立,输出Good Guess!//
	{
		printf("Good Guess!\n");
	}
	else if(time>N)
	{
		printf("Game Over\n");
	}

2.设计思路

  • 第一步:定义五个整数变量time存放猜的次数,i,number存放输入猜的数,random存放一开始输入的随机数,N存放猜的最大次数
  • 第二步:输入random,N
  • 第三步:i=1
  • 第四步:输入number,判断number的值,若number<0,输出Game Over\n;若number==random,输出time++,break;若number<random,time++,输出Too small\n;否则,time++,输出Too big\n
  • 第五步:i=i+1,重复第三步,当i>N+2时跳出循环
  • 第六步:判断time的值,若time&&number>0,输出Bingo!\n;若time<=3&&number>0,输出Lucky You!\n;若time>=3&&timeN&&number>0,输出Good Guess!\n;若time>N,输出Game over\n

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

4.本题提交列表

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

三、本周学习总结

1.你学会了什么?

  • 1.我学会了循环结构的语法,如for、while、do while语法,还学会了如何调试程序改正自己的错误
  • 2.对字符型变量有了更清晰的认识,如输入要%c,输入字符要加单引号

2.你还不会什么?

  • 嵌套循环的知识没有掌握好,pta上的嵌套循环题目大多都不会做

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

  • 1.错的方面都是小细节,字符型变量用scanf输入要%c我写成了%d导致编译错误,一直找不出错误点
  • 2.后来脑子灵光一闪突然想到定义字符型变量是用char,不是int、double之类的
  • 3.不满意,我希望下次能在时限内完成,再下次能够提前走出考场。主要还是细心的问题,本次上机考试题目调试了将近一个小时,浪费了许多时间也没把问题解决,希望以后能将这个问题逐渐解决
 posted on 2017-10-29 15:51  Ljy1999  阅读(266)  评论(8编辑  收藏  举报