最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語(yǔ)言實(shí)現(xiàn)搶紅包算法

 更新時(shí)間:2020年09月25日 08:44:28   作者:LSC的博客  
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言搶紅包算法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了C語(yǔ)言實(shí)現(xiàn)搶紅包的具體代碼,供大家參考,具體內(nèi)容如下

1、算法背景:

大家知道,微信拼手氣紅包和普通紅包兩種。普通紅包每個(gè)人搶到的金額是固定的(總額的平均數(shù)),拼手氣紅包是隨機(jī)金額(每個(gè)人搶到的是隨機(jī)的,差別可能非常大,有的人搶到的是1分,有的搶到的可能是幾元、十幾元、幾十元),目前的搶紅包算法只能輸入兩個(gè)參數(shù),即總金額、總?cè)藬?shù)。

2、算法要求:

現(xiàn)要求同學(xué)們?cè)O(shè)計(jì)一個(gè)改進(jìn)的搶紅包算法,可以設(shè)定總金額(total)、總?cè)藬?shù)(num)、搶到的最低金額(min)和最高金額(max),這樣就可以控制每個(gè)搶紅包的,搶到的不會(huì)太少,也不會(huì)太多。

(1)先用自然語(yǔ)言給出算法設(shè)計(jì)的思想:

第一步:輸入紅包金額總金額,紅包個(gè)數(shù),紅包金額最低/最高額度。

第二步:判斷帶輸入數(shù)據(jù)是否滿(mǎn)足算法要求,不滿(mǎn)足輸出提示信息,并重新輸入數(shù)據(jù)。

第三步:生成一個(gè)隨時(shí)紅包金額

第四步:判斷紅包金額是否滿(mǎn)足條件,如果滿(mǎn)足,繼續(xù)生成下一個(gè)紅包金額,如果不滿(mǎn)足在
此生成新的隨機(jī)紅包金額,知道滿(mǎn)足條件。

第五步:輸出搶紅包的過(guò)程信息

(2)進(jìn)行異常檢查與處理;

(3)給出C語(yǔ)言源代碼實(shí)現(xiàn),運(yùn)行結(jié)果展示;

源代碼如下

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void input();
int range_random_price(int start_price, int end_price);
void redPackets(double Total, int num, double Min_price, double Max_price);

int maxx = 0, maxx_index = -1;

int main()
{
 input();
 return 0;
}


// 數(shù)據(jù)輸入
void input()
{
 double total;
 int num;
 double min_price, max_price;

 printf("請(qǐng)輸入以下數(shù)據(jù):\n");
 printf("紅包總金額: ");
 scanf("%lf", &total);
 putchar('\n');
 printf("紅包數(shù)量: ");
 scanf("%d", &num);
 putchar('\n');
 printf("紅包最低金額: ");
 scanf("%lf", &min_price);
 putchar('\n');
 printf("紅包最高金額: ");
 scanf("%lf", &max_price);
 putchar('\n');
 redPackets(total, num, min_price, max_price);
}

// 生成(a, b) 之間的隨機(jī)數(shù)
int range_random_price(int start_price, int end_price)
{
 return rand()%(end_price-start_price+1) +start_price;
}

// total :總金額(元) num:人的個(gè)數(shù) min_price max_price :最低/最高金額
void redPackets(double Total, int num, double Min_price, double Max_price)
{
 // 剛開(kāi)始金額全部擴(kuò)大100倍轉(zhuǎn)變成整數(shù),最后輸出的再除以一百,轉(zhuǎn)變?yōu)楦↑c(diǎn)數(shù)
 int total = (int)Total*100;
 int min_price = (int)Min_price*100;
 int max_price = (int)Max_price*100;

 if((total*1.0 / num) - min_price*1.0 < 1e-9)
 {
  printf("您輸入的總金額過(guò)小,或者搶的紅包金額最低限度過(guò)大,請(qǐng)重新輸入\n");
  input();
  return ;
 }
 printf("搶紅包結(jié)果如下:\n");

 for(int i = 1; i < num; i++)
 {
  int random_price;
  while(1)
  {
   random_price = range_random_price(min_price, max_price);
   //判斷剩下的金額是否滿(mǎn)足條件
   if((total - random_price)*1.0 / (num - i) - min_price*1.0 >= 1e-9)
    break;
  }

  if(maxx < random_price)
   maxx = random_price, maxx_index = i;
  total -= random_price;// 剩余金額
  printf("第 %d 個(gè)人搶到的紅包金額為 %.2f, 紅包剩余金額為 %.2f\n", i, (double)(random_price/100.0), (double)(total/100.0));
 }


 if(maxx < total)
  maxx = total, maxx_index = num;

 // 輸出最后一個(gè)人的紅包金額
 printf("第 %d 個(gè)人搶到的紅包金額為 %.2f, 紅包剩余金額為 0.00\n", num, (double)(total/100.0));

 printf("運(yùn)氣王是 %d 號(hào)\n", maxx_index);
}

