求帮助,随机产生和为 100 的 10 个 0-30 的随机数,和为 100 不会怎么实现,
											求帮助,随机产生和为100的10个0-30的随机数,和为100不会怎么实现,										
					
	 2014-11-20 13:44
	    2014-11-20 13:44
   2014-11-20 14:37
	    2014-11-20 14:37
   2014-11-20 15:38
	    2014-11-20 15:38
   程序代码:
程序代码:#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int 
main()
{
    int a[10] ;
    int i, temp ;
    int sum = 100 ;        //和初始化为100
    srand ( (unsigned)time(0) );
    /*
    **因为和固定为100,所以只需要随机生成9个数,100减9个数之和就是第十个数
    */
    for ( i = 0; i < 9; i++) {
        temp = rand() % 31 ;
        /*
        **每生成一个数temp,就用sum-temp检查生成的数字之和是否超过了100
        */
        if ( sum - temp >= 0 ) {
            a[i] = temp ;
            sum -= temp ;
        }
        else {
            i-- ;
        }
    }
    a[9] = sum ;
    for ( i = 0; i < 10; i++ ) {
        printf("%02d  ",a[i]);
    }
    printf ( "\n" ) ;
    system("pause");
    return 0;
}										
					
	
 2014-11-21 18:14
	    2014-11-21 18:14
   2014-11-21 19:38
	    2014-11-21 19:38
   程序代码:
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int a[10];
int i, j, k, sum = 0;
void print(int *b);
int main(void)
{
    srand((unsigned int)time(NULL));
  L:for (i = 0; i < 10; i++)
    {
        a[i] = 1 + (int)(30.0 * rand() / (RAND_MAX + 1.0));
        do
        {
            i++;
            a[i] = 1 + (int)(30.0 * rand() / (RAND_MAX + 1.0));
            for (j = 0; j < i;)
            {
                if (a[i] != a[j])
                {
                    j++;
                }
                else
                {
                    a[i] = 1 + (int)(30.0 * rand() / (RAND_MAX + 1.0));
                    i--;
                    continue;
                }
            }
            //printf("%d %d\n", a[i-1], a[i]);
        } while (i < 9);
        for (k = 0; k < 10; k++)
        {
            sum += a[k];
        }
        if (sum != 100)
        {
            sum = 0;
            goto L;
        }
    }
    print(a);
    printf("\n");
    return 0;
}
void print(int *b)
{
    int t, x, y;
    for (x = 0; x < 10; x++)
    {
        for (y = 0; y < (9 - x); y++)
        {
            if (b[y] > b[y + 1])
            {
                t = b[y];
                b[y] = b[y + 1];
                b[y + 1] = t;
            }
        }
    }
    for (x = 0; x < 10; x++)
    {
        printf("%02d  ", b[x]);
    }
}
										
					
	
 2014-11-23 17:22
	    2014-11-23 17:22
   2014-11-24 15:57
	    2014-11-24 15:57
   2014-11-24 16:36
	    2014-11-24 16:36