c语言奖池,C语言计算奖金

发布时间:2022-11-29

本文目录一览:

  1. c语言,如何做一个非常简易的固定奖池抽奖系统。一共1个大奖,2个中奖,3个小奖,必定中奖。
  2. 编制一个c语言程序,构建一个抽奖程序,奖项设置三等,分别为一二三等,具体奖励自己设置
  3. 用c语言编写一个简易的抽奖程序,

c语言,如何做一个非常简易的固定奖池抽奖系统。一共1个大奖,2个中奖,3个小奖,必定中奖。

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<conio.h>
int big=1,mid=2,sma=3;
void fin()
{
    srand(time(NULL));
    p:switch(rand()%3)
    {
        case 0:if(big>0){system("cls");printf("[大奖] 中奖 小奖\n ↑");sleep(1000);big--;system("cls");printf("大奖:%d 中奖:%d 小奖:%d\n 按任意键抽奖",big,mid,sma);return;}
        case 1:if(mid>0){system("cls");printf("大奖 [中奖] 小奖\n ↑");sleep(1000);mid--;system("cls");printf("大奖:%d 中奖:%d 小奖:%d\n 按任意键抽奖",big,mid,sma);return;}
        case 2:if(sma>0){system("cls");printf("大奖 中奖 [小奖]\n ↑");sleep(1000);sma--;system("cls");printf("大奖:%d 中奖:%d 小奖:%d\n 按任意键抽奖",big,mid,sma);return;}
    }
    goto p;
}
main()
{
    int num=0;
    printf("大奖:%d 中奖:%d 小奖:%d\n 按任意键抽奖",big,mid,sma);
    while(big||mid||sma)
    {
        if(_kbhit()){getch();fin();}
        else if(num<3) {num++;putchar('.');sleep(200);}
        else {system("cls");printf("大奖:%d 中奖:%d 小奖:%d\n 按任意键抽奖",big,mid,sma);num=0;}
    }
    system("cls"); printf("奖品已发完!\n");
    system("PAUSE");
    return 0;
}

如果编译错误,把 sleep 改成 Sleep,把 _kbhit 改成 kbhit


编制一个c语言程序,构建一个抽奖程序,奖项设置三等,分别为一二三等,具体奖励自己设置

产生一个 1-100 的随机数:

  • <=5 就是一等奖
  • 6-20 就是二等奖
  • 剩下的就是三等奖

用c语言编写一个简易的抽奖程序,

data.txt 文件保存以下内容:

13725528132 李桂荣
13725528131 李二来
13725528133 张荣刚
13725528130 荣南
13725528137 王三
13725528138 吴立
13725528139 郭德纲
13725528140 周星驰
13725528141 张曼玉
13725528142 张艺谋
13725528152 秦香莲
13725528162 潘金莲
13725528172 李大嘴
13725528182 展堂

源代码如下:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX_NUM 9999
//定义保存人名和电话的数据结构
struct Person
{
    char name[20];
    char telno[15];
    char award;
};
int num = 0; //统计人数
FILE *fp; //文件指针
Person persons[MAX_NUM]; //定义数组
int awarder_1[1] = {-1}; //一等奖
int awarder_2[2] = {-1, -1}; //二等奖
int awarder_3[5] = {-1, -1, -1, -1, -1};//三等奖
//读取文件
void readdata()
{
    int i = 0; //数组下标
    Person person;
    //文件打开
    fp = fopen("data.txt", "r");
    if (fp == NULL)
    {
        printf("打开文件data.txt失败!\n");
        return;
    }
    //当文件不为空
    while (!feof(fp))
    {
        num ++;
        fscanf(fp, "%s", person.telno);
        fscanf(fp, "%s", person.name);
        person.award = 'F';
        persons[i++] = person;
    }
}
//初始化标识
void init()
{
    for(int i = 0; i < num; i++)
    {
        persons[i].award = 'F';
    }
}
//显示单个中奖信息
void info( int i)
{
    printf("手机号码: %s 姓名: %s\n", persons[i].telno, persons[i].name);
}
void main()
{
    char again = 'Y';
    //读取文件
    readdata();
    printf("简单抽奖程序\n");
    srand((long)time(0));
    while(again == 'Y' || again == 'y')
    {
        //初始化标识
        init();
        printf("\n开始抽第一等奖(1名),按任意键开始...\n");
        getchar();
        awarder_1[0] = abs(rand() % num);
        while (persons[awarder_1[0]].award == 'T')
        {
            awarder_1[0] = rand() % num;
        }
        persons[awarder_1[0]].award = 'T';
        info(awarder_1[0]);
        printf("\n开始抽第二等奖(2名)\n");
        for (int i = 0; i < 2; i++)
        {
            printf("\n第%d个二等奖,按任意键开始...\n", i+1);
            getchar();
            awarder_2[i] = rand() % num;
            while (persons[awarder_2[i]].award == 'T')
            {
                awarder_2[i] = rand() % num;
            }
            persons[awarder_2[i]].award = 'T';
            info(awarder_2[i]);
        }
        printf("\n\n开始抽第三等奖(5名)\n");
        for (i = 0; i < 5; i++)
        {
            printf("\n第%d个三等奖,按任意键开始...\n", i + 1);
            getchar();
            awarder_3[i] = rand() % num;
            while (persons[awarder_3[i]].award == 'T')
            {
                awarder_3[i] = rand() % num;
            }
            persons[awarder_3[i]].award = 'T';
            info(awarder_3[i]);
        }
        printf("\n是否重新开始抽奖?(Y or N)...\n");
        again = getchar();
    }
    getchar();
    return;
}