64,282
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
while(1)
{
srand((unsigned)time(NULL));
int z = 60 / 5;
int a = rand() % 60 + 1;
int b = rand() % (60 - a) + 1;
int c = rand() % (60 - a - b) + 1;
int d = rand() % (60 - a - b - c) + 1;
int e = rand() % (60 - a - b - c - d) + 1;
if(a + b + c + d + e != 60)
{
printf("%d + %d + %d + %d + %d != 60.\n",a,b,c,d,e);
sleep(1);
continue;
}
else
{
system("clear");
printf("%d + %d + %d + %d + %d = 60.\n",a,b,c,d,e);
char ch = getchar();
if(ch = 'q')
break;
else
continue;
}
}
return 0;
}
在linux gcc编译器测试时有极小概率出现浮点数例外错误!(猜测使用 -std=c99可解决?)# include <stdio.h>
# include <stdlib.h>
# include <time.h>
int main(){
int A[5]={0},i,N=60,sum=0;
srand(time(0));
for(i=0;i<5;i++)
{
A[i]=rand()%16;
sum+=A[i];
}
A[rand()%5]+=60-sum;
for(i=0;i<5;i++)
printf("%d ",A[i]);
return 0;
}
int num1,num2,num3,num4,num5;
num1 = rand()%61;
num2 = rand()%(60-num1+1);
num3 = rand()%(60-num1-num2+1);
num4 = rand()%(60-num1-num2-num3+1);
num5 = rand()%(60-num1-num2-num3-num4+1);
printf("%d\t%d\t%d\t%d\t%d\t",num1,num2,num3,num4,num5);
这样,每次取的下个数,只要小于60减去已经取出的数的总和就行// rand.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
# include <stdio.h>
# include <stdlib.h>
# include <time.h>
int main(int argc, char* argv[])
{
srand( (unsigned int)time(NULL) );
int max=60;
int num[4];
int Rand;
for(int i=0;i<4;i++)
{
Rand = (rand()%max) + 1;
num[i]=Rand;
max=max-num[i];
printf("%d\n",num[i]);
}
return 0;
}
//测试用代码
#include <stdio.h>
#include <stdlib.h>
//#include <time.h>
int main()
{
while (1)
{
int a[5], b[5];
double sum_a = 0;
int sum_b4 = 0;
for (int i = 0; i < 5; i++)
{
a[i] = rand() % 60;
sum_a += a[i];
}
for (int i = 0; i < 4; i++)
{
b[i] = 60 * (a[i] / (sum_a));
sum_b4 += b[i];
}
b[4] = 60 - sum_b4;
for (int i = 0; i < 5; i++)
{
printf("b[%d]=%d\n", i, b[i]);
}
printf("\n");
system("pause");
}
return 0;
}