cs50 相关问题

对于使用cs50.h的代码,该库用于哈佛大学自学入门计算机科学课程,使用名为CS50的C语言。不要忘记标记[C]。

尽管在 cs50 小时练习题中使用了浮动,平均时间还是被截断了

在cs5的每周2小时练习题中,代码正确地给出了花费的总小时数,但尽管使用了浮动,但它还是截断了每周的平均小时数。我哪里错了? #包括 在 cs5 的每周 2 小时练习题中,代码正确地给出了花费的总小时数,但尽管使用了浮点数,它还是截断了每周的平均小时数。我哪里错了? #include <cs50.h> #include <ctype.h> #include <stdio.h> float calc_hours(int hours[], int weeks, char output); int main(void) { int weeks = get_int("Number of weeks taking CS50: "); int hours[weeks]; for (int i = 0; i < weeks; i++) { hours[i] = get_int("Week %i HW Hours: ", i); } char output; do { output = toupper(get_char("Enter T for total hours, A for average hours per week: ")); } while (output != 'T' && output != 'A'); printf("%.1f hours\n", calc_hours(hours, weeks, output)); } // TODO: complete the calc_hours function float calc_hours(int hours[], int weeks, char output) { int tot = 0; for (int i = 0; i < weeks; i++) { tot = hours[i] + tot; } if (output == 'T') { return (float) tot; } return (float) (tot / weeks); } 当出现提示时,我输入了每周花费的周数和小时数,并输入 A 以获得每周花费的平均小时数,但它仅输出整数值而不是浮点数。 如注释中所述,您将整数除法的结果转换为 float。 (float) (tot / weeks) 您需要将其中一个操作数转换为 / 到 float first 才能执行浮点数学。 (float)tot / weeks

回答 1 投票 0

CS50 pset3 我想调整此图像的大小,代码对某些人有效,对其他人无效?谁能告诉我出了什么问题吗?

我想按“n”调整它的大小,它对某些图像有效,但对其他人无效,我不知道为什么,据我所知,它没有图像特定的代码,它应该适用于每个图像 // 获取乘数 int n = atoi...

回答 1 投票 0

CS50P PSETS 2,梳妆台

我对cs50p的psets2有一些问题,确切地说,我正在谈论“虚荣板”问题,我满足了除一个之外的所有请求,该问题说: “数字不能用于...

回答 14 投票 0

已过时 - CS50 的 Python 编程简介:代码不会中断

