我在试着回答这个问题:
编写一个函数,通过main方法给定一个整数n
,其中1 ≤
n ≤ 9999
并打印是偶数, 奇数,还是/and 素数。把你的答案写在表格里:2 is even and prime
/*Lab2 ex4 */
#include <stdio.h>
#include <math.h>
#include <stdbool.h>
bool IsPrime(int num)
{
int i;
for (i=2; i<num; i++)
{
if (num%i == 0)
{
return false;
}
}
return true;
}
bool IsEven(int num)
{
if (num%2 == 0)
{
return true;
}
else
{
return false;
}
}
char BoolToString(bool prime, bool even)
{
if (prime == true, even == true)
{
char* result = "is even and prime";
return result;
}
else if (prime == true, even == false)
{
char* result = "is odd and prime";
return result;
}
else if (prime == false, even == true)
{
char* result = "is even and not prime";
return result;
}
else if (prime == false, even == false)
{
char* result = "is odd and prime";
return result;
}
else
{
char* result = "error";
return result;
}
}
main()
{
printf("%d %cn", 11, BoolToString(IsPrime(11), IsEven(11)));
}
但是我得到错误消息返回使整数从指针没有强制转换在BoolToString函数的返回语句。
我不明白我做错了什么?多谢。
(我大约两周前才开始学习C语言,所以如果我以一种可怕的方式做了一些事情,或者完全误解了某些东西的使用方式,那么我道歉。)
必须使用char*
返回类型返回char*
的数据。
此外,在这种情况下使用const char*
更好,因为字符串字面值是不可修改的。
const char *BoolToString(bool prime, bool even)
{
if (prime == true && even == true)
{
return "is even and prime";
}
else if (prime == true && even == false)
{
return "is odd and prime";
}
else if (prime == false && even == true)
{
return "is even and not prime";
}
else if (prime == false && even == false)
{
return "is odd and prime";
}
else
{
return "error";
}
}
您还必须在main
函数中使用%s
而不是printf
中的%c
。
你的函数有一个返回类型char
,你试图返回const char*
(因为字符串字量是不可变的)。此错误意味着您正在尝试将指针转换为数字,而这不是您想要的。
只要改变你的函数返回const char*
,它将是正确的
char and Char* are not same thing. char as a data stores just one character like
char x = 'c';
char* on other hand is pointer to the base address of character type array. like
char* msg ="Hello World";
Your return type should be char* because you are returning a char* type variable which contains the base address of string.
您将函数返回显示为char,但您的return语句返回指向char的指针,这不是一回事。
试试这个:
const char *BoolToString(bool prime, bool even)
{
if (prime && even)
{
const char* result = "is even and prime";
return result;
}
else if (prime && !even)
{
const char* result = "is odd and prime";
return result;
}
else if (!prime && even)
{
const char* result = "is even and not prime";
return result;
}
else if (!prime && !even)
{
const char* result = "is odd and prime";
return result;
}
else
{
const char* result = "error";
return result;
}
}