zoukankan      html  css  js  c++  java
  • C语言博客作业--嵌套循环

    一、PTA实验作业

    题目1:查询水果价格

    1. 本题PTA提交列表

    2. 设计思路

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

    • 本题遇到的困难主要是自己打出的代码和题目中所给的输出样式是一样的,但是得到的结果还是部分正确,然后看了许多遍的题目,才发现题目给的意思和题目显示出的输出样式是不同的,这让我明白了题目的重要性。

    题目2:编程打印空心字符菱形

    1. 本题PTA提交列表

    2. 设计思路

    • 第一步:定义整型变量n,i,j和字符型变量c。
    • 第二步:输入循环次数n和所要输出的字符c。
    • 第三步:对上半部分的图形进行编程,利用循环输出上半部分的行,上面的行数为(n+1)/2,再嵌套俩个循环,一个输出输入的字符,另一个输出空格。
    • 第四步:对下半部分的图形进行编程,利用循环输出下半部分的行,下面的行数为(n-1)/2,再嵌套俩个循环,一个输出输入的字符,另一个输出空格。
    • 第五步:用return 0,结束程序运行。

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

    • 这道题是我认为在这8道题目中最难的一道题,它分为上下俩个部分,所以它需要俩个循环语句,这道题的要点是在于怎样用数学的方法,使得空格和字母在其正确的位置,我想了很久是真的想不来,所以我画图了,把排列出来所呈现的样式画了出来,然后找规律打出了代码,但是打出的代码还是部分正确,提示说没考虑最大值的最大范围,然后我输入了G和9,发现输出的菱形会统一向右多空俩个空格的位置,然后就试着改了for语句中的i的判断条件,进过不断的调试,然后终于正确了。

    题目3:餐饮服务质量调查打分

    1. 本题PTA提交列表

    2. 设计思路

    • 第一步:定义变量n,repeat,i,j,t,star,count1,count2,count3,count4,count5,count放得到的分数的次数,n放投票的人数,repeat放计算的次数,i,j,分别放循环次数。
    • 第二步:输入计算次数repeat的值,进入计算循环。
    • 第三步:进入统计分数循环,判断顾客所给的分数,并加到次数count上。
    • 第四步:输出分数的得到情况,在没个分数输出完后换行。
    • 第五步:使用return 0,结束程序的运行。

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

    • 这道题,我认为最难的部分在如何正确的输出*号,我是使用了3个printf语句才完成了一个分值的输出,在写完所有的代码以后,提交还是错误,但是在devc++上又是正确的,然后我就请教学长,学长告诉我一个套路,如果是答案错误,那就在输出格式正确的状况下加上或者去掉最后的一个换行符,如果是编译错误就用调试去找寻错误然后改正,我试了下果然就对了。

    二、同学代码结对互评

    • 周同学的代码:

    int main()
    {
    char ch;
    int height;
    scanf("%c %d",&ch,&height);
    int n=height/2;
    int i,j,k;
    for(i=0;i<=n;i++){
    for(j=n-i;j>0;j--){
    printf(" ");
    }
    for(j=0;j<=2i;j++){
    if(j0||j2
    i){
    printf("%c",ch+i);
    }else{
    printf(" ");
    }
    }
    printf(" ");
    }
    for(i=0;i<n;i++){
    for(j=0;j<=i;j++){
    printf(" ");
    }
    for(j=0;j<(n-i)2-1;j++){
    if(j0||j(n-i)
    2-2){
    printf("%c",ch+n-1-i);
    } else{
    printf(" ");
    }
    }
    printf(" ");
    }
    return 0;
    }

    • 我的代码:

    int main(void)
    {
    int n,i,j;
    char c;
    scanf("%c %d",&c,&n);
    for(i=1;i<=(n+1)/2;i++)
    {
    for(j=0;j<(n+1)/2-i;j++)
    printf(" ");
    printf("%c",c+i-1);
    for(j=1;i-1>0&&j<=2i-3;j++)
    printf(" ");
    if(i-1>0)
    printf("%c",c+i-1);
    printf(" ");
    }
    for(i=(n-1)/2;i>0;i--)
    {
    for(j=0;j<(n+1)/2-i;j++)
    printf(" ");
    printf("%c",c+i-1);
    for(j=1;i-1>0&&j<=2
    i-3;j++)
    printf(" ");
    if(i-1>0)
    printf("%c",c+i-1);
    printf(" ");
    }
    return 0;
    }

    • 我和这位周同学的直观不足之处在于,都没有注释文本,这会增加代码的阅读难度,总体看来,我觉得还是我的代码更容易让人理解,并且循环条件和判断条件都更简洁。

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

    四、本周学习总结

    1.你学会了什么?

    • 学会了怎样使用循环嵌套的语句去解决图形的问题,学会了怎样使用草稿纸来帮助自己解决编程问题,清楚的认识到了严谨性对编程的重要。
    • 明白了函数的定义,学会了函数的使用方法,认识到了形参和实参之间的关系,明白了函数的结构,使用调试工具更加的熟练了,但也感觉到编程题越来越难了。
    • 学会了耐心的去对待pta中的题目,学会了怎样去利用身边的书籍和网络的知识去解决自己所面临的问题。

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

    • 不会的是函数的填空题,虽然有思路,但是还是觉得蛮迷茫的,面对有的问题无法考虑全面,有时也没能及时去换个思路想,以至于浪费了很多时间在发呆上。
    • 还有很多函数章节的细节上的东西,比如昨天课堂上的互动题funl(x)和funl()所代表的含义是不同的,而我居然认为是一样的,然后回想起来觉得很可笑。
  • 相关阅读:
    Sum Root to Leaf Numbers
    Sum Root to Leaf Numbers
    Sort Colors
    Partition List
    Binary Tree Inorder Traversal
    Binary Tree Postorder Traversal
    Remove Duplicates from Sorted List II
    Remove Duplicates from Sorted List
    Search a 2D Matrix
    leetcode221
  • 原文地址:https://www.cnblogs.com/bigll666/p/7818729.html
Copyright © 2011-2022 走看看