c的点名程序是什么

时间:2025-01-18 22:54:39 程序应用

C语言的点名程序可以根据不同的需求和实现方式有多种,以下是一个简单的命令行运行的点名程序的实现示例:

程序描述

使用C语言编写。

命令行运行。

以指定txt文件作为“班级”花名册。

随机抽取名字并显示,速度由快到慢,逐渐定格到某一个名字上,保存到文件中,程序结束。

功能实现

文件形式保存和读取。

显示所有同学点名情况。

查询单个同学点名情况。

开始多个名字点名。

开始单个名字点名。

保存点名。

点名次数归零。

字体颜色变化。

详细实现过程

学生结构体声明和定义:

```c

struct Student {

char name; // 学生姓名

int num; // 学生编号

int frequency; // 点名次数

};

```

定义学生人数:

```c

define TOTAL 15 // 学生人数

```

菜单函数:

```c

void menu() {

printf("请输入数字,进入不同模式\n");

printf("1.重复点名\n");

printf("2.不重复点名\n");

}

```

随机点名函数:

```c

void chongfu() {

int list[N], i, j, r, k;

const char* s[N] = { "aa", "...", 57个同学名字" }; // 人名单

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

while (1) {

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

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

if (k == 0) break;

if (k > N) {

printf("输入错误\n");

continue;

}

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]]);

}

}

}

```

不重复点名函数:

```c

void buchongfu() {

int list[N], i, j, r, k;

const char* s[N] = { "aa", "...", 57个同学名字" }; // 人名单

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

while (1) {

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

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

if (k == 0) break;

if (k > N) {

printf("输入错误\n");

continue;

}

srand(time(NULL));

for (i = 0; i < k; i++) {

r = rand() % N;

list[i] = r;

}

// 输出人名

for (i = 0; i < k; i++) {

printf("%s\n", s[list[i]]);

}

}

}

```

运行效果

程序运行时会显示一个菜单,用户可以选择不同的点名模式(重复点名或不重复点名)。

根据选择的模式,程序会从指定的txt文件中读取学生名单,并进行随机点名。

点名结果会显示在屏幕上,并可以选择保存到文件中。

这个示例程序提供了一个基本的框架,可以根据具体需求进行扩展和优化,例如增加更多的功能或改进用户界面。