我正在使用CS50的教程来自学Python。我正在尝试解决问题集 3 中的“过时”问题。当我输入日期为 9/8/1636 时,代码可以正常工作(即,正确地将日期转换为...

回答 1 投票 0

我正在 cs50p 中实现 pset3 Felipe’s Taqueria;但我在运行调试后注意到变量中有一些奇怪的东西

我的代码似乎工作得很好,除了它输出一个只有一位小数的浮点数,而不是根据创建的字典输出的两位小数。 字典给每个项目一个价格,例如“Taco”:3.00;

回答 1 投票 0

错误:- 从不兼容的指针类型传递“get_string”的参数 1 [-Win兼容指针类型]

大家请告诉我的代码有什么问题。 我已经添加了 cs50 库和头文件,但似乎无法正确执行。 我是初学者,想知道你的建议。 代码 :- #包括 大家请告诉我的代码有什么问题。 我已经添加了 cs50 库和头文件,但似乎无法正确执行。 我是初学者,想知道你的建议。 代码:- #include <stdio.h> #include <cs50.c> #include <string.h> int main(void) { string s = get_string("Input: "); printf("Output: "); int n = strlen(s); for( int i = 0; i < n; i++) { printf("%c", s[i]); } printf("\n"); } 错误:- 3.c: In function 'main': 3.c:7:27: warning: passing argument 1 of 'get_string' from incompatible pointer type [-Wincompatible-pointer-types] 7 | string s = get_string("Input: "); | ^~~~~~~~~~~ | | | char * In file included from 3.c:2: C:/msys64/mingw64/x86_64-w64-mingw32/include/cs50.c:78:28: note: expected 'char **' but argument is of type 'char *' 78 | string get_string(va_list *args, const char *format, ...) | ~~~~~~~~~^~~~ 3.c:7:16: error: too few arguments to function 'get_string' 7 | string s = get_string("Input: "); | ^~~~~~~~~~ In file included from 3.c:2: C:/msys64/mingw64/x86_64-w64-mingw32/include/cs50.c:78:8: note: declared here 78 | string get_string(va_list *args, const char *format, ...) 评论和之前的答案中已经指出,您不应包含 cs50.c 文件,而应仅包含 cs50.h 文件并将 cs50.c 文件链接到您的项目。 这通常是正确的,除非您有非常具体的理由要采取不同的做法。 但是......通常这不会导致我们在问题中看到的错误。 这是因为 cs50.c 文件本身包含 cs50.h,我们应该让所有定义和声明可见。 在这个具体案例中,我们遇到了 CS50 库的一些具体实现细节,这有点令人惊讶。而且也没有必要... 让我们仔细看看标题: // cs50.h string get_string(va_list *args, const char *format, ...) __attribute__((format(printf, 2, 3))); #define get_string(...) get_string(NULL, __VA_ARGS__) 在这两行之后,我们可以按照该问题作者的意图使用 get_string:string s = get_string("Input: "); 为什么有人认为将函数隐藏在具有相同名称但不同参数的宏后面是一个好主意,这并不是很明显。 在大多数其他 API 中,该函数的名称与宏的名称不同。 但是,没关系... 现在让我们看看C文件: // cs50.c #include "cs50.h" ... #undef get_string string get_string(va_list *args, const char *format, ...) { ... } 如果你自己编译这个文件,一切都很好。 .c 文件不需要宏,只需在定义函数之前将其删除即可。 但是,如果您将其包含在您自己的文件中,而您应该在其中使用宏,则这就不再可能了。 如果直接包含该文件,undef 会破坏 API。 这强调了这样一个事实:您应该只包含标题。它们应该被包含在内,并且是相应地制作的。正如我们所看到的,保存实现的 .c 文件不一定是这样制作的...... 附带说明:这个#undef根本没有必要。你可以简单地这样做: // cs50.c #include "cs50.h" ... string (get_string)(va_list *args, const char *format, ...) { ... } 封闭 () 后,标识符 get_string 不再与宏 get_string() 匹配,并且不会进行替换。 这甚至允许直接包含 .c 文件。 也许他们故意选择这种方式来防止包含 c 文件,但我不会打赌。 cs50 文档指出您应该包括 cs50.h,而不是 cs50.c。 https://cs50.readthedocs.io/libraries/cs50/c/#c.get_char https://cs50.readthedocs.io/libraries/cs50/c/#c.get_string 您需要在包含路径中添加头文件。 我正在开发 Codeblocs,您需要包含 ,而不是 。 get_string 需要两个参数。在 "" : 之前放置第一个空参数 "Input: " string s = get_string("", "Input: ");

回答 3 投票 0

CS50 taqueria 任务 - eof 停止程序的输入

我正在尝试解决哈佛 CS50 python 课程的 taqueria 任务。它通常有效,但 check50 会输出以下内容: :( 输入 EOF 会停止程序 原因 预期退出代码 0,而不是 1 T...

回答 2 投票 0

为什么我的代码在 DOMContentLoaded 中不起作用?

<!DOCTYPE html> <html lang="en"> <head> <link href="https://fonts.googleapis.com/css2?family=Montserrat:wght@500&display=swap" rel="stylesheet"> <link href="styles.css" rel="stylesheet"> <title>Trivia!</title> <script> // TODO: Add code to check answers to questions document.addEventListener('DOMContentLoaded' function() { let correct = document.querySelector('.correct'); correct.addEventListener('click', function(){ correct.style.backgroundColor = 'green'; document.querySelector('#feedback1').innerHTML = 'Correct!'; }); let incorrects = document.querySelectorAll('.incorrect'); for (let i = 0; i < incorrects.length; i++) { incorrects[i].addEventListener('click', function(){ incorrects[i].style.backgroundColor = 'red'; document.querySelector('#feedback1').innerHTML = 'Incorrect!'; }); } document.addEventListener('#check', function() { let input = document.querySelector('input'); if (input.value == 'apples') { input.style.backgroundColor = 'green'; document.querySelector('#feedback2').innerHTML = 'Correct!'; } else { input.style.backgroundColor = 'red'; document.querySelector('#feedback2').innerHTML = 'Incorrect!'; } }); }); </script> </head> <body> <div class="header"> <h1>Trivia!</h1> </div> <div class="container"> <div class="section"> <h2>Part 1: Multiple Choice </h2> <hr> <!-- TODO: Add multiple choice question here --> <h3>What is 6*3/(2+1)?</h3> <button class="correct">6</button> <button class="incorrect">1</button> <button class="incorrect">3</button> <p id="feedback1"></p> </div> <div class="section"> <h2>Part 2: Free Response</h2> <hr> <!-- TODO: Add free response question here --> <h3>What is the best fruit on Earth?</h3> <input autocomplete="off" placeholder="Answer" type="text"> <button id="check">Answer!</button> <p id="feedback2"></p> </div> </div> </body> </html> 这应该是一个琐事,其中一个问题是多项回答问题,一个是自由回答问题。对于多项答案问题,有三个答案或三个按钮。当单击正确按钮时,其颜色应该更改为绿色,并且问题下方的文本应该显示“正确”。如果按下了不正确的按钮,该按钮应该变成红色,并且问题下方的文本应该显示“不正确”。 免费答案问题基本上是相同的,而如果有正确答案,文本栏会变成绿色,并显示正确的消息,如果不正确,您就明白了。 但这些都不起作用,我认为按钮出现故障,那么我的代码是否存在严重缺陷或其他问题? 您忘记了“DOMContentLoaded”后面的逗号: document.addEventListener('DOMContentLoaded', function() { ^ |

回答 1 投票 0

C50 学分-Python

请注意,我是一个非常困惑的初学者,但我很喜欢这门课程并且渴望学习。 下面是我的代码,我想了解一些事情: 为什么如果我定义 main 我会收到多个错误......

回答 1 投票 0

cs50 恢复仍然可达,但没有 valgrind 错误

我已经在“恢复”程序中挣扎了几个小时,但似乎找不到问题。 我以为我已经关闭了所有文件,而且我还没有使用“malloc”语法来存储内存

回答 1 投票 0

C 代码无法在 vscode 或 ide 中继续运行

我正在编写有关计算美洲驼数量的cs50代码,但它停在中间并且不返回任何内容。 该代码要求用户输入起始尺寸和结束尺寸的数量,然后计算...

回答 1 投票 0

CS50练习题中的这行代码是做什么的? (语言为C)

我目前正在研究CS50x课程第一周的“一半”练习题。我在阅读他们提供的代码中的几行时遇到困难,希望有人能够清除...

回答 2 投票 0

我的 check50(cs50 python 课程)中仍然收到“等待程序退出时超时”的消息

根据我对程序所做的手动检查,我的输出正确无误,但是当我运行 check50 时,我遇到了这个问题...... :) Professor.py 存在 :) 小教授拒绝0级 :) L...

