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

一PTA实验作业

题目一 最佳情侣身高

1.实验代码

int N,i;
    double high;       //定义浮点型变量high身高和字符型变量sex性别//
    char sex;         
    scanf("%d",&N); 
    for(i=1;i<=N;i++){
        scanf(" %c%lf",&sex,&high); //输入用户的性别身高//
        if(sex=='F')
           printf("%.2f\n",high*1.09);    //计算输出相应的情侣身高//
        else
           printf("%.2f\n",high/1.09);
        }

2 设计思路

  • 1定义浮点型变量high和字符型变量sex
  • 2输入用户数量
  • 3定义i的起始值为1
  • 4输入用户的性别身高
  • 5如果输入为F,则计算high*1.09并输出
  • 6如果输入不为F,则计算high/1.09并输出
  • 7i=i+1
  • 8循环4 5 6 7当i<=N时结束

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




  • 一开始编程序时对应变量的表示没有表示好,本来就对F,M进行字符型定义,最后却要求浮点型输出,导致错误。
  • 对于字符型输入输出的理解不够扎实,没有考虑到空格与回车键对字符型变量赋值的影响,导致应有的字符型变量没有输进去,答案错误。

4.本题PTA提交列表

题目二 特殊a串数列求和

1.实验代码

int a,n,sum,i;                       //定义整型变量a,n,sum,i//
  scanf("%d %d",&a,&n);    //输入a,n的值//
  sum=0;                               
  for(i=1;i<=n;i++)               
   {
     sum=sum*10+a*i;         //以for循环的形式计算a+aa...(n个a)的值//
   }
    printf("s = %d",sum);

2 设计思路

  • 定义整型变量a,n,sum,i
  • 输入a,n的值
  • 定义sum的初始值为0,i为1
  • 计算sum=sum* 10+a* i,i++
  • 循环第4步,直到i>n退出
  • 输出s的值

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



一开始编程时没有思考好,所用公式错误,用dev-c++运行时发现数据错误
后几次改正自己思考的编程不足,随后通过别人的帮助重新思考式子之间的关系编写。

4.本题PTA提交列表


题目三 找出最小值

1.实验代码

#include<stdio.h>
int main()
{
  int n,number,i,min;     //n个整数,number表示输入的数值//
  scanf("%d %d",&n,&number);
  min=number;            //对min赋值//
  for(i=1;i<=n;i++){
    scanf("%d",&number);
    if(min>number)      //不断把更小的值赋给min//
    min=number;
    else
    min=min;
  }
  printf("min = %d",min);
  return 0;
}

2 设计思路

  • 1定义整型变量n,number,i,min
  • 2输入n,number的值
  • 3min=number,i=1
  • 4如果min>number,则min=number,反之,min=min
  • 5再次输入number的值,i++
  • 6循环3 4 5,直到i>n结束
  • 7输出min的值

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


写代码时忘记在里面弄一个scanf语句能不断输入number的值,在pta输出时printf中的空格没弄好也导致错误

4.本题PTA提交列表

题目四 猜数字游戏

1.实验代码

#include<stdio.h>
int main() 
{
 int a,b,count,n; 
 scanf("%d %d",&a,&n);    //输入随机数a以及猜测的最大次数n//
  int flag = 0;                       //定义一个中间变量flag//
  for (count=1;count<= n;count++) 
  {scanf("%d",&b);          //输入猜测b//
   if (b<0) break;              //输入负数结束程序//
   else if (b>a)
printf("Too big\n");          //输入的数较大,输出Too big,小为Too small//
   else if (b<a) 
   printf("Too small\n");  
   else{ 
      if (count==1) {        //输一次就中,输出Bingo//
       flag = 1; 
      printf("Bingo!\n");
      break; }
     if ( count>1&&count<=3){    //三次内中,Lucky You!//
      flag = 1;
       printf("Lucky You!\n");
       break;} 
     if (count>3){
	 flag = 1;
	 printf("Good Guess!\n");//三次后在允许内猜中Good Guess!//
	 break; } } } 
     if (flag == 0) 
         printf("Game Over\n"); //跳出循环输出Game Over//
     return 0;
 }

2 设计思路

  • 1定义整型变量a,b,count,n,flag
  • 2输入a,n的值
  • 3 flag=0
  • 4输入猜测的值b
  • 5如果b<0,Game Over
  • 6 b>a,Too big
  • 7 b<a,Too small
  • 8 count=1时,flag=1,b=a,输出Bingo!,count=1,2时,flag=2,输出Lucky You!,count>3&&count<=n,flag=1,输出Good Guess!
  • 9 循环4 5 6 7,并输出相应的要求,若在count<=n内不满足a=b,则结束循环

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


在编写时没有很好的符合所有条件,一开始部分正确
调试方面该题不知道怎么入手,调整后总是部分正确,后在同学的建议下添加flag作为辅助量才正确。

4.本题PTA提交列表

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

三、本周学习总结

1.你学会了什么?

  • 嵌套循环的简单理解使用,在知道循环次数时多用for,其它多用while或者do while
  • 简单的调试,添加查看输入变量调试,使用//或/* */注释
  • break使用是结束循环,continue是跳过后面语句继续循环,continue只用于循环,break还可用于switch
  • 编程时用flag等其他中间量

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

  • 对于一些嵌套的逻辑思维不够,一些问题的编程会将其复杂化或一开始无从下手
  • 对于do while语句使用不够熟练,continue,break使用不够灵活,一些语句在循环体内外的放置不够清晰,自己对一些经典例题还应好好揣摩,多编程
  • 对于Dev-c++的调试还不够了解熟练,对于调试计算值以外的错误有时会不知道怎么调试

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

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

  • 第一题时自己忘记整型之间的计算结果也为整型,导致一开始部分正确
  • 第三题时对于中午十二点的描述没有很好的对应题目要求,造成部分正确
  • 第四题时自己对switch语句的运用不够熟练,case后记得加空格,switch变量弄好后要记得用大括号把case情况括号起来
  • 最后一题自己的时间不够来不及提交,自己打代码还不够熟练,基础不够扎实

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

  • 学会用Dev-c++调试,查找错误,减少时间
  • 多翻课本,巩固基础,减少不必要的错误

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

  • 对自己的上机考试结果不满意
  • 提高自己对Dev-C++调试的了解熟练程度
  • 多编程,提高自己的速度和思维敏感度
  • 多记录自己的错误,尽量不再犯同样的错误
posted @ 2017-11-02 22:22  hahaha233  阅读(285)  评论(5编辑  收藏  举报