-5

我编写了这段代码来置换任何数字,并出现以下错误: In function 'int main()': invalid use of void expression

#include <stdio.h>
#include <stdlib.h>

typedef unsigned long int uint;   
uint t[11],n;

void permute(uint k) {      
   uint i,c;

  if (1==k) {    
     for (i=n; i>0; --i)

     printf("%d", t[i]);  
     printf("\n"); 
  } 
  else 
  {    
    permute(k-1);   
    for (i=1; i<k; ++i)
    {   
      c=t[i]; t[i]=t[k]; t[k]=c;    
      permute(k-1);    
      c=t[i]; t[i]=t[k]; t[k]=c;}
    }
 }

 void run(uint x)
 {    
    n=0;
    while (x>0)
    {    
       t[++n]=x%10;    
       x /= 10;
    }    
    permute(n);
}

int main () 
{  
    printf ("%d\n",run(125)); 
}
4

3 回答 3

3
printf ("%d\n",run(125));

您正在使用函数的返回值runrun什么也不返回

void run(uint x)

void表示该函数不返回任何内容,

于 2013-04-08T17:00:14.313 回答
1

您已声明 run asvoid run( uint x)但您将其作为参数传递printf(),期望它返回一个整数值以匹配"%d\n"格式字符串。

于 2013-04-08T17:01:01.830 回答
0

run返回,并且当它不返回任何值时void,您不能从函数中“提取”一个整数。run这是无效的。

于 2013-04-08T17:12:37.723 回答