Longjingrap

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

一,PTA实验作业

题目一

1.代码

int N,i;
	double 	h;       //h定义身高
	char sex;           //sex代表性别
	scanf("%d",&N); //N代表查询的用户数
	for(i=0;i<N;i++){
		scanf(" %c%lf",&sex,&h); //输入性别,身高
		if(sex=='F')
		printf("%.2f\n",h*1.09);//性别为女生的情况
	else
		printf("%.2f\n",h/1.09);//性别为男生的情况
		}

2.设计思路

  • (1)定义浮点型变量h代表身高,字符型变量sex代表性别,“F”表示女性、“M”表示男性
  • (2)输入前来查询的用户数N
  • (3)输入性别和身高
  • (4)如sex=='F',输出最佳情侣身高(h*1.09),结果保留两位小数
  • (5)如sex=='M',输出最佳情侣身高(h/1.09),结果保留两位小数
  • (6)如果i<N,循环(3),直到i>=N

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

  • (1)在scanf输入时%c前面未用空格间隔开,导致在输出时回车键被当作数据吸收了,后来看群里面有同学提出来,长知识了。

4.本题PTA提交列表

题目二

1.代码

int a,n,s,i,sum;  //n代表n个a,sum用来存放第I项的数值,s用来存放总数值
	scanf("%d%d",&a,&n);
	s=0;
	sum=0;
	for(i=1;i<=n;i++){
	 sum=sum*10+a; //表示各项的和
	 s=s+sum;           //表示总和

2.设计思路

  • (1)定义变量a,n,s,i,sum,n代表n个a,sum用来存放第I项的数值,s用来存放总数值
  • (2)初始化s=0;sum=0;
  • (3)输入a,n;
  • (4)i<=n进入循环,第i项为sum=sum*10+a,总数值为s=s+sum;
  • (5)i>时循环结束,否则继续循环(4)
  • (6)输出s

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

  • (1)本题主要是理解题目,理解就容易懂了,没有疑难

4.本题PTA提交列表

题目三

1.代码

int n,min,i,number;  //min代表最小值,num表示输入的数值
	scanf("%d",&n);
	min=number;
	if(n>1){
	for(i=1;i<n;i++){
		scanf("%d",&number);
		if(min>number)    //判断两者的大小
		min=number;      //根据条件进行互换
	}
	printf("min = %d",min);}
	else if(n==1){  
		scanf("%d",&number); //当输入值为一个数值的情况
	printf("min = %d",number);}
	else
	printf("no");
	return 0;

2.设计思路

  • (1)定义number表示输入的数值,min代表最小值
  • (2)给min初始值min=number
  • (3)输入number
  • (4)若min>number,则min与number互换数值
  • (5)若min<number,则min保留原来数值
  • (6)当i>=n时输出min,否则继续循环(3)(4)(5)

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

  • (1)本题主要不懂在循环里面进行大小互换,因为之前进行大小比较都是比较大小,而不要求互换,但书本里面有相似的例题,看了例题就懂得了

4.本题PTA提交列表

题目四

1.代码

int num,N,flag;  //N代表猜的次数,num代表系统的数值,yournumber代表自己猜的数值
	int yournumber;
	flag=0;
	int count;
	scanf("%d%d",&num,&N);
	do{
		scanf("%d",&yournumber);
		count++;    //count代表猜的第i次,并根据数据的输入进行累加
		if(yournumber<0){
			printf("Game Over\n");  //小于0的情况
			flag=1;
		}
		else if(yournumber<num){  //小于系统之值的情况
			printf("Too small\n");
		}
		else if(yournumber>num){ //大于系统值的情况
			printf("Too big\n");
		}
		else{
			if(count==1){   //表示第一次猜中
				printf("Bingo!\n");
			}
			else if(count<=3){   //表示在三次在内猜中
				printf("Lucky You!\n");
			}
			else{     //表示大于3次和猜中的输出
				printf("Good Guess!\n");
			}
			flag=1;
		}
		if(count==N){   // 当第i项等于猜的次数时的输出情况
			if(!flag ){
				printf("Game Over\n");
				flag=1;

2.设计思路

  • (1)定义num表示系统的数值,N代表猜的次数,yournumber代表猜的数值,flag来控制循环的继续与结束,count表示第i次猜的数
  • (2)输入系统的值和猜的次数
  • (3)输入猜的值
  • (4)如果yournumber<0,输出Game Over,并结束本次循环
  • (5)如果yournumber<num,输出Too small,并结束本次循环
  • (6)如果yournumber>num,输出Too big,并结束本次循环
  • (7)如果yournumber=num,并且count=1,输出Bingo,并结束本次循环
  • (8)如果yournumber=num,并且count <=3,输出Lucky You,并结束本次循环
  • (9)如果yournumber=num,并且count >3,输出Good Guess,并结束本次循环
  • (10)如果yournumber不等于number并且i等于N,输出Game Over,并结束本次循环
  • (11)否则继续循环(3)(4)(5)(6)(7)(8)(9)(10)

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

  • (1)不懂得如何结束循环,上课后知道可以用break和flag=1,flag=0来结束循环
  • (2)猜中时的次数为1和小于3的情况不懂得分支,请教同学,同学说这样设计太过复杂,但是还是坚持下来了,也懂得了分支里面在分支的应用

4.本题PTA提交列表

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

三,本周学习总结

1.你学会了什么?

  • (1)本周学到了循环结构的应用,还有while和for语句之间的差别
  • (2)学到了提前结束循环的方法
  • (3)也懂得了如何用调试来找出自己的错误在哪里

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

  • (1)镶嵌循环的运用,现在只有参照书本才能勉强进行设计算法和具体编译
  • (2)continue语句老师上课虽然讲过,自己也懂得它代表的意思,但具体编译起来还是得慢慢回想和参考书本

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

  • (1)平时写PTA不懂就翻书,到了考试没有书本,导致最基础的单词都写错
  • (2)不够细心,题目看个大概就开始敲代码,结果也是答案部分正确,
  • (3)被时间转换的那道题卡住,因为不懂得字符:如何输入
  • (4)针对这次考试,我发现了自己的太多问题也学到了很多东西,不够认真,不够细心,也对自己很失望,学到了字符的输入,分支与循环的结合运用。在以后的学习中我会将这些错误改正过来,掌握好所学知识,订个小目标,下次要提前完成考试。
posted on 2017-11-01 20:09  Longjingrap  阅读(343)  评论(1)    收藏  举报