本文目錄一覽:
- 1、模擬一個微信搶紅包的演算法,錢數為x,人數為y,用隨機數顯示出每個紅包的金額,c語言題目
- 2、C語言 微信紅包
- 3、C語言類似微信紅包思路,怎麼寫這個?
- 4、C語言編程:求一段發紅包的代碼。(隨機數,能規定紅包總錢數總人數,每個人拿到的錢不為0)
- 5、C語言紅包代碼
模擬一個微信搶紅包的演算法,錢數為x,人數為y,用隨機數顯示出每個紅包的金額,c語言題目
#include stdio.h
#include stdlib.h
#include time.h
double Random() {return (rand() %1000) * 0.001;}
double Random(double aver)
{
double ret = 0;
for(int i=0; i2; ++i) ret += Random();
return (aver * ret);
}
int main(int argv, int **argc)
{
double x, v;
int y, i;
double aver, min;
srand(time(NULL));
printf(“請輸入金額:”);
scanf(“%lf”, x);
printf(“請輸人數:”);
scanf(“%d”, y);
aver = x / y;
min = 0.01 * y;
for(i=0; iy-1 x min; ++i)
{
v = Random(aver);
while(v x) v = Random(aver);
printf(“%.2f\n”, v);
x -= v;
min -= 0.01;
}
for(i=0; i y-1; ++i)
{
printf(“%.2f\n”, 0.01);
x -= 0.01;
}
printf(“%.2f\n”, x);
return 0;
}
C語言 微信紅包
#include stdio.h
#include string.h
#include time.h
#define MAX_TOTAL_MONEY 200 //紅包的最大金額
#define MIN_PER_PLAYER 1 //一個人搶到的的最小面額1元
#define MAX_PLAYER_CNT (MAX_TOTAL_MONEY/MIN_PER_PLAYER) //最大搶紅包的遊戲人數
typedef struct player
{
char *name;//標記玩家 可以不填
unsigned int money_get;//搶到的紅包
}PLAYER_T;
//每個人領取到的紅包金額不等 這個要求比較難搞 暫時不考慮
int main(int argc, char *argv[])
{
unsigned int total_money = 0; //不考慮角和分 浮點運算比較複雜
unsigned int player_cnt = 0;
int on_off = 0;
int i = 0;
int j = 0;
PLAYER_T player[MAX_PLAYER_CNT] = {0};
PLAYER_T tmp = {0};
printf(“輸入紅包金額:\n”);
scanf(“%u”, total_money);
printf(“輸入遊戲人數:\n”);
scanf(“%u”, player_cnt);
printf(“是否需要減小貧富差距(0為關閉其餘為開啟):\n”);
scanf(“%u”, on_off);
//不符合規則的輸入判斷
if (total_money MAX_TOTAL_MONEY || 0 == total_money || 0 == player_cnt || player_cnt*MIN_PER_PLAYER total_money)
{
printf(“紅包金額最小%u元 最大%u元 遊戲人數最小1人 最大%u人\n”, MIN_PER_PLAYER, MAX_TOTAL_MONEY, MAX_PLAYER_CNT);
return 0;
}
for (i = 0; i player_cnt; i++)
{
//設置隨機種子
srand(time(NULL)+i);
//根據隨機種子獲取一個偽隨機數作為搶到的紅包 並通過余運算使其始終小於total_money
player[i].money_get = rand()%total_money;
//限制所有人所能搶到的最大紅包為當前金額池的1/5而不是全部
if (0 != on_off)
{
if (total_money 5)//5塊錢以上再限制
{
player[i].money_get = rand()%(total_money/5);
}
}
//最後一個人拿所有剩下的紅包
if (player_cnt – 1 == i)
{
player[i].money_get = total_money;
}
//運氣差隨機到0元 給你最小面額
else if (0 == player[i].money_get)
{
player[i].money_get = MIN_PER_PLAYER;
}
//剩下的要保證每個人能搶到最小面額
else if (total_money – player[i].money_get (player_cnt-i-1)*MIN_PER_PLAYER)
{
player[i].money_get = total_money – (player_cnt-i-1)*MIN_PER_PLAYER;
}
//把搶到的金額從紅包池中減掉
total_money -= player[i].money_get;
//如果填了name 可以把名字列印出來
printf(“第%d個玩家搶到紅包:%u元\n”, i+1, player[i].money_get);
}
//冒泡排序 找出手氣最佳者
for (i = 0; i player_cnt; i++)
{
for (j = i+1; j player_cnt; j++)
{
if (player[i].money_get player[j].money_get)
{
memcpy(tmp, player[j], sizeof(PLAYER_T));
memcpy(player[j], player[i], sizeof(PLAYER_T));
memcpy(player[i], tmp, sizeof(PLAYER_T));
}
}
}
printf(“手氣最佳者搶到紅包:%u元\n”, player[0].money_get);//如果填了name 可以把名字列印出來
return 0;
}
C語言類似微信紅包思路,怎麼寫這個?
首先,我說一下大概思路,取隨機數應該是要用到演算法,C語言庫裡面應該有這個函數,可以讓取的數在一個範圍波動,但是你這個要時刻留意隨機數總和要小於N(金額總數),加上最後一個時剛好等於N。先輸入總額度N,以及總的人數a,然後循環輸入人數a次產生a個隨機數,保證它們之和等於N(這裡應該還需要定義一個臨時變數,用來統計金額),程序中不需要指針,可以定義一個數組,如果是和微信紅包類似,有小數,那就定一個float型的。
給你一個鏈接,是C語言如何產生隨機數的網頁鏈接
C語言編程:求一段發紅包的代碼。(隨機數,能規定紅包總錢數總人數,每個人拿到的錢不為0)
#includestdio.h
#includetime.h
#includestdlib.h
int main(void)
{
float total;
printf(“輸入總錢數:\n”);
scanf(“%f”,total);
int num;
printf(“輸入紅包數量:\n”);
scanf(“%d”,num);
float min=0.01;
float safe_total;
float money;
int i;
srand((unsigned)time(NULL));
for(i=1;inum;i++){
safe_total=(total-(num-i)*min)/(num-1);
money=(float)(rand()%((int)(safe_total*100)))/100+min;
total=total-money;
printf(“紅包%2d: %.2f元,餘額:%.2f元\n”,i,money,total);
}
printf(“紅包%2d: %.2f元,餘額:0.00元\n”,num,total);
return 0;
}
C語言紅包代碼
#includestdio.h
#includestdlib.h
#includetime.h
main()
{
int i,n;
float a[100],all;
srand(time(NULL));
printf(“請輸入紅包金額:”);
scanf(“%f”,all);
printf(“請輸入紅包個數:”);
scanf(“%d”,n);
srand((unsigned)time(0));
for(i=1;in;i)
{
a[i]=(float)rand()/RAND_MAX*all;
if(a[i]0 )
{
all-=a[i];
printf(“%f\n”,a[i]);
i++;
}
}
printf(“%f\n”,all);
}
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/285170.html