回答 1 投票 0

对于用户给定的输入,代码运行部分正确(CS50 Python 简介 pset1)

我有一个任务,我实现一个程序,提示用户回答生命、宇宙和一切的大问题,如果用户输入 42 或(不区分大小写...

回答 2 投票 0

为什么输入经过函数转成float后仍然是字符串类型?

我输入一个像 7:30 这样的时间,通过 Convert() 函数运行它,将其转换为等于 7.5 的浮点数。然后将其回调到 main() 并检查它现在是什么类型,它告诉我它仍然是一个...

回答 1 投票 0

无法再连接到代码空间

几个月前我通过 CS50.dev 创建了 codespace,并且从那时起就一直在使用它。然而,从两周前开始我突然就无法这样做了。登录github(通过cs50.dev)后,显示“Codespace

回答 1 投票 0

CS50 - 拼写器 |加载功能无法正常工作

在我的代码中,我认为我做得很好,但是当我运行我的程序时,它不会加载整个字典,这会导致拼写错误的单词数量增加 不知怎么的,用 check5 就通过了 8/9...

回答 1 投票 0

cs50 拼写器作业中的无限循环

我当时正在做cs50拼写器作业,一旦我完成了加载函数的调试,程序就在无限循环中运行,没有执行任何操作或打印任何内容。 // 实现一个字典...

回答 1 投票 0

不理解do while循环。 C

我对下面的代码有一些问题: 当输入小于 9 的数字时,它不会再次提示用户输入,并且 收到正确的输入后不会进入下一个标准...

回答 1 投票 0

cs50 拼写检查 pset5 中出现“malloc():损坏的顶部大小”错误

我正在研究 cs50 pset5 拼写器分配加载帮助程序函数,并收到一个错误,我不确定如何解决。它说“malloc():损坏的顶部大小”,然后是“a...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.