user-0 提问: c语言新手，一个关于抽签的问题，求帮助

回复:
user: user-1
content: 仅供参考：#include <stdio.h> #include <stdlib.h> #include <time.h> int d[6]; int i,n,a,b,t; int c,j; void main() {     srand(time(NULL));     printf("shuffle 0..n-1 demo\n");     for (n=1;n<=5;n++) {/* 测试1～5个元素 */         printf("_____n=%d_____\n",n);         j=1;         for (c=1;c<=n;c++) j=j*c;/* j为n! */         j*=n*2;         for (c=1;c<=j;c++) {/* 测试n*2*n!次 */             for (i=0;i<n;i++) d[i]=i;/* 填写0～n-1 */             for (i=n;i>0;i--) {/* 打乱0～n-1 */                 a=i-1;b=rand()%i;                 if (a!=b) {t=d[a];d[a]=d[b];d[b]=t;}             }             printf("%04d:",c);             for (i=0;i<n;i++) printf("%d",d[i]);             printf("\n");         }     }     printf("shuffle 1..n demo\n");     for (n=1;n<=5;n++) {/* 测试1～5个元素 */         printf("_____n=%d_____\n",n);         j=1;         for (c=1;c<=n;c++) j=j*c;/* j为n! */         j*=n*2;         for (c=1;c<=j;c++) {/* 测试n*2*n!次 */             for (i=1;i<=n;i++) d[i]=i;/* 填写1～n */             for (i=n;i>1;i--) {/* 打乱1～n */                 a=i;b=rand()%i+1;                 if (a!=b) {t=d[a];d[a]=d[b];d[b]=t;}             }             printf("%04d:",c);             for (i=1;i<=n;i++) printf("%d",d[i]);             printf("\n");         }     } }

user: user-2
content: 你的程序逻辑太乱了，没法改 另外对于m中取n个数，这种组合有多少种，才是b数组的大小  思路参考 http://blog.chinaunix.net/uid-20940095-id-3118454.html

user: user-0
content: 引用 2 楼 q3733353520 的回复:  function(random_numbers[],N,m,b[],sum); // 改为function(random_numbers,N,m,b,sum);  function(a[],n,m,b[],sum);//改为 function(a,n,m,b,sum);  谢谢大神！改正后没了语法错误。 可运行时还是出现了问题。是程序结构本身的错误吗？

user: user-2
content: 引用 5 楼 csdn_mr_l 的回复:[quote=引用 2 楼 linux_liyi的回复:]  function(random_numbers[],N,m,b[],sum); // 改为function(random_numbers,N,m,b,sum);  function(a[],n,m,b[],sum);//改为 function(a,n,m,b,sum);    function(random_numbers[],N,m,b[],sum); // 改为function(random_numbers,N,m,b,sum);  function(a[],n,m,b[],sum);//改为 function(a,n,m,b,sum); [/quote]   function(random_numbers[],N,m,b[],sum); // 改为function(random_numbers,N,m,b,sum);  function(a[],n,m,b[],sum);//改为 function(a,n,m,b,sum); [/quote] 为什么?这两个语句难道不是一个意思吗[/quote] 回去多看看书

user: user-0
content: 引用 2 楼 linux_liyi的回复:  function(random_numbers[],N,m,b[],sum); // 改为function(random_numbers,N,m,b,sum);  function(a[],n,m,b[],sum);//改为 function(a,n,m,b,sum);    function(random_numbers[],N,m,b[],sum); // 改为function(random_numbers,N,m,b,sum);  function(a[],n,m,b[],sum);//改为 function(a,n,m,b,sum); [/quote]   function(random_numbers[],N,m,b[],sum); // 改为function(random_numbers,N,m,b,sum);  function(a[],n,m,b[],sum);//改为 function(a,n,m,b,sum); [/quote] 为什么?这两个语句难道不是一个意思吗

user: user-0
content: 引用 2 楼 linux_liyi的回复:  function(random_numbers[],N,m,b[],sum); // 改为function(random_numbers,N,m,b,sum);  function(a[],n,m,b[],sum);//改为 function(a,n,m,b,sum);    function(random_numbers[],N,m,b[],sum); // 改为function(random_numbers,N,m,b,sum);  function(a[],n,m,b[],sum);//改为 function(a,n,m,b,sum); [/quote]   function(random_numbers[],N,m,b[],sum); // 改为function(random_numbers,N,m,b,sum);  function(a[],n,m,b[],sum);//改为 function(a,n,m,b,sum); [/quote] 为什么?这两个语句难道不是一个意思吗

user: user-0
content: 引用 2 楼 linux_liyi的回复:  function(random_numbers[],N,m,b[],sum); // 改为function(random_numbers,N,m,b,sum);  function(a[],n,m,b[],sum);//改为 function(a,n,m,b,sum);    function(random_numbers[],N,m,b[],sum); // 改为function(random_numbers,N,m,b,sum);  function(a[],n,m,b[],sum);//改为 function(a,n,m,b,sum); [/quote]   function(random_numbers[],N,m,b[],sum); // 改为function(random_numbers,N,m,b,sum);  function(a[],n,m,b[],sum);//改为 function(a,n,m,b,sum); [/quote] 为什么?这两个语句难道不是一个意思吗

user: user-2
content: function(random_numbers[],N,m,b[],sum); // 改为function(random_numbers,N,m,b,sum);  function(a[],n,m,b[],sum);//改为 function(a,n,m,b,sum);

user: user-0
content: #include<stdio.h> #include<stdlib.h> #include<time.h> #define N 3000 //function功能为：从3000个随机数中随机抽出n个数，求出n个数之和的所有可能。 void function(int a[],int n,int m ,int b[],int sum); //a[]  随机数组 //n    随机数个数 //m    抽签问题中的数m //b[]  用于存放n个数之和的所有可能 //sum  对k个数进行累加 void function(int a[],int n,int m ,int b[],int sum) {         int i;         int j;         for(i=0,j=0;i<=n;i++,j++) 	{ 	    sum=sum+a[i]; 	    if(m>0)                function(a[],n,m,b[],sum);             else             b[j]=sum;         } }  main() {     int random_numbers[N];     int m,i;     int sum=0;     int b[1000];     int k;     int given_number;     srand((unsigned)time(NULL));     for(i = 0; i < N; i++) 	{ 		random_numbers[i] = rand()%RAND_MAX; 	}     scanf("%d",&m);     function(random_numbers[],N,m,b[],sum);     scanf("%d",&given_number);     for(k=0;k<1000;k++)         { 	    if(b[k]==given_number)                 printf("ok");                 break; 	} }