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

2023-10-29

一、PTA实验作业

题目1:7-1 查询水果价格

给定四种水果,分别是苹果(apple)、梨(pear)、桔子(orange)、葡萄(grape),单价分别对应为3.00元/公斤、2.50元/公斤、4.10元/公斤、10.20元/公斤。

首先在屏幕上显示以下菜单:

[1] apple
[2] pear
[3] orange
[4] grape
[0] exit
用户可以输入编号1~4查询对应水果的单价。当连续查询次数超过5次时,程序应自动退出查询;不到5次而用户输入0即退出;输入其他编号,显示价格为0。
输入格式:

输入在一行中给出用户连续输入的若干个编号。

输出格式:

首先在屏幕上显示菜单。然后对应用户的每个输入,在一行中按格式“price = 价格”输出查询结果,其中价格保留两位小数。当用户连续查询次数超过5次、或主动输入0时,程序结束。

1. 本题PTA提交列表

1232047-20171107165446747-960437860.png

2. 设计思路

  • 第一步:定义整型变量i存放次数, choice存放用户选择,double price 表示价格;
  • 第二步:显示菜单,用printf()函数形式分别换行输出;
  • 第三步:不用输入,直接进入for循环:for(i=1;i<=5;i++);
  • 第四步:在for内输入用户选择;
  • 第五步:判断choice是否为0,是则程序结束;否则,继续执行下一步;
  • 第六步:使用switch()结构,对四种水果选择进行不同价格给出;
  • 第七步:若不是输入四种水果对应编号,输出0;
  • 第八步:输出价钱price,保留两位小数;

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

  • (1)首先编译过程中的思路可以的情况下,不知道如何用代码表述出来,在【主动输入0时,程序结束】这里会想着直接用break,调试时,也发现会跳出去,没法得到结果,知道不能这样写,该换种表达法;

1232047-20171107180450856-893474237.png
1232047-20171110131116388-912603076.png

  • (2)调试时无法进入下一步:调试改正.....
    1232047-20171107181114294-281497933.png
    1232047-20171107181143638-71355764.png
    1232047-20171107181951200-1275441034.png
    1232047-20171107181134200-1351604219.png

题目2:7-4 换硬币

将一笔零钱换成5分、2分和1分的硬币,要求每种硬币至少有一枚,有几种不同的换法?

输入格式:

输入在一行中给出待换的零钱数额x∈(8,100)。

输出格式:

要求按5分、2分和1分硬币的数量依次从大到小的顺序,输出各种换法。每行输出一种换法,格式为:“fen5:5分硬币数量, fen2:2分硬币数量, fen1:1分硬币数量, total:硬币总数量”。最后一行输出“count = 换法个数”。

1. 本题PTA提交列表

1232047-20171110132155169-667987189.png

2. 设计思路

  • 第一步:定义整型变量零钱数额x,fen5:5分硬币数量, fen2:2分硬币数量, fen1:1分硬币数量, total:硬币总数量”,count:换法个数且int count=0;
  • 第二步:输入零钱数额x;
  • 第三步:进入for循环:for(fen5 = x/5; fen5>0; fen5--),fen5 = x/5算出总的fen5钱数,每有一个就在总钱x上作相应减少;
  • 第四步:同第三步for循环,对fen2处理;
  • 第五步:同第三步for循环,对fen1处理;
  • 第六步:检查是否fen55+fen22+fen1*1==x满足,若不满足即出现错误,修改;
  • 第七步:若满足fen55+fen22+fen1*1==x,则输出各硬币数量及硬币总数量:fen5:%d, fen2:%d, fen1:%d, total:%d\n",fen5,fen2,fen1,fen5+fen2+fen1;
  • 第八步:换法个数作相应增加,跳出循环;
  • 第九步:继续循环,直至x==0;
  • 第十步:输出换法个数;

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

  • (1)一开始的结果输出与答案差别很大,思路是有的,但转化成程序语言后发现无法实现题目里的效果:
    接着调试,还发现count没有初始值,循环也未用break跳出,导致出现多次count=0,;
    1232047-20171110173643388-1760234140.png

1232047-20171110174225513-1223954743.png

  • (2)答案与输出结果不同,总是会多出count一行,经过调试发现把输出的count写进了循环里,需要提到循环外面;

1232047-20171110164853356-41982813.png

1232047-20171110173218013-1408908681.png

1232047-20171110173301169-108634743.png

1232047-20171110172701513-358626461.png

题目3:7-7 歌唱比赛评分系统

