为什么此函数不返回char数据类型?

fcg9iug3  于 2022-12-03  发布在  其他
关注(0)|答案(1)|浏览(222)

//Prime函数

#include <stdio.h>
#include <math.h>
char Premier(int N){
    int i;
    char notpremier="Nombre n'est pas premier"; //Number is prime
    char premier="Nombre est premier"; //Number isn't prime
    for(i=2;i<=sqrt(N);i++){
        if(N % i==0){
            return notpremier;
        }
        else{
            return premier;
        }
    }
}
int main() {
    printf("%c",Premier(10));
    return 0;
}

但是,当我选择返回int数据类型时,它工作得很完美。

rks48beu

rks48beu1#

对于初学者来说,如果用户要传递一个小于4的值,则函数不返回任何值。
其次,您尝试使用char *类型的表达式初始化char类型的对象,因为用作右手操作数的字符串文字被隐式转换为指针。
注解也无效。

char notpremier="Nombre n'est pas premier"; //Number is prime
char premier="Nombre est premier"; //Number isn't prime

你必须移动else语句的子语句

else{
        return premier;
    }

在for循环下面。
至少你要写

char * Premier(int N){

char * notpremier="Nombre n'est pas premier"; //Number isn't prime
char * premier="Nombre est premier"; //Number is prime

for(i=2;i<=sqrt(N);i++){
    if(N % i==0){
        return notpremier;
    }
}

return premier;

但也要考虑到01不是素数,函数参数应该是无符号整数类型,例如unsigned int,而不是有符号整数类型int
并且,函数应返回整数,而不是返回字符串文字:1 -传递的数字是质数,0 -传递的数字不是质数。

相关问题