2013-04-08 26 views
-4

我写此代码来置换任意数量和出现以下错误: 在函数“廉政的main()”: 无效使用无效表达这个c语言代码有什么问题?

#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)); 
} 
+0

为便于阅读,请格式化! TIA – 2013-04-08 17:02:20

回答

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

您正在使用的返回值功能runrun返回任何

void run(uint x) 

void表示该功能没有返回,

1

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

0

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