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

反复点名

#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;}