问题标签 [cs50]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - cs50 中的 Vigenere 密码
我正在通过在线课程教我如何编码。我对此很陌生,并且一直在慢慢地完成这门课。我遇到了 vingenere 密码的问题。它不会在整个输入中迭代密钥。
编辑:键应该遍历用户输入,当它到达键的末尾时,循环回来并重新开始。该键还应跳过任何特殊字符(!@#“”等)
我知道字符串不正常,但它包含在标题中以帮助新生。我想随着课程的进展我们会学到更多。
c - 为什么这会导致分段错误?
我正在对链表进行练习。当我在列表开头输入值并且值小于列表中的值时,它会起作用。但是当数字更大时,我会遇到分段错误。有人想下面的代码有什么问题吗?
//标题(称为headeroef):
//其他代码
c - CS 50- Pset 1 马里奥程序
问题集要求我们使用哈希创建一个半金字塔。这是一个链接到它应该如何看待的图像 -
我明白了这个想法并编写了程序,直到打印空格(我已将其替换为“_”,以便我可以测试它的前半部分。
但是,当我尝试运行我的程序时,它并没有超出 do-while 循环。换句话说,它一直问我金字塔的高度,似乎根本没有运行 for 循环。我尝试了多种方法,但这个问题似乎仍然存在。
任何帮助,将不胜感激!
下面是我的代码-
运行此程序会产生以下输出 -
c - 凯撒密码:正确加密但输出缺少空格和标点符号
从昨天开始,我一直在研究这个问题,经过一番努力,我成功地加密了消息。但是,我的输出缺少空格。
据我了解,发生这种情况的原因是因为我正在使用 isalpha()、isupper() 和 islower() 命令,因此忽略了原始输入中的空格。
有人可以帮助我如何保留原始空格和标点符号吗?
下面是我的代码——它远非优雅,任何关于风格的评论也将不胜感激!
(此外,虽然有很多关于 Caesar Cipher 的问题,但没有一个可以解决这个问题。由于这是我的第一周编程,我很难理解其中的语法。)
我的算法中有一个明显的错误,如果给定某些参数,它会导致它输出错误的值。例如 ak 为 13,在第 13 个字母(我认为是 m)之后输入任何东西都会输出一些非常奇怪的东西。我会修改这个并很快回来!在那之前,对我的代码持保留态度!
更正的代码,工作正常:SPOILERS AHEAD
c - 命令行参数分段错误(核心转储)
我知道分段错误意味着我正在尝试使用我不应该触摸的内存,但我无法弄清楚它在我的代码中来自哪里。我为一个作业编写了一个程序,该程序使用 vigenere 的密码来加密一些纯文本。它编译得很好,但是当我使用命令行参数运行它时,我得到一个分段错误。
c - C中的Vignere Cipher:空间未被忽略
Vignere 密码的一般解释:
Vignere 密码是一种类似于凯撒密码的加密方法。此 Cipher 将一个单词作为参数,并将单词的字母解释如下 - a 为 0,b 为 1,c 为 2,依此类推。
因此,如果您的输入密钥是“abc”并且您想要加密“hi hello”之类的内容,则输出将需要 h 保持不变,i 移动 1 位,h 移动 2 位,e 再次保持相同(如它被移动 0),l 移动 1 位,另一个 l 移动 2,依此类推。
基本思想是每个字母在参数中移动相应的字母,空格和其他标点符号被忽略。如果参数比消息短(在大多数情况下),参数只是围绕消息循环。
我的问题:
唯一存在的问题是它似乎只是为句子的第一个单词做正确的事情。它没有忽略空格。
我在下面粘贴了我的新代码。
例如,对于程序./vigenere bacon
和消息Meet me at the park at eleven am
,我希望Negh zf av huf pcfx bt gzrwep oz
作为输出。但是,我得到的是Negh ne og tjs qaty bt svfvgb bm
. 或者例如,当我在 上运行程序./vignere bc
时ABCD ABCD
,我会期望BDDF BDDF
. 相反,我得到的是BDDF CCEE
(当它应用类似于bcbcbcbcb
而不是bcbc bcbc
.
虽然第一个单词正在正确更改,但它似乎正在加密整个句子,而它应该只加密字母 - 我已经使用 isalpha 命令指定了这一点。
这就是为什么它看起来有点令人费解。
代码:
注意:这实际上是 C 而不是 C++,并且 GetInt() 和 GetString() 等一些命令在我正在使用的 CS50 库中可用。
c - C 语言中的 Vigenere 密码:不完全加密
Vigenere 密码的一般解释:
Vigenere Cipher 是一种类似于 Caesar Cipher 的加密方法。此 Cipher 将一个单词作为参数,并将单词的字母解释如下 - a 为 0,b 为 1,c 为 2,依此类推。
因此,如果您的输入密钥是 abc 并且您想要加密“hi hello”之类的内容,则输出将需要 h 保持不变,i 移动 1 位,h 移动 2 位,e 再次保持不变(因为它是被移动 0),l 移动 1 位,另一个 l 移动 2,依此类推。
基本思想是每个字母在参数中移动相应的字母,空格和其他标点符号被忽略。如果参数比消息短(在大多数情况下),参数只是围绕消息循环。
我的问题:
我的信息刚刚被 Vignere Cipher 的第一个字母加密。
例如,./vc bc
---->message: ABCDE ABCDE
变为BCDEF BCDEF
。换句话说,整个消息只是被 b 的值移动,而它应该被 bc 的值移动(第一个字母+1,其他每个字母+2。)
尽管处于循环中,但我不明白为什么会发生这种情况。
代码:
c - 需要从 do/while 和多个 while 循环中返回一个值 - C
我正在尝试构建一个简单的变化计算器。用户输入欠款金额,然后按回车键。他们输入的值应该先乘以 100(这样当我们四舍五入时,数字不会被截断)。四舍五入应该将浮点数转换为整数,然后应该执行所有数学运算(while 循环),最后打印出一个数字,表示给了多少硬币(即有多少四分之一,一角硬币,等等...)代码编译得很好,它提示用户输入一个值,但是当你按下回车键时,什么都没有执行,命令行回到空白。
任何想法我做错了什么?我的猜测是 while 循环中的值没有被转移出循环,因此它们可以在下一个循环中使用。但是我是 C 语言的早期初学者,并且不确定循环的正确规则。我尝试查找 while 循环示例,但没有真正解释如何将值从一个 while 循环传递到另一个循环。如果,事实上,这就是问题所在。谢谢你的帮助。
代码修订:
c - 为什么终端说“二进制表达式的无效操作数”?C
这是终端给出的错误:
从以下代码:
我想你对CS50的“贪婪”任务很熟悉。我需要得到剩余的x
. 也许我在教程中遗漏了一些东西,但我认为他们没有指定如何使用模%
运算符。
c - 如何在 C 中使用字符
我正在努力让 Char 工作。它不断返回错误。