gpt4 book ai didi

c - 检测 scanf 读取的值的变化

转载 作者:行者123 更新时间:2023-11-30 14:28:55 25 4
gpt4 key购买 nike

对于作业,我们应该从文本文档中读取日期和相关值(温度)的列表。每行中的值以逗号分隔。

示例数据:

dd,mm,yyyy,x,y,z,w
01,01,2011,1.1,5.2,6.5,7.5
02,01,2011,2.1,5.2,6.1,1.1
03,01,2011,4.5,2.5,6.1,2.1
...
30,01,2011,4.1,6.1,6.1,2.1
01,02,2011,2.5,6.1,7.1,6.3

到目前为止,我已经实现了一个循环来读取每一行:

while(scanf("%d,%d,%d,%f,%f,%f,%f", &dd, &mm, &yyyy, &x, &y, &z, &w) == 7)
{
}

我们假设文档中没有错误,并且没有重复的日期。

但是,可能会缺少条目(并非每个月都有完整的数据;缺少日期)。

我无法检测每个月的数据 (mm) 是完整的月份还是仅部分月份。

例如:2011 年 3 月有 31 天。如果我从 3 月开始有 31 个条目,我需要打印“完整月份”,否则如果缺少天数,我必须打印“部分月份”。

到目前为止,我一直在使用 if(mm==1){} 语句来分隔 while(scanf(...)) 循环中的每个月,并且然后在单独的变量中增加它们,然后将其与完整月份的天数进行比较,但我不知道如何实现它,因此它检测到 mm 已从上一行(新月份)更改并执行特定操作(例如:计算)

抱歉,如果这令人困惑!

我们还没有学过数组,只有运算、循环和函数。

最佳答案

首先,我认为您不希望不同月份有“单独的变量”。为什么不是一个按月份(即 mm)索引的数组?这可能会将您的代码长度减少一个数量级。哦,你还没有学过数组。

其次,在循环顶部设置一个“last_mm”变量。这将是上次循环时 mm 的值。将其初始化为-1或其他值。当last_mm和mm不同时,你就知道月份已经改变。在循环的底部,将 last_mm 设置为 mm。

通常,这是在循环期间检测变化的方法。

关于c - 检测 scanf 读取的值的变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5472971/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com