为学生歌唱比赛设计一个评分系统,评分规则如下:共有n名评委给分(0~100分),要求去掉一个最高分,去掉一个最低分,剩余成绩的平均分为最终得分。输入一个正整数repeat (0<repeat<10),做repeat次下列运算:

输入一个正整数n(3≤n≤10),表示有n个评委,输入n个成绩,输出最终得分,结果保留小数点后两位。

1. 本题PTA提交列表

1232047-20171110175224638-2027660532.png

2. 设计思路

  • 第一步:定义整型变量grade存放成绩,float score,n个成绩,repeat正整数,i大循环次数,j内循环次数,float score存放最后得分;
  • 第二步:输入正整数repeat,提示循环次数;
  • 第三步:进入for大循环:for(i=1;i<=repeat;i++),保证每输入一个成绩都能有同样的操作执行;
  • 第四步:定义输入成绩的总分数int sum=0,定义int max=0&&int min=100,保证输入的后续成绩与min、max分别对比后能最后去掉min、max;
  • 第五步:输入n:scanf("%d",&n);
  • 第六步:进入小循环:for(j=1;j<=n;j++)来比较出最大最小值;
  • 第七步:计算出总分:sum=sum+grade,内循环结束;
  • 第八步:计算出去掉小循环得出的min、max后的sum;
  • 第九步:计算最后得分:score=1.0*sum/(n-2);
  • 第十步:按题目要求输出:printf("score:%.2f\n",score);

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

  • (1)一开始的这题碰到的问题就是不知道怎么实现把最大最小值用嵌套循环的方式找出来,然后询问他人后明白了要先赋予值然后在循环里要做的就是不断与输入的成绩进行比较,得出相应的值;
  • (2)按自己原来的思路是把成绩grade直接都先给min、max,这里的grade是可以实现循环后改变的,但结果错误:

1232047-20171110183119747-1428510780.png

接着调试程序,发现一开始score就已经出现了答案,说明在一开始的赋值上就出现问题了,应该把min、max初始值改掉;
1232047-20171110183821138-1864544428.png

  • (3)接着(2)后:int min=0;max=100,运行发现还是错误的,

1232047-20171110184309559-1987129279.png

        继续调试,发现循环竟然是进不去的,说明在条件满足上不符合,得修改,询问同学,知道应该令min=100,max=0,否则否则任何值都比0大,比100小,无法正确得出答案,设置断点位置进入;

1232047-20171110184549356-1980917612.png

1232047-20171110190216872-35743970.png

1232047-20171110190540434-419888995.png

二、同学代码结对互评

1.互评同学名称:龚顺德

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

