【问题标题】:Multiply int array with char array将 int 数组与 char 数组相乘
【发布时间】:2021-09-16 12:42:38
【问题描述】:

我想在 C 中创建一个函数,给定一个整数 D(1 到 5 之间)和一个字符串 S(只有“一”、“二”、“三”、“四”或“五”),返回以整数表示的 D 和 S 相乘的结果。例如,给定 D = 4 和 S = "two",我的函数应该返回 8。

如何确保 int 数组与 char 数组相乘?

【问题讨论】:

  • 所以您需要编写一些函数来解析以空字符结尾的字节字符串中的写入数字吗?所以可能我会假设使用strcmp 的东西?
  • 你应该Edit这个问题并添加你的代码。 StackOverflow 可以帮助您更好地编写代码。
  • int strangemultiplication(int D, const char *S) { int m = 0; switch (S[1]) { case 'n': m = 1; break; case 'w': m = 2; break; ... case 'i': m = 5; break; } return D * m; }
  • @UnholySheep :是的,我该怎么做?我是 C 新手。
  • 很遗憾,StackOverflow 不是一所编程学校。您可能想再次阅读“How to Ask”或任何其他help center 页面。任何好的 C 书籍或在线教程(明智选择,废话很多)都会更好地为您服务。

标签: arrays c


【解决方案1】:
  1. 构建按字母顺序排序的const int-string 值对查找表。
  2. 将用户输入作为字符串并将其用作搜索键。
  3. 应用二分搜索。

对于大量数据,请考虑使用哈希表。

【讨论】:

    【解决方案2】:
    #include <stdio.h>
    #include <string.h>
    
    int convert(const char *string)
    {
        if (!strcmp(string, "one"))
            return 1;
    
        if (!strcmp(string, "two"))
            return 2;
    
        if (!strcmp(string, "three"))
            return 3;
    
        if (!strcmp(string, "four"))
            return 4;
    
        if (!strcmp(string, "five"))
            return 5;
    
        return 0; // if string is anything else
    }
    
    int multiply(int D, const char *S)
    {
        return D * convert(S);
    }
    
    int main()
    {
        int D = 4;
        char *S = "two";
        printf("%d times %s = %d\n", D, S, multiply(D, S));
    }
    

    输出:

    4 times two = 8
    

    【讨论】:

    • 这是非常低效的。可以用于小型人造学生项目,但不能用于实际代码。
    • @Lundin 我知道。这显然是一个小型的人造学生项目。否则,对于作为字符串传递的任何数字,他将不得不编写一个 string_to_int 转换器。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-04
    • 2017-02-26
    • 2020-05-26
    • 2011-11-09
    • 2017-02-19
    • 1970-01-01
    相关资源
    最近更新 更多