yob。

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

一、PTA实验作业

题目1

1.实验代码

int N,i;/*N为前来查询的用户数*/
  double meter,other;/*meter为输入用户的身高;other是另一半的身高*/
  char sex;
  scanf("%d",&N);
  for(i=1;i<=N;i++){
  scanf(" %c%lf",&sex,&meter);
    switch (sex){
      case 'F':
      other=meter*1.09;
      break;
      case 'M':
      other=meter/1.09;
      break;
	  }
	   printf("%.2f\n",other);
  }

2 设计思路

  • 1.定义整型变量N用于表示前来查询的用户数,i用来累记循环次数,实型变量meter和other用来表示输入的身高和另一半的身高,字符型变量sex表示性别
  • 2.输入N值
  • 3.令i=1,当i小于等于N时执行循环。
  • 4.输入性别及其身高
  • 5.判断性别,若为F,则other=meter*1.09;若为M,则other=meter/1.09;
  • 6.输出other

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

  • 1.
  • 2.将输入meter和sex的语句放在了循环之外,导致只有四分之一结果正确,请教同学后问题得以解决
  • 3.将字符和数字一起输入时,字符前面没有加空格也没有用专门的字符输入函数,本想输入两行结果,输入一行请教同学后明白是因为回车键的原因,但还不是太懂
  • 4.定义变量和设置循环语句时思路有些不清晰,看着书来完成。

4.本题PTA提交列表

题目2

1.实验代码

 int a,n,i;/*a为整数,n为循环总次数,i用来累记循环*/
  double pi,s;/*pi用于表示每一项,s用于累加和*/
  scanf("%d%d",&a,&n);
  pi=a;
  s=0;
  for(i=1;i<=n;i++){
  s=s+pi;
  pi=pi*10+a;
 
  }
  printf("s = %.0f",s);

2.设计思路

  • 1.定义整型变量a为输入的整数,n为循环总次数,i为循环变量;实型变量pi用于表示每一项,s用于累加和
  • 2.输入a和n
  • 3.令pi初始值等于a,s=0
  • 4.当i小于等于n时执行循环,s=s+pi,pi=pi*10+a
  • 5.输出s=

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

  • 1.数学式表达错误,如上图,错把aaa以为是a的立方,导致结果部分正确,
  • 2.循环条件有点糊涂
  • 3.给pi最初的赋值是0,而不是a

4.本题PTA提交列表

题目3:

1.实验代码

int n,min,mark,i;/*n代表输入数的个数,mark代表输入的一列数,i用来计算循环次数,min表示最小值*/
  scanf("%d",&n);
  scanf("%d",&mark);
  min=mark;
  for(i=1;i<n;i++){
   scanf("%d",&mark);
    if(min>mark)
    min=mark;
  }
  printf("min = %d\n",min);

2 设计思路

  • 1.定义整型变量n表示要输入的整数个数,min表示最小值,mark表示输入的一列整数,i用于循环条件的控制
  • 2.输入n
  • 3.输入一列整数
  • 4.令min=mark
  • 5.令i=1,当i大于等于n时,直接输出min=
  • 6.当i小于n时,输入一列整数,若min大于mark,则min=mark,最后按题目要求格式输出

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

...

以上为答案正确后调试过程,遇到的问题:没有把n和mark分开输入,导致用devc调试时按enter键一直都是调到下一行而不是出结果,看了一些例题后改正。

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){
    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>=4&&i<=N){printf("Good Guess!\n");break;}
      if(i>1&&i<=3){printf("Lucky You!\n");break;}
    }
    else{
      printf("Too small\n");
    }
    }
     if(yournumber>=0&&yournumber!=mynumber){
      printf("Game Over\n");}

2 设计思路

  • 1.定义整型变量N表示可以采得最多次数,i是循环变量,mynumber为随机数,yournumber为用户输入的数字
  • 2.输入随机数mynumber和可以猜的最多次数N
  • 3.当i大于N时,判断若yournumber>=0&&yournumber!=mynumber,输出game over
  • 4.当i小于等于N时循环,若yournumber<0,则输出game over并结束循环
  • 5.若用户输入等于随机数,若i=1,输出bingo;若i大于等于4且小于等于N,输出goodguess;若i在1到3之间,输出luck you
  • 6.若用户输入小于随机数则输出too small
  • 7.若用户输入大于随机数。则输出toobig。

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

  • 1.循环条件的设定,最开始用了while语句但一直不正确,后改用for语句
  • 2.break的使用
  • 3.判断过程的明细

4.本题PTA提交列表

二、本次PTA提交排名

三、本周学习总结

1.你学会了什么?

  • 1.for循环结构的使用,第一条语句对循环变量赋初值,第二条语句为循环条件,若为真的话先执行循环体语句再执行第三条语句
  • 2.字符型变量和其他变量一起输入时,字符型变量需要用其特定的输入函数或者在%c前加空格,防止enter被执行
  • 3.例如本博客第一题,要循环的变量的输入应包括在循环语句中,不能放在循环语句之前
  • 4.若题目指定循环次数用for循环语句,未指定用while循环,若需要先进入循环则用do-while,选择语句前要先判断清楚。

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

  • 1.调试。遇到问题后无法解决。也不是很会调试,调试时变量走的不是自己想走的路或者变量走的路线和想法一致,但结果就是不对,这时候就不知道怎么办了,总是要请教别人或参考一些辅助答案
  • 2.cotinue语句没有在题目中用过,感觉不是很会

3.你碰到什么困难,打算如何解决?

  • 1.学的比较慢,感觉进度和别人差了好大一截,多抽空闲时间敲代码,不懂就问
  • 2.各种循环语句不是很熟悉,再多分析下课本例题,对做过的题目也要经常温习
  • 3.感觉真的学会了,但在写题目时就问题百出,还是需要多练习吧
  • 4.思考问题较慢,写pta要花大量时间,结果也不一定能写完,改正平时写作业时的不好习惯,养成时间意识。

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

哪些地方错了,为什么?

  • 1.第一题部分正确,第五题答案全部错误。第一题没有做好精度控制,·忘了整型除以整型只能得整型,绝对值函数忘记怎么写,除法运算时分子分母位置弄错。因为平时做题习惯不好,做题时很磨蹭,在上机考试的时候就无法抓紧时间来完成;上课有些不认真听讲,错过了很多必要的小细节;不会很好地利用调试工具

后续要怎么找程序错误?

  • 2.一步步调试,或者利用运行结果和自己理想结果进行比较,利用printf语句检查错误

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

  • 3.不是很满意,应当对平时的错误及时进行总结,在平时遇到不懂的地方一定要想办法问老师同学或者自己查资料把它弄明白并牢牢记住;平时做题要把握时间,给自己规定时间,独立完成,过后再查阅资料或请教别人。多动手,做过的题目也可以抽时间再做一次。好好预习,上课认真听讲,认真做笔记。

posted on 2017-11-02 15:16  emmmm。。。  阅读(282)  评论(7编辑  收藏  举报

导航