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

本文总结了PTA平台上的编程实验作业,包括情侣最佳身高计算、数字序列求和等四个编程题目,详细介绍了每道题目的代码实现、设计思路、调试过程中遇到的问题及其解决办法。

一、PTA实验作业

题目1

1.实验代码

    int i,N;
    double height;
    char gender;/*定义变量gender表示性别*/
    scanf("%d",&N);
    for(i=1;i<=N;i++){/*用来循环输入数据,判断并输出所要数据 */
        getchar();
        scanf("%c%lf",&gender,&height);
        if(gender=='F'){/*判断性别*/
        printf("%.2f\n",height*1.09);}
        else  {
        printf("%.2f\n",height/1.09); 
     }
}

2 设计思路

  • 第一步:定义变量i,N,height,gender
  • 第二步:输入N
  • 第三步:输入gender,height
  • 第四步:判断gender是否为F,如果是,执行第五步,否则执行第六步
  • 第五步:输出情侣的最佳身高为height*1.09
  • 第六步:输出情侣的最佳身高为height/1.09
  • 第七步:重复第三步,直到i>N

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

1232126-20171027211747242-1832010938.png
发现只能输入一个用户的数据,然后就结束运行了,输出了两个同样的答案,经过分析,应该要把输入数据和运算输出放在同一条for语句中,这样才能实现循环输入与输出

4.本题PTA提交列表

1232126-20171027212950398-1351815066.png

题目2

1.实验代码

    int a,n,i,item,sum;
    scanf("%d%d",&a,&n);
    item=0;/*初始化变量*/
    sum=0;
    for(i=1;i<=n;i++)
    {
        item=item+a*pow(10,i-1);/*计算每个加数*/
        sum=sum+item;/*累加每个加数*/
    }
    printf("s = %d",sum);

2 设计思路

  • 第一步:定义变量a,n,i,item,sum
  • 第二步:输入a,n
  • 第三步:初始化item,sum
  • 第四步:item=item+a*pow(10,i-1);
  • 第五步:sum=sum+item;
  • 第六步:重复第四步,直到i>n
  • 第七步:输出sum

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

1232126-20171028091413648-386913075.png

本题要求计算a+aa+aaa+~~+a(n个a),所以此处item应为22才符合题目要求,而此处却为20,由此判断错误可能出现在item=a*pow(10,i-1)里,经过分析,item应该累加,把代码改为item=item+a*pow(10,i-1)结果答案正确

4.本题PTA提交列表

1232126-20171027222757336-1813150079.png

题目3

1.实验代码

    int n,m,i,min;
    scanf("%d",&n);
    scanf("%d",&m);
    min=m;/*把第一个输入的数先判定为最小值*/
    for(i=1;i<=n-1;i++)
    {
        scanf("%d",&m);
        if(m<min)/*比较后来输入的每个数与前面输入中最小值的大小*/
        {
            min=m;
        }
    }
    printf("min = %d",min);

2 设计思路

  • 第一步:定义变量n,m,i,min
  • 第二步:输入变量n,m
  • 第三步:min=m
  • 第四步:输入m
  • 第五步:判断m是否小于min,如果条件成立,执行第六步
  • 第六步:min=m
  • 第七步:重复第四步,直到i>n-1
  • 第八步:输出min

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

1232126-20171028091446805-1317255849.png

本题思路清晰,一遍就过

4.本题PTA提交列表

1232126-20171027222840023-181022210.png

题目4

1.实验代码

    int mynumber,yournumber,i,N;
    scanf("%d%d",&mynumber,&N);
    for(i=1;i<=N+1;i++)
    {
        scanf("%d",&yournumber);
        if(i<=N&&yournumber<0)/*输入为负数,结束循环*/
        {
            printf("Game Over");
            break;
        }
        else if(i==1&&yournumber==mynumber)/*一次答对,输出提示Bingo!,结束循环*/
        {
            printf("Bingo!");
            break;
        }
        else if(i<=3&&yournumber>mynumber)/*猜数过大,输出提示Too big*/
        {
            printf("Too big\n");
        }
        else if(i<=3&&yournumber<mynumber)/*猜数过小,输出提示Too small*/
        {
            printf("Too small\n");
        }
        else if(i<=3&&yournumber==mynumber){/*在三次内猜对,输出提示Lucky You!,结束循环*/
            printf("Lucky You!");
            break;
        }
        else if(i>3&&i<=N&&yournumber>mynumber)/*在N次内,猜数过大,输出提示Too big*/
        {
            printf("Too big\n");
        }
        else if(i>3&&i<=N&&yournumber<mynumber)/*在N次内,猜数过小,输出提示Too small*/
        {
            printf("Too small\n");
        }
        else if(i>3&&i<=N&&yournumber==mynumber){/*超出3次,但在N次内猜对,输出提示Good Guess!,结束循环*/
            printf("Good Guess!");
            break;
        }
        else if(i>N)/*超出N次,输出Game Over,结束循环*/
        {
            printf("Game Over");
            break;
        }
    }

2 设计思路

  • 第一步:定义变量mynumber,yournumber,i,N
  • 第二步:输入mynumber,N
  • 第三步:输入yournumber
  • 第四步:判断i<=N&&yournumber<0,如果成立,执行第五步,否则执行第六步
  • 第五步:输出Game Over,跳出循环
  • 第六步:判断i==1&&yournumber==mynumber,如果成立,执行第七步,否则执行第八步
  • 第七步:输出Bingo!,跳出循环
  • 第八步:判断i<=3&&yournumber>mynumber,如果成立,执行第九步,否则执行第十步
  • 第九步:输出Too big
  • 第十步:判断i<=3&&yournumber<mynumber,如果成立,执行第十一步,否则执行第十二步
  • 第十一步:输出Too small
  • 第十二步:判断i<=3&&yournumber==mynumber,如果成立,执行第十三步,否则执行第十四步
  • 第十三步:输出Lucky You!,跳出循环
  • 第十四步:判断i>3&&i<=N&&yournumber>mynumber,如果成立,执行第十五步,否则执行第十六步
  • 第十五步:输出Too big
  • 第十六步:判断i>3&&i<=N&&yournumber<mynumber,如果成立,执行第十七步,否则执行第十八步
  • 第十七步:输出Too small
  • 第十八步:判断i>3&&i<=N&&yournumber==mynumber,如果成立,执行第十九步,否则执行第二十步
  • 第十九步:输出Good Guess!,跳出循环
  • 第二十步:判断i>N,如果成立,执行第二十一步,否则执行第二十二步
  • 第二十一步:输出Game Over,跳出循环
  • 第二十二步:重复第三步,直到i>N+1

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

1232126-20171028085353789-695044444.png
经调试后发现,输出的内容和输入的内容挤在一起,没有换行,所以在应该换行的地方加上换行符

4.本题PTA提交列表

1232126-20171028085953617-772224476.png

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

PTA排名

1232126-20171028090325383-424354940.png

三、本周学习总结

1.你学会了什么?

本周我学会了有关循环语句的一些知识,比如for语句和while语句,for语句中的for后面括号中一般跟三个表达式:初值表达式,条件表达式,步长表达式,以此来实现循环;while语句后可以接任意合法的表达式,while语句中还有个do-while语句,称为直到型循环语句,它是先执行循环体语句,再判断条件;以上循环语句各有各的优点与缺点,需要根据实际情况来合理使用。

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

本周的内容基本上都已经学会了,学会了循环语句中的for语句和while语句。

转载于:https://www.cnblogs.com/yanweijie666/p/7745260.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值