我的代码:

    int i,j,grade,repeat,n;//i大循环次数,j内循环次数 
    float score;

    scanf("%d",&repeat);
    for(i=1;i<=repeat;i++){
            int sum=0;
    int max=0;
    
    int min=100;//定义好最大最小,方便后续赋值 不能定义min=o,max=100;否则人和值都比0大,比100小 
            scanf("%d",&n);
        for(j=1;j<=n;j++){
            scanf("%d",&grade);
            if(grade<min)//输入的成绩不断比较大小,赋到相应的min、max中 
            min=grade;
            if(grade>max)
            max=grade;
            sum=sum+grade;
            
    }
        sum=sum-min-max;
        score=1.0*sum/(n-2);
printf("score:%.2f\n",score);
    

互评同学代码:

{
    int repeat,n,i,k,l,max,min,begin,all,num;
    double score;
    scanf("%d",&repeat);
    for(begin=1;begin<=repeat;begin++){
    scanf("%d",&n);
    all=0;
    scanf("%d",&num);
    all=all+num;
    max=num;
    min=num;
    for(i=1;i<=n-1;i++){
        scanf("%d",&num);
        all=all+num;
        if(num>max) max=num;
        else if(num<min) min=num;
    }   
    all=all-max-min;
    score=all/((n-2)*1.0);
    printf("score:%.2f\n",score);
}

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

  • (1)基本上的思路是一样,没相差太大;不同的就是他用了我一开始想到的把min、max都赋值num,可是他能实现,而我不行,他max=num;
    min=num;与我的int max=0,int min=100;放的位置不同,导致各自运行程序的时候会出现差异;
  • (2)他的没有注释,读起来不太方便,使用了分支结构,定义变量感觉会比自己的更严谨,比较能接受自己的这种代码,相对简单明了,易于接受;

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

1232047-20171110190911403-1250505558.png

四、本周学习总结

1.你学会了什么?

  • (1)嵌套循环(即多重循环)的熟练化,记得上次写博客时就已经有学过循环,只是真正会用还无法做到,在又经过一周的PTA习题和老师讲解,对循环的使用知道了大多数情况下如何取用能让解决一个问题时的程序量减少(即为什么要使用循环和如何实现循环);
  • (2)确定循环条件和循环体,并使用break语句处理多循环问题;
  • (3)用do-while语句构成的循环,在while后的表达式为零时结束循环;
  • (4)平时要注意找正确循环体,易错就是不知道怎么把信息里需要循环的东西用嵌套循环程序语言经过有限次表达出来,课堂派里的题目在让自己补充程序的时候错的最多,总是错,意识到在读一个程序方面还不够;

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

  • (1)不能正确找出循环体,以及用你程序表达出循环,说明嵌套循环还是存在问题;
  • (2)PTA里的题目还是不能写出来,比如【7-3 编程打印空心字符菱形、7-5 梅森数】等,老师的思路理解但自己独立写还是不行;
  • (3)课堂派里需要补充程序的经常错误;

转载于:https://www.cnblogs.com/78tian/p/7800130.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C语言博客作业--嵌套循环 的相关文章

  • C++_生成随机字符串

    include
  • C#中unsafe的使用

    1 unsafe在C 程序中的使用场合 实时应用 采用指针来提高性能 引用非 net DLL提供的如C 编写的外部函数 需要指针来传递该函数 调试 用以检测程序在运行过程中的内存使用状况 2 使用unsafe的利弊 好处是 性能和灵活性提高
  • 每天都在谈SOA和微服务,但你真的理解什么是服务吗?

    近几年来 我一直从事着和面向服务相关的底层软件研发工作 逐渐的形成了一些自己的看法 其中我觉得比较重要的看法就是服务需要一个更准确细致的定义 简单来说 服务的本质就是行为 业务活动 的抽象 为了更好的阐述新服务的概念 并方便与传统的SOA中
  • [原]Pro*C介绍-内嵌SQL

    Translate by Z Jingwei Document address http www db stanford edu ullman fcdb oracle or proc html Pro C介绍内嵌SQL 概要 Pro C语法
  • 调用拷贝构造函数的几种情况(附面试题)

    1 深拷贝和浅拷贝 拷贝构造函数的使用 有时候需要自己定义拷贝构造函数 以避免浅拷贝问题 在什么情况下需要用户自己定义拷贝构造函数 一般情况下 当类中成员有指针变量 类中有动态内存分配时常常需要用户自己定义拷贝构造函数 在什么情况下系统会调
  • Vc/MFC中自定义消息及其PostMessage触发使用

    http blog csdn net ztz0223 article details 2058402 http blog csdn net a8082649 article details 7733527 http bbs csdn net
  • typedef struct 用法详解

    typedef为C语言的关键字 作用是为一种数据类型定义一个新名字 当typedef与结构结合使用时 会有一些比较复杂的情况 而且在C语言和C 里面有略有差别 本文将详细讲解typedef struct的用法 第一篇 typedef str
  • C/C++中浮点数格式学习——以IEEE75432位单精度为例

    这是浮点数的通常表示形式 在IEEE754中 单精度浮点数有如下形式 32位单精度 单精度二进制小数 使用32个比特存储 1 8 23位长 S Exp Fraction 31 30至23偏正值 实际的指数大小 127 22至0位编号 从右边
  • 无法打开源文件<sys/time.h>,但是用time.h编译就会出错,缺少gettimeofday()

    因为sys time h是uinx系统下的库文件 而现在使用的平台是在windows 由于未指明程序运行的系统 导致找不到对应的头文件 需要重新实现gettimeofday 函数 define WIN32 include
  • GDAL多光谱与全色图像融合简单使用

    目录 简述 C 代码 效果对比 GDAL融合效果和原始多光谱波段对比 GDAL融合效果和原始全色波段对比 ARCGIS融合效果与原始全色和多光谱对比 GDAL融合效果与ArcGIS融合效果对比 简述 最近在GDAL的代码中看见了gdalpa
  • dev-c++官网位置和源码/库位置

    1 http devpaks org 2 http www bloodshed net 3 http www bloodshed net dev 转载于 https www cnblogs com vilyLei articles 1812
  • LeetCode题目笔记——17.19消失的两个数字

    文章目录 题目描述 题目难度 困难 方法一 暴力 代码 代码优化 方法二 数学方法 代码 总结 题目描述 题目直达 题目难度 困难 方法一 暴力 虽然题目说你能在 O N 时间内只用 O 1 的空间找到它们吗 但是也没有限制我们不能用暴力
  • 值得学习与推荐的c/c++框架和函数库

    这几天不上班 翻翻Evernote中记录的一些笔记 刚好有时间把记录的一些好玩链接转载一下 这篇文章里提到的很多库都用过 尤其是图像处理相关库 尤其是opencv及cximage 当时做图像算法时 很多算法就是从上面找来 然后自己修改的 比
  • mfc窗口创建的create与oncreate

    在view类中 create 是虚函数由框架调用 是用来 生成一个窗口的子窗口 oncreate 消息响应函数 是用来 表示一个窗口正在生成 某个CWnd的Create函数由当前CWnd的Owner调用 而在CWnd Create中 又会调
  • C++学习笔记12:输入输出流实例整理(文本文件读写,二进制文件读写,一组数据的文件读写,随机访问文件实例

    这也太难记了555老阔疼 文件读写示例 include
  • 【C/C++】 - Linux下查找函数头文件 以及 man命令拓展

    背景 比如现在需要找C语言 sleep函数的头文件 使用man来查找 可以先man sleep 可以发现出来的默认是sleep 1 是一个User Commands 明显不是我们需要的 这里提示了 看sleep 3 那我们查看下sleep
  • visual studio 一直显示正在准备解决方案

    首先重启电脑 无法解决的情况下执行以下步骤 Kill Visual Studio Open Visual Studio without loading a solution Disable AnkhSvn as Source Control
  • C/C++编程:令人印象深刻的高级技巧案例

    C C 编程语言在软件开发领域有着悠久的历史 由于其高效 灵活和底层访问能力 至今仍然被广泛应用 本文将介绍一些在C C 编程中令人印象深刻的高级技巧 帮助读者提升编程水平 更加高效地使用这两种强大的编程语言 一 指针运算与内存管理 C C
  • C 语言运算符详解

    C 语言中的运算符 运算符用于对变量和值进行操作 在下面的示例中 我们使用 运算符将两个值相加 int myNum 100 50 虽然 运算符通常用于将两个值相加 就像上面的示例一样 它还可以用于将变量和值相加 或者将变量和另一个变量相加
  • C 语言运算符详解

    C 语言中的运算符 运算符用于对变量和值进行操作 在下面的示例中 我们使用 运算符将两个值相加 int myNum 100 50 虽然 运算符通常用于将两个值相加 就像上面的示例一样 它还可以用于将变量和值相加 或者将变量和另一个变量相加

随机推荐

  • keil关于use MicroLIB 和半主机模式的总结

    半主机是这么一种机制 它使得在ARM目标上跑的代码 如果主机电脑运行了调试器 那么该代码可以使用该主机电脑的输入输出设备 这点非常重要 因为开发初期 可能开发者根本不知道该 ARM 器件上有什么输入输出设备 而半主基机制使得你不用知道ARM
  • 虚拟机连接本地数据库

    我们在运行虚拟机上面的项目时 可能要用到本机的数据库 在使用过程中会遇到数据库拒绝访问的情况 这是因为在安装本地数据库时没有启动远程连接 使用两种方法来解决这种问题 一 使用命令行模式 第一步 先切换到MySQL的安装路径下面的bin目录
  • 百分率的sql

    百分比的sql语句 方式一的百分比的sql 说明 这条sql是在一张表里面进行查询 将不同的级别的工程师的百分率查询出来 第一个sql select tmp job grade tmp tcount tmp1 t1count from se
  • 基于单片机的数字频率计设计

    数字频率计概述 数字频率计是计算机 通讯设备 音频视频等科研生产领域不可缺少的测量仪器 它是一种用十进制数字显示被测信号频率的数字测量仪器 它的基本功能是测量正弦信号 方波信号及其他各种单位时间内变化的物理量 在进行模拟 数字电路的设计 安
  • 【力扣】205.同构字符串

    同构字符串 同构字符串 1 题目描述 2 示例 3 代码 方式1 方式2 5 编译结果 同构字符串 1 题目描述 给定两个字符串 s 和 t 判断它们是否是同构的 如果 s 中的字符可以按某种映射关系替换得到 t 那么这两个字符串是同构的
  • 【蓝桥杯Python】2023.2.3-寻找2020

    题目描述 本题为填空题 只需要算出结果后 在代码中使用输出语句将所填结果输出即可 小蓝有一个数字矩阵 里面只包含数字 00 和 22 小蓝很喜欢 20202020 他想找 到这个数字矩阵中有多少个 20202020 小蓝只关注三种构成 20
  • 2023华为OD机试真题【施肥问题】

    题目描述 思路题解 首先需要计算每个果园的施肥时间 即果园面积除以施肥机能效 然后找到最小的施肥机能效 保证施肥任务能在规定时间内完成 如果施肥天数小于果园数量 则无法完成施肥任务 返回 1 如果施肥天数等于果园数量 则直接返回最大果园面积
  • 编译原理第七章笔记 -- 中间代码生成

    本文中内容整理西安交通大学软件学院吴晓军老师的ppt中 仅供学习使用 请勿转载或他用 参考教材 程序设计语言 编译原理 第3版 陈火旺等 国防工业出版社 这一章分数在35左右 两个大题 数组的引用四元式生成 控制语句当中布尔表达式的翻译 考
  • 运维必学

    欢迎关注 全栈工程师修炼指南 设为 星标 每天带你 基础入门 到 进阶实践 再到 放弃学习 专注 企业运维实践 网络安全 系统运维 应用开发 物联网实战 全栈文章 等知识分享 花开堪折直须折 莫待无花空折枝 作者 lt 安全开发运维 gt
  • VS2012编译安装VTK-5.10.1(支持Python)

    1 源码下载 到参考资料 1 下载vtk 5 10 1 zip和vtkdata 5 10 1 zip 2 源码解压 这里以D 盘为例进行说明 在D 盘中创建一个目录VTK 然后在其中创建4个目录 source build data和inst
  • mysql explain详解

    转自 http www blogjava net persister archive 2008 10 27 236813 html 在 explain的帮助下 您就知道什么时候该给表添加索引 以使用索引来查找记录从而让select 运行更快
  • Nginx反向代理与负载均衡

    文章目录 一 网关 代理与反向代理的关系 二 反向代理在系统架构中的应用场景 三 Nginx反向代理配置 1 不重定向配置 2 重定向配置 四 基于反向代理的负载均衡器 不支持https 五 负载均衡介绍 1 负载均衡策略 2 负载均衡调度
  • 三个java超级变态逻辑循环编程题

    1 有一根27厘米的细木杆 在第3厘米 7厘米 11厘米 17厘米 23厘米这五个位置上各有一只蚂蚁 木杆很细 不能同时通过一只蚂蚁 开始时 蚂蚁的头朝左还是朝右是任意的 它们只会朝前走或调头 但不会后退 当任意两只蚂蚁碰头时 两只蚂蚁会同
  • 【4】测试用例设计-判定表法

    判定表适用于有几个原因 导致几个结果的情况 实际测试中 如果输入条件较多 再加上各种输入与输出之间相互的作用关系 画出的因果图会比较复杂 容易使人混乱 为了避免这种情况 人们往往使用决策表法代替因果图法 决策表也称为 判定表 其实质就是一种
  • 各大公司薪资

    联合利华 MKT 9500 3000元安家费 普通职位 8KX12 联合利华销售代表 底薪加提成 总体一般 一般能拿到5K以上 宝洁 本8600 硕9700 博10500发14个月 11年数据 欧莱雅 MKT 6 6K X 13 11年数据
  • ajax工作原理 网页从输入url到呈现过程(TCP ,渲染引擎) 头像上传 下拉加载 节流 防抖 常见状态码

    Ajax工作原理 1 http网络传输协议 规定 前后端交互的 数据传输格式 协议 规定 前后端交互的数据传输格式 2 http协议组成两个部分 2 1前端 必须发送 请求报文格式 2 2后端 必须响应 响应报文格式 3 请求报文格式组成
  • VueX是什么?好处?何时使用?

    VueX相关 1 VueX是什么 2 使用VueX统一管理状态的好处 3 什么样的数据适合存储到Vuex中 1 VueX是什么 VueX是实现组件全局状态 数据 管理的一种机制 可以方便的实现组件之间数据的共享 如果没有VueX实现数据间的
  • 点云配准(四) Sparse Point Registration 算法浅析

    Sparse Point Registration SPR 是一篇2017年的点云配准算法 该算法的主要目的是对稀疏点云进行配准 并且取得了不错的成果和突破 本文一方面是对SPR配准算法模型进行了简单的原理解析以及附加代码实现 另一方面是对
  • c++ 的 multiple definition of `XXX‘

    文章目录 一 为什么会有多重定义问题 二 一些错误情景 1 头文件忘记加条件编译 2 类的静态变量在头文件定义 3 全局变量在 h文件定义 4 待补充 三 参考链接 一 为什么会有多重定义问题 声明 指出存储类型 并给出存储单元指定名称 定
  • C语言博客作业--嵌套循环

    一 PTA实验作业 题目1 7 1 查询水果价格 给定四种水果 分别是苹果 apple 梨 pear 桔子 orange 葡萄 grape 单价分别对应为3 00元 公斤 2 50元 公斤 4 10元 公斤 10 20元 公斤 首先在屏幕上