程序運(yùn)行結(jié)果:

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • EasyC++內(nèi)部鏈接性和無(wú)鏈接性

    EasyC++內(nèi)部鏈接性和無(wú)鏈接性

    這篇文章主要介紹了EasyC++內(nèi)部鏈接性和無(wú)鏈接性,當(dāng)我們使用static關(guān)鍵字,將變量的作用于限制在整個(gè)文件時(shí),該變量的鏈接性為內(nèi)部鏈接性,然而無(wú)鏈接性的變量其實(shí)就是在代碼塊當(dāng)中使用static關(guān)鍵字創(chuàng)建的,接下來(lái)一起進(jìn)入文章了解更多內(nèi)容吧
    2021-12-12
  • VC++中HTControl的CHTButton按鈕控件類(lèi)用法實(shí)例解析

    VC++中HTControl的CHTButton按鈕控件類(lèi)用法實(shí)例解析

    這篇文章主要介紹了VC++中HTControl的CHTButton按鈕控件類(lèi)用法,對(duì)于大家進(jìn)行VC++項(xiàng)目開(kāi)發(fā)有一定的幫助作用,需要的朋友可以參考下
    2014-08-08
  • 掌握C++:揭秘寫(xiě)時(shí)拷貝與淺深拷貝之間的關(guān)系

    掌握C++:揭秘寫(xiě)時(shí)拷貝與淺深拷貝之間的關(guān)系

    探索C++的奧秘,本指南將揭秘寫(xiě)時(shí)拷貝與淺深拷貝之間的微妙關(guān)系,摸索這些復(fù)雜概念背后的邏輯,讓你的編程技能瞬間提升,來(lái)吧,讓我們一起進(jìn)入這個(gè)引人入勝的C++世界!
    2024-01-01
  • C++?Qt實(shí)現(xiàn)動(dòng)態(tài)增加垂直滾動(dòng)條

    C++?Qt實(shí)現(xiàn)動(dòng)態(tài)增加垂直滾動(dòng)條

    本博文源于筆者正在工作的一個(gè)小內(nèi)容,內(nèi)容涉及到為qt動(dòng)態(tài)增加垂直滾動(dòng)條,文章分為三個(gè)部分,問(wèn)題起源,問(wèn)題解決方案,問(wèn)題解決成功效果,思路清晰,文章干貨滿(mǎn)滿(mǎn),復(fù)制源碼即可使用,需要的朋友可以參考下
    2023-08-08
  • QT6實(shí)現(xiàn)音頻可視化的示例代碼

    QT6實(shí)現(xiàn)音頻可視化的示例代碼

    這篇文章主要為大家詳細(xì)介紹了一個(gè)基于QT6的音頻可視化Demo,文中的示例代碼,具有一定的借鑒價(jià)值,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-12-12
  • C++編程之CString、string與、char數(shù)組的轉(zhuǎn)換

    C++編程之CString、string與、char數(shù)組的轉(zhuǎn)換

    這篇文章主要介紹了C++編程之CString、string與、char數(shù)組的轉(zhuǎn)換的相關(guān)資料,希望通過(guò)本文能幫助到大家,讓大家學(xué)習(xí)理解這部分內(nèi)容,需要的朋友可以參考下
    2017-10-10
  • Qt信號(hào)與槽知識(shí)點(diǎn)總結(jié)歸納

    Qt信號(hào)與槽知識(shí)點(diǎn)總結(jié)歸納

    信號(hào)和槽是一種高級(jí)接口,應(yīng)用于對(duì)象之間的通信,它是QT的核心特性,下面這篇文章主要給大家介紹了關(guān)于Qt信號(hào)與槽知識(shí)點(diǎn)總結(jié)歸納的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-12-12
  • vs2020打包生成exe的實(shí)現(xiàn)方法

    vs2020打包生成exe的實(shí)現(xiàn)方法

    本文主要介紹了Visual Studio Installer Projects插件和第三方軟件SetupFactory創(chuàng)建可安裝的Windows應(yīng)用程序包,并最終將其轉(zhuǎn)換為可執(zhí)行文件的方法,感興趣的可以了解一下
    2024-12-12
  • C++實(shí)現(xiàn)含附件的郵件發(fā)送功能

    C++實(shí)現(xiàn)含附件的郵件發(fā)送功能

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)含附件的郵件發(fā)送功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • C++中4種管理數(shù)據(jù)內(nèi)存的方式總結(jié)

    C++中4種管理數(shù)據(jù)內(nèi)存的方式總結(jié)

    根據(jù)用于分配內(nèi)存的方法,C++中有3中管理數(shù)據(jù)內(nèi)存的方式:自動(dòng)存儲(chǔ)、靜態(tài)存儲(chǔ)和動(dòng)態(tài)存儲(chǔ)。在存在時(shí)間的長(zhǎng)短方面,以這三種方式分配的數(shù)據(jù)對(duì)象各不相同。下面簡(jiǎn)要介紹這三種類(lèi)型
    2022-09-09

最新評(píng)論

长治市| 昆明市| 凌海市| 麻江县| 都江堰市| 武宁县| 海晏县| 通江县| 卓尼县| 武汉市| 措勤县| 远安县| 湄潭县| 上犹县| 泰兴市| 灵寿县| 万山特区| 三亚市| 北辰区| 休宁县| 铅山县| 浑源县| 怀宁县| 巍山| 永年县| 唐山市| 溧水县| 铅山县| 婺源县| 库伦旗| 渝北区| 平乐县| 丘北县| 华蓥市| 吉木萨尔县| 股票| 沙湾县| 泾源县| 凉山| 察隅县| 台中县|