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存放换行符,让数据正确存放。
    1232060-20171101194852998-1197833727.png
  • (2).在做题过程中不知道怎么按题目要求输出,通过尝试发现也可以不用按照输出格式来。

4.本题PTA提交列表

1232060-20171101195355685-895081656.png

题目二

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。
    1232060-20171101200610138-2086590654.png

4.本题PTA提交列表

1232060-20171101200735466-1353797498.png

题目三

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提交列表

1232060-20171101202026326-298290297.png

题目三

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提交列表

1232060-20171101220040498-1431860780.png

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

1232060-20171101220200841-606528664.png

三、本周学习总结

1.你学会了什么?

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

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

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

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

  • 一些数学函数表达式不会用。
  • 输入时要空格,严格按照题目要求输入。

转载于:https://www.cnblogs.com/PENGXI/p/7768807.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值