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

一、PTA实验作业

题目1

1.实验代码

    int i,N;//N为查询用户数 
    double high,height;//high表示查询用户身高height表示另一半身高 
	char sex;//sex表示性别 
	scanf("%d",&N);
	for(i=1;i<=N;i++){
	 scanf(" %c%lf",&sex,&high);
     switch(sex)
	{  
	case 'F' :
		height=high*1.09;		
		break;
	case 'M' :
		height=high*1.0/1.09;
		
		break;
	}
	printf("%.2f\n",height);
}

2 设计思路

  • 1.定义两个整型变量i,N,N为查询用户数。再定义两个双精度浮点型变量high,height,high表示查询用户身高height表示另一半身高,再定义一个字符型变量sex表示性别。
  • 2.输入要查询的用户数N。
  • 3.输入查询用户的性别,身高。
  • 4.如果输入性别为F,height=high*1.09;结束循环;
  • 5.如果输入性别为M,height=high*1.0/1.09;结束循环。
  • 6.重复步骤3,4,5直到输入用户数大于N。
  • 7.输出height。

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

  • 不知道为什么第一次打出的程序有三个输出,输入也没有办法一次输入两个用户的数据。
    解决办法:我的这道题没有办法调试,后来是问了同学,同学说scanf语句不能放到循环的最后,改过来之后就对了。

4.本题PTA提交列表

题目2

1.实验代码

int i,n,number,sum,item,b;//number表示要输入的数字a,sum表示和,item表示第n项的值。
	scanf("%d%d",&number,&n);
	sum=0;
	b=number;
	for(i=1;i<=n;i++){
		item=b;
		b=b*10+number;
		sum=sum+item;//累加和
	}
	printf("s = %d",sum);

2 设计思路

  • 1.定义六个整型变量i,n,number,sum,item,b。number表示要输入的数字a,sum表示和,item表示第n项的值。
  • 2.输入a,number.
  • 3.赋初值sum=0,b=number.
  • 4.item=b,b=b*10+number,sum=sum+item.
  • 5.重复步骤4,直到输入的a的位数大于n.
  • 6.输出结果sum= 。

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

  • 1.不知道aa, aaa,到底该怎么样用计算式表达出来。
    解决办法:一开始想用item=number*(pow(10,i))/10+number,但是根据运算结果和调试过程来看这个式子是错误的,后来去百度了一下借鉴别人的做法来表示a, aa.
  • 2.忘记给sum赋初值,导致每次运行结果都比正确结果多1
    解决办法:用devc调试发现后解决的。

4.本题PTA提交列表

题目3: 找出最小值

1.实验代码

int i,n,number,min;//n表示输入数据的个数,number表示输入的正整数,min表示最小值
	scanf("%d",&n);
	scanf("%d",&number);
	min=number;
	for(i=1;i<n;i++){
	scanf("%d",&number);
	if(number<min){
		min=number;
	}
}
    printf("min = %d",min); 

2 设计思路

  • 1.定义四个整型变量i,n,numberr,min.n表示输入数据的个数,number表示输入的正整数,min表示最小值
  • 2.输入n,number.
  • 3.先让min=number.
  • 4.再输入一个number。
  • 5.如果number<min,则number=min,否则min的值不变。
  • 6.重复步骤3,4,5直到number输完为止。
  • 7.输出min.

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

  • 语句有进入循环,但是却没有办法进行大小比较,最小值永远都是一开始赋给min的初值。
  • 解决办法:当时也不知道怎么解决这个问题,然后突发奇想再加一个scanf,莫名奇妙就对了。

4.本题PTA提交列表

题目4: 猜数字游戏

1.实验代码

int n,i,mynumber,yournumber;//n表示可以猜测的最多次数,i表示用户猜的次数,mynumber表示随机数,yournumber表示用户输入的数字
  scanf("%d%d",&mynumber,&n);
  for(i=1;i<=n;i++)
{
  scanf("%d",&yournumber);
  if(yournumber<0){  //用户输入数字小于0时
    printf("Game Over\n");break;
  }
    if(yournumber>mynumber){
      printf("Too big\n");
    }
   else if(yournumber==mynumber){
      if(i==1){printf("Bingo!\n");
      break;
      }
      if(i>1&&i<=3){printf("Lucky You!\n");
      break;
      }
      if(i>=4&&i<=n){printf("Good Guess!\n");
      break;
      }
      
    }
    else{
      printf("Too small\n");
    }
    }
     if(yournumber>=0&&yournumber!=mynumber){
      printf("Game Over\n");}

2 设计思路

  • 1.先定义四个变量n表示可以猜测的最多次数,i表示用户猜的次数,mynumber表示随机数,yournumber表示用户输入的数字.
  • 2.如果用户输入数字小于0,输出Game Over。
  • 3.如果用户输入数字大于0,且输入数字大于随机数,输出Too big
  • 4.如果用户输入数字大于0,且输入数字大于随机数,输出Too small
  • 5.如果用户输入数字大于0,且输入数字等于随机数,并且只输入了一次,输出Bingo!
  • 6.如果用户输入数字大于0,且输入数字等于随机数,并且输入次数大于一小于三,输出Lucky You!
  • 7.如果用户输入数字大于0,且输入数字等于随机数,并且输入次数大于三小于n,输出Good Guess!
  • 8.如果用户输入数字大于0,且输入数字等于随机数,并且输入次数大于n,输出Game Over。
  • 9.重复步骤2,3,4,5,6,7,8,直到程序有输出。

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

  • 1.一开始将输入数字小于0,以及输入次数大于n的情况放在一条语句中,导致错误。 解决办法:将这两种情况分开讨论就对了。
  • 2.在输入数字大于随机数时紧接着用if-else 语句判断输入数是否小于随机数,导致每次输入数等于输出数时都输出Too small Good Guess! 解决办法:用devc调试发现如果还是要使用if-else语句,只要将TOO small. 的情况放到最后讨论就好。

4.本题PTA提交列表

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

PTA排名

三、本周学习总结

1.你学会了什么?

  • 1.对用devc调试来解决问题熟练了一点,比如这次的a+aa+aaa的值,调试到某一步时可以明显看出是这一步出了问题才导致结果错误,因为数学式每一步的结果都很确定,这类问题的调试会一点了。
  • 2.之前一直不知道putchar到底是用来干嘛的,,,,但是现在至少知道了它可以让输出结果整个换行。就像让average = 71.2 count = 4,变成
    average = 71.2
    count = 4

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

  • 1.关于调试还是有很多问题不明白,就像找出最小值那题,明明语句有进入循环,但是就是没有进行大小比较,这个时候就不知道要怎么办了,还有某些时候语句调试时没办法进入循环,不知道是不是断点设错了,不是很明白。
  • 2.现在一直用for语句做题,对于新学的while,do-while 语句一点也不熟练,所以感觉现在还是需要多练练,多做题。
  • 3.平时很多语法,知识点都会了,但是离开课本就不行,不看书连switch后面要加个大括号都可能忘记。

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

(1)哪些地方错了,为什么?

  • 1.还是太依懒课本,没有课本连有些很简单的语句的基本语法都没有记住。就像switch后面是有大括号的都忘记了。
  • 2.时间分配不合理,在前面有一道题怎么调试都没有对,就一直在调试那一题,导致后面时间不够题目都没有看清就敲代码,结果当然是对不了的。

(2)后续要怎么找程序错误?

  • 暂时要借助devc调试,在调试之前会先看看有没有逻辑上的错误,有时可能要请教同学来找程序错误。

(3)对自己成绩满意么?不满意的话要怎么改进?

  • 非常不满意,我本来觉得自己的C语言或许学的不是那么好,但是也没有那么差,但是离开课本以后我发现自己真的没有办法单独写程序,所以以后在写程序时会尽量脱离课本写,实在不会再看一下课本,不然再这么依赖课本,以后会更麻烦。
posted @ 2017-11-02 19:40  晗光凡影  阅读(306)  评论(4编辑  收藏  举报