【问题标题】:I need serious guidance for an assignment. (NOT ASKING FOR ANSWERS)我需要认真指导作业。 (不要求答案)
【发布时间】:2022-11-12 09:06:46
【问题描述】:

前言:此作业将在不到 7 小时内完成。上周我每天都在尝试这个任务。今天我一个人花了8个小时。我在这门课上太落后了,如果我不通过这个作业和之后的每一个作业,我都会不及格。我真的不想失败。

昨天的一些代码:I'm trying to make a function to take user input of a palindrome. Why is it after I take input for one array, it automatically inputs the rest?

(另外:对我来说最好的学习方式是被问问题。如果你们问我问题,我会尽我所能回答,如果我错了,请纠正我。)

这是作业:

限制:

  1. 您可以在本练习中使用 1 维或 2 维数组。
  2. 请勿使用指针,本练习中不允许使用指针。
  3. 不要使用全局变量。
  4. 请勿使用 printf、scanf、fgets 和 strlen 以外的库函数。目的是自己构建尽可能多的功能。

    标准:

    • 您将选择用户将输入的字符串数量(至少需要 5 个)。字符串可以是用双引号括起来的 1 个或多个单词。
    • 您应该使用#define COUNT <constant> 来设置要输入的字符串数。常数可以是任何大于或等于 5 的数字。
    • 您将至少创建 3 个函数。如果有必要,您可以创建额外的功能。
    • 您必须将这 3 个函数放在 main 声明之后。
    • 您必须创建头文件并将所有常量和原型放在 .h 文件中。

    功能:

    1. 第一个名为 getStrings 的函数将接受来自用户的 COUNT 个字符串
      • 输入的每个字符串最多应包含 30 个字符。
      • 该函数应返回用户输入的最长字符串的长度。
      • 如果您多次调用 getStrings,您可以使用静态变量。这是跟踪字符串长度的最简单方法。
      1. 称为 isPalindrome 的第二个函数确定输入的字符串是否为回文。 函数 isPalindrome 应该返回找到的回文数。
      • isPalindrome 将调用下面描述的函数 reverseStr。
      • isPalindrome 将打印字符串并声明它是否是回文。
      • 最后打印找到的最长字符串的长度。这意味着 isPalindrome 函数调用 getString 函数。
      1. 名为 reverseStr 的第三个函数将反转字符串。
      • 不要使用任何库函数,您必须构建自己的反向算法。
      • 函数 reverseStr 应该返回: 1 如果原始字符串和反向字符串相同。 如果原始字符串和反向字符串不同,则为 0。

      它没有在我的脑海中点击功能如何相互连接。我理解它们背后的概念,但是当我将其付诸实践时,我的大脑拒绝理解它。我已经报废并重新报废了很多次。请帮我。

【问题讨论】:

  • 问题是什么?
  • @alex01011 for(unsigned i = 0; i &lt; COUNT; i++) { scanf("%20s", words[i]; },
  • 是的,我错过了那部分@AllanWind
  • 这是与您链接的问题相同但更详细的问题吗?
  • @Rob 相同的任务,但其他问题是一个特定的问题。它不是重复的。

标签: c string function types palindrome


【解决方案1】:

只是一个非常简单的提示:再次查看规范并尝试逐步实现它。请注意,您需要实现 3 个附加功能。您可能知道,每个函数都有一个返回类型,您可以调用一个函数并将其返回值存储在一个变量中。

【讨论】:

    【解决方案2】:

    逐步编写您的程序(编写一些代码,编译并运行;重复下一步):

    1.

    int main(void) {
    }
    
    #include <stdio.h>
    
    #define COUNT 5
    #define MAX_STRING 30
    
    void getStrings() {
       for(int i = 0; i < COUNT; i++) {
         fgets(..., MAX_STRING, stdin);
       }
    }
    
    int main(void) {
       getStrings();
    }
    

    我们尝试编译它会失败,因为它不知道... 是什么所以我们需要为main() 中的字符串数组分配内存,或者您在getStrings() 中分配字符串。因为我们不能使用calloc/``mallocso let's do it inmain()`:

    #include <stdio.h>
    
    #define COUNT 5
    #define MAX_STRING 30
    
    void getStrings(char words[COUNT][MAX_STRING]) {
       for(int i = 0; i < COUNT; i++) {
         fgets(words[i], MAX_STRING, stdin);
       }
    }
    
    int main(void) {
       char words[COUNT][MAX_STRING];
       getStrings(words);
    }
    

    你编译你的程序,它能够读取 5 个字符串。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-06
      • 2023-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-20
      相关资源
      最近更新 更多