关于c:c语言实现点名系统

5次阅读

共计 1317 个字符,预计需要花费 4 分钟才能阅读完成。

点名零碎分为两种,一种为反复点名,一种为不反复点名
反复点名:顾名思义,随机点到后,下次兴许还会点到

反复点名

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include<string.h>
#include <stdlib.h>
#include <time.h>
#include<conio.h>
#define N 57 // 同学人数


int main()
{
    int num = 0;
    void menu();
    scanf("%d", &num);
    switch (num)
    {
    case 1:
        void chongfu();
        break;
    case 2:
        void buchongfu();
        break;

    default:
    }


    return 0;

}


void menu()
{printf("请输出数字,进入不同模式");
    printf("1. 反复点名");
    printf("2. 不反复点名");
}




void chongfu()
{int list[N], i, j, r, k;

    const char* s[N] = {“aa".......57 个同学名字,define 定义数雷同,否则报错};// 人名单 



    printf("随机点名, 输出'0'退出。\n");

    while (1) {printf("请问想点几个:");

        scanf("%d", &k);  // 输出人数 

        if (k == 0)
            break;

        if (k > N)
        {printf("输出谬误 \n");
            continue;
        }
        else
        {srand(time(NULL));

            for (i = 0; i < k; i++)  // 生成不反复的随机数组 

            {while (1) {r = rand() % N;

                    for (j = 0; j < i; j++)
                    {if (list[j] == r)
                            break;
                    }

                    if (j == i)
                    {list[i] = r;

                        break;

                    }

                }

            }

            // 输入人名 

            for (i = 0; i < k; i++) {printf("%s\n", s[list[i]]);

            }

        }
    }
    return;

}

不反复点名

// 随机点名零碎 不反复
#include <stdio.h>
#include <time.h>

#define STUDENT_NUM 57 // 定义学生总数

void Exchange(int* a, int* b) // 替换两个 int 值
{
    int n = *a;
    *a = *b;
    *b = n;
}

int main()
{const char* name[STUDENT_NUM] =
    {与宏定义数量统一即可};

    srand((unsigned int)time(NULL));// 设置随机种子

    int Index[STUDENT_NUM] = {0};// 定义索引数组

    for (int i = 0; i != STUDENT_NUM; i++) // 初始化索引数组
    {Index[i] = i;
    }
    for (int i = 0; i != STUDENT_NUM; i++)// 打乱索引数组中的值
    {Exchange(&(Index[i]), &(Index[rand() % STUDENT_NUM]));
    }

    printf("请按回车开始点名 \n");
    for (int i = 0; i != STUDENT_NUM; i++)// 输入打乱值的索引对应的字符串
    {getch();
        printf("%s\n", name[Index[i]]);
    }

    return 0;
}
正文完
 0