【问题标题】:In C, can you have strings in arrays and, if not, is there a workaround在 C 中,您可以在数组中包含字符串吗?如果没有,是否有解决方法
【发布时间】:2018-03-09 07:25:00
【问题描述】:

在此代码中,您输入一个数字,它会通过返回 0 或 1 来告诉您它是否是素数。然后它应该打印数组“素数”的第 0 项或第 1 项。但是,我遇到了这个问题,我不知道如何解决列表问题。 (我对 C 完全陌生)

#include <stdio.h>
#include <string.h>
int test(int number) { /*1 means prime, 0 means not*/
    int iter;
    int mod;
    if (number == 1) {
        return 0;
    }
    for (iter=2;iter<number-1;iter+=1) {
        if (number % iter == 0){
            return 0;
        }
    }
    return 1;
}
int main(){
    char prime[2] = {'This number isn\'t prime','This number is prime'};
    int userIn;
    printf("Enter an integer to check: ");
    scanf("%d",userIn);
    printf("%c",prime[test(userIn)]);
}

【问题讨论】:

  • char 表示单个字符,字符串用双引号分隔
  • 解决方法是阅读初级 C 书籍中关于数组的章节,然后阅读关于字符串的章节。代码是废话。
  • 原来问题只是在 scanf 中,将 'userIn' 没有 '&userIn' 并且数组 'prime' 不是多维的。感谢大家的帮助,因为它现在正在工作!

标签: c


【解决方案1】:

我已经添加了函数声明和 printf。

#include <stdio.h>

int primeNumber(int number); //function declaration

int main() {
    int userIn;
    printf("Enter an integer to check: ");
    scanf("%d",&userIn);
    if(primeNumber(userIn) == 0) {
        printf("This number isn\'t prime");
    } else {
        printf("This number is prime");
    }
    return 0;
}

int primeNumber(int number) {
    int iter;
    if (number == 1 || number < 0) {
        return 0;
    }
    for (iter = 2; iter < number - 1; iter += 1) {
        if (number % iter == 0){
            return 0;
        }
    }
    return 1;

}

【讨论】:

    【解决方案2】:
    bool IsPrime (int number) { // Make your function names more descriptive...
        int iter;
        // int mod; ...and remove superfluous variables
    
        if (number < 1) {
            return false;
        }
    
        // There are further possibilities for improvement here...
        for (iter = 2; iter < number - 1; iter += 1) {
            if (number % iter == 0) {
                return false;
            }
        }
    
        return true;
    }
    
    int main(int argc, char *argv[])
    {
        const char* outcomes[2] = { "This number isn't prime", "This number is prime" };
        int input;
        printf("Enter an integer to check: ");
        scanf("%d", &input);   // Note that scanf requires pointer to input! 
        printf("%s", outcomes[IsPrime(input)]);
    
        return 0;
    }
    

    【讨论】:

    • 所以所有负数都是素数?这对我来说是个新闻。如果你认为用一大堆代码来回答是合适的,那么至少要解决错误。
    • 感谢您极具建设性的反馈
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-21
    • 2022-01-13
    • 2016-12-12
    相关资源
    最近更新 更多