我的Cs50凯撒密码程序可以运行,但不会通过check50测试]] << [

问题描述 投票:0回答:1
我的程序在我自己进行测试时会运行,并且预期的输出与check50测试中的实际输出匹配。但是,我仍然无法通过大多数测试。

这是我的代码:

#include <cs50.h> #include <stdio.h> #include <string.h> #include <stdlib.h> string get_plain(void); int main(int argc, string argv[]) { //checks to see if only one argument is inputted. if (argc != 2) { printf("Usage: ./caesar key\n"); return 1; } //Checks to see if the argument is an integer. int key = atoi(argv[1]); if (key == 0) { printf("Usage: ./caesar key\n"); return 1; } //Grabs plaintext input off user string plaintext = get_plain(); int j = strlen(plaintext); //creates an array the size of the user string input. char ciphar[j]; printf("ciphertext: "); for (int i = 0; i <= j; i++) { //Checks to see if the input is uppercase. if (plaintext[i] >= 'A' && plaintext[i] <= 'Z') { //Checks if the input and the key added do not exceed ascii limits on uppercase letters. if (plaintext[i] + (key % 26) > 90) { ciphar[i] = plaintext[i] + (key % 26) - 26; printf("%c", ciphar[i]); } else { ciphar[i] = plaintext[i] + (key % 26); printf("%c", ciphar[i]); } } //Checks to see if the input is uppercase. else if (plaintext[i] >= 'a' && plaintext[i] <= 'z') { //Checks if the input and the key added do not exceed ascii limits on lowercase letters. if (plaintext[i] + (key % 26) > 122) { ciphar[i] = plaintext[i] + (key % 26) - 26; printf("%c", ciphar[i]); } else { ciphar[i] = plaintext[i] + (key % 26); printf("%c", ciphar[i]); } } else { printf("%c", plaintext[i]); } } printf("\n"); return 0; } //Grabs plaintext input off user string get_plain(void) { string plaintext = get_string("Plaintext: "); return plaintext; }

这是我从Check50收到的输出

Results for cs50/problems/2020/x/caesar generated by check50 v3.0.10 :) caesar.c exists. :) caesar.c compiles. :( encrypts "a" as "b" using 1 as key expected "ciphertext: b\...", not "ciphertext: b\..." :( encrypts "barfoo" as "yxocll" using 23 as key expected "ciphertext: yx...", not "ciphertext: yx..." :( encrypts "BARFOO" as "EDUIRR" using 3 as key expected "ciphertext: ED...", not "ciphertext: ED..." :( encrypts "BaRFoo" as "FeVJss" using 4 as key expected "ciphertext: Fe...", not "ciphertext: Fe..." :( encrypts "barfoo" as "onesbb" using 65 as key expected "ciphertext: on...", not "ciphertext: on..." :( encrypts "world, say hello!" as "iadxp, emk tqxxa!" using 12 as key expected "ciphertext: ia...", not "ciphertext: ia..." :) handles lack of key :( handles non-numeric key timed out while waiting for program to exit :) handles too many arguments

如您所见,预期输出与实际输出相同。然而,测试仍然失败。

[如果能给我一个想法,我将非常感激。我仍在学习,因此对与我的问题相关和不相关的代码的任何批评也将不胜感激。

我的程序在我自己进行测试时会运行,并且预期的输出与check50测试中的实际输出匹配。但是,我仍然无法通过大多数测试。这是我的代码:#include

#...

c cs50 caesar-cipher
1个回答
1
投票
仅预期输出和实际输出

外观

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