C语言博客作业--嵌套循环

本文通过三个具体的PTA编程题目,详细介绍了嵌套循环的应用技巧与常见问题的解决方法,同时分享了函数的基本概念及其注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、PTA实验作业

题目1:打印九九口诀表

1. 本题PTA提交列表

1232766-20171111171713013-588888336.jpg

2. 设计思路

  • 1.定义整型变量i,j,N;
  • 2.第一层循环for(i=1;i<=N;i++) 【这一重循环用来控制乘法表的行】
    {
    内嵌一层循环for(j=1;j<=i;j++)
    并且每次循环输出一个式子printf("%d'%d=%-4d",j,i,i'j) 【这一重循环用来控制乘法表的列】
    每结束一轮的内循环,输出一个换行符printf("\n")
    }

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

  • 1.问题:一开始运行时并没有大问题,乘法表能正常输出,但乘法表中的数字位置不对
    1232766-20171111173814919-1486594470.jpg

    解决方法:将输出语句中的i与j互换
    1232766-20171111174009466-2111816476.jpg

  • 2.问题:在输出部分没有格式控制符,“等号右边数字占4位、左对齐”不清楚如何操作
    1232766-20171111174355169-1973163669.jpg

    以及尝试用输出空格控制的结果

    1232766-20171111174504356-111716677.jpg

    输出4行不明显,输出九行时可以明显看到等号并未对齐

    1232766-20171111174732747-2114577357.jpg

    解决方法:上网查找格式控制符,得知用“-”可以让结果右对齐,并且“%4d”可以让数据输出4个宽度
    1232766-20171111180629934-1397447494.jpg

【以上问题不用调试就可以解决,以下是改正后的调试过程】

1232766-20171111213257638-1202506023.jpg
1232766-20171111213310981-1886427794.jpg
1232766-20171111213320450-1567409212.jpg
1232766-20171111213329091-1833396861.jpg

题目2:歌唱比赛评分系统

1. 本题PTA提交列表

1232766-20171111183410544-552794913.jpg

2. 设计思路

  • 1.定义整型变量i,n,repeat,sum,grade;//sum记录得分之和,grade表示成绩
  • 2.定义浮点型变量score;//score表示
  • 3.输入repeat;
  • 4.for(j=1;j<=repeat;j++)
    {
    定义整型变量 max=0,min=100;
    给sum赋初值 sum=0;
    输入评委个数 n
    for(i=1;i<=n;i++)/有几个评委就做几次循环/
    {
    输入得分 grade
    sum=sum+grade;
    如果grade>max 那么max=grade;/当得分比最大值大时,重新给max赋值/
    如果grade<min 那么min=grade;/当得分比最小值小时,重新给min赋值/
    }
  • 5.score=(sum-max-min)/(n-2);
  • 6.输出最终得分 score

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

  • 1.问题:刚开始忽略了要按repeat限制循环次数
    解决方法:将最外层循环的限制条件改成j<=repeat

  • 2.问题:计算一次最终得分没有再次输入评委个数,程序错误
    1232766-20171111211529794-1344070025.jpg

    解决方法:在外层循环之内,内层循环之外加有个输入n的语句
    1232766-20171111212032013-996563231.jpg

  • 3.问题:以上问题改正后PTA显示格式错误
    解决方法:经同学提醒,在最后输出结果处加上换行符。

    【调试过程】

    1232766-20171111214400841-1671654372.jpg
    1232766-20171111214409700-1711699324.jpg
    1232766-20171111214616122-707789479.jpg

添加换行符以后,完成一次最终结果计算会自动输出换行符

1232766-20171111214912184-1325063358.jpg

题目3:

1. 本题PTA提交列表

1232766-20171111215842325-1323815645.jpg

2. 设计思路

  • 1.定义整型变量A,B;
  • 2.for(A=1;A<=10;A++) //A,B一定是小于10的个位数
    for(B=1;B<=10;B++)
    if((10'A+2)'(7'10+B)==3848)
    printf("%d2'7%d=3848",A,B); 输出最后的式子
  • 3.return 0;

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

本题未遇到问题
以下是调试过程:每次内循环到10时如果不满足if语句中的条件,外循环会加一,然后继续内循环,直到条件满足。

1232766-20171111221256669-1140996875.jpg
1232766-20171111221305138-841215325.jpg
1232766-20171111221314388-1782559122.jpg
1232766-20171111221322544-357904101.jpg

二、同学代码结对互评

1.互评同学名称

曾文惠

2.我的代码、互评同学代码截图

我的代码

1232766-20171111222933622-1840021974.jpg

互评同学的代码

1232766-20171111223026591-906746349.png

3.我和同学代码不同在哪里?有哪些各自优势?你更喜欢哪种代码风格?如果同学代码有错的也请帮忙指出来哪里出问题。

  • 我的代码是参考课本【例4-12】使用的三重循环嵌套方法来写,在编写代码时要先考虑变量大小改变的顺序,但代码语句较少,看起来整齐简单;而同学的代码是采用for语句与if语句结合使用的方式一步一步进行判断,语句较多,但看代码时更容易理解。

  • 我更喜欢自己的代码,更能锻炼自己的思考能力,而且我自己本身在这方面比较薄弱,所以会更倾向于使用这种方法。

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

1232766-20171111153340591-8555222.jpg

四、本周学习总结

1.你学会了什么?

  • 对嵌套循环的理解更深刻
    • 内层循环的控制条件一般以外层循环为准;
    • 确定循环初始化语句的位置,混淆内外层循环的初始化易造成程序错误;
    • 内外层循环变量不能相同;
    • 多重循环中,内层循环也应该有控制循环的语句,在做PTA练习时,曾因未设置控制语句,导致程序无法停止。
  • 初步学习函数
    • 使用函数必须要定义,如果自定义函数在主调函数后面,那么在函数调用之前,必须加上函数原型声明;
    • 函数中,形式参数定义时,每个形参前都要写明类型;
    • 形参和实参必须一一对应,两者数量相同,类型尽量一致;
    • return语句只能返回一个值;
    • 在不返回结果的函数中,void不能省略,否则函数类型被默认定义为int。

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

  • 函数的调用看似简单,但在不同程序中可以有不同的写法,而且学习函数更重要的是对函数结构的设计;
  • 刚接触全局变量,对如何使用全局变量还不是很熟练,还需多练习
  • 如何打印菱形图案还是存在一些问题。

转载于:https://www.cnblogs.com/wwwwxy128/p/7819174.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值