函数返回一个char(初学者)

Eli*_*ise 0 c return char

我想回答这个问题:

编写一个给定整数的函数n,通过main方法在哪里1 ? n ? 9999打印是否为偶数,奇数或/和素数.在表格中写下你的答案:
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 %c\n", 11, BoolToString(IsPrime(11), IsEven(11)));                                                                                            

}    
Run Code Online (Sandbox Code Playgroud)

但我得到错误消息返回使得指针中的整数没有在BoolToString函数的返回语句上强制转换.

我不明白我在这里做错了什么?非常感谢.

(我大约两周前才开始使用C,如果我以一种可怕的方式做某事或者完全误解了某些东西是如何被使用的话,那么道歉.)

Mik*_*CAT 6

您必须使用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";
  }

}
Run Code Online (Sandbox Code Playgroud)

您还必须使用%s而不是%cin printfin mainfunction.