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

一、PTA实验作业

题目一

1.实验代码

    int i,N;
    char sex;    //sex为计算者性别
    double height;    //height为计算者身高
    scanf("%d",&N);
    for(i=1;i<=N;i++){
        scanf("\n%c%lf",&sex,&height);       //\n吸收换行符
        if(sex=='M')
            printf("%.2f\n",height/1.09);
        else
            printf("%.2f\n",height*1.09);
    }

2 设计思路

  • 第一步:定义变量,sex放性别,height放身高。
  • 第二步:输入N。
  • 第三步:i=1。
  • 第四步:输入sex,height。
  • 第五步:如果sex=='M',则输出height/1.09,并保留两位小数。
  • 第六步:否则输出height*1.09,并保留两位小数。

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

  • (1).在运行过程中发现循环第二次不能输入数据,通过调试监测sex,我发现循环会直接跳到第二步去。解决方法:通过输入\n存放换行符,让数据正确存放。
  • (2).在做题过程中不知道怎么按题目要求输出,通过尝试发现也可以不用按照输出格式来。

4.本题PTA提交列表

题目二

1.实验代码

        int i,a,n;
	scanf("%d%d",&a,&n);
	int k=a,s=0;
	for(i=1;i<=n-1;i++){
		a*=10;
		a+=k;
		s+=a;
	}
	printf("s = %d",s+k);

2 设计思路

  • 第一步:定义变量i,a,n,s,k。
  • 第二步:k=a,s=0。
  • 第三步:a=a*10。
  • 第四步:a=a+k。
  • 第五步:s=s+a。
  • 第六步:重复第三步,直到i大于n-1。
  • 第七步:输出s+k。

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

  • (1).刚开始时还不懂题意,无法表达a于n的关系,但之后就明白了。
  • (2).没有对s赋值导致结果不对,解决方法就是对s赋值为0。

4.本题PTA提交列表

题目三

1.实验代码

	int i,N,num,min;
	scanf("%d",&N);
	if(N>1){
	for(i=1;i<=N;i++){
		scanf("%d",&num);
		if(min>num)
			min=num;
	}
	printf("min = %d",min);}
	else if(N==1){
		scanf("%d",&num);
		printf("min = %d",num);}
	else
		printf("no");

2 设计思路

  • 第一步:定义变量i,N,num,min,其中num放输入的数,min放最小数。
  • 第二步:输入N。
  • 第三步:如果N大于1,输入num,如果min大于num,则min=num。
  • 第四步:循环第三步,直到i大于N。
  • 第五步:如果N==1,min=num。
  • 第六步:否则,输出no。

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

  • 没有考虑到N不大于1时的情况,解决办法是加入N不大于1时的几种情况。

4.本题PTA提交列表

题目三

1.实验代码

	int i,N,mynumber,yournumber;
	scanf("%d%d",&mynumber,&N);
	for(i=1;i<=N;i++){
		scanf("%d",&yournumber);
		if(yournumber<0){
		printf("Game Over");break;}
		else if(yournumber>mynumber)
		printf("Too big\n");
		else if(yournumber<mynumber)
		printf("Too small\n");
		else if(yournumber==mynumber&&i==1){
		printf("Bingo!\n");break;}
		else if(yournumber==mynumber&&i>1&&i<=3){
		printf("Lucky You!\n");break;}
		else if(yournumber==mynumber&&i>3&&i<=N){
		printf("Good Guess!\n");break;}
	}
	if(yournumber!=mynumber&&i>N)
		printf("Game Over\n");

2 设计思路

  • 第一步:定义变量i,N,mynum放被猜的数,yournumber放猜的数。
  • 第二步:输入mynumber,N。
  • 第三步:如果yournumber小于0,输出Game Over,结束循环。
  • 第四步:如果yournumber大于number,输出Too big并换行。
  • 第五步:如果yournumber小于number,输出Too small并换行。
  • 第六步:如果yournumber等于number且i等于1,输出Bingo!,并结束循环。
  • 第七步:如果yournumber等于number且i大于1而且i小于等于3,输出Lucky You!,并结束循环。
  • 第八步:如果yournumber等于number且i大于3,输出Good Guess!,并结束循环。
  • 第九步:重复第三步,直到i大于N。
  • 第十步:如果yournumber不等于number并且i大于N,则输出Game Over。

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

  • 这道题还是比较简单的,调试过程中会出现格式错误等小问题,但并不影响做题。

4.本题PTA提交列表

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

三、本周学习总结

1.你学会了什么?

  • 学到了新的循环体,while 以及do-while,以及之前循环体的一些区别,while会先判断再进入循环,do-while先循环一次再判断。
  • 还学到了嵌套循环,还有一些格式的输入,比如\n可以吸收字符。

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

  • 不是能够很好的理解PTA上面的题意,嵌套循环理解不够深入,代码格式不太整洁美观,有时会多绕弯路。

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

  • 一些数学函数表达式不会用。
  • 输入时要空格,严格按照题目要求输入。
posted @ 2017-11-01 22:13  做人要有疯度  阅读(270)  评论(3编辑  收藏  举报