用C语言编写一个随机点名程序
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<time.h>
struct studentinfo {
char sNo[5];
char sxueNo[14];
char sname[20];
};
struct studentinfo st[100];
char hash[100] = {0};
int main() {
int i = 0, j = 0, flag = 0, RN, *a;
FILE *fp;
char ch, filename[20] = {0}, line[100] = {0};
printf("Please input filename: ");
gets(filename);
fp = fopen(filename, "r");
printf("名单如下:\n");
while (fgets(line, sizeof(line) - 1, fp)) {
if (line[0] != '\n' && line[0] != '') {
sscanf(line, "%s %s %s\n", st[i].sNo, st[i].sxueNo, st[i].sname);
printf("%s\n%s\n%s\n", st[i].sNo, st[i].sxueNo, st[i].sname);
i++;
}
}
srand((unsigned)time(NULL));
a = (int *)malloc(sizeof(int) * i);
memset(a, -1, sizeof(a));
printf("按空格键点名,其他键退出:");
fflush(stdin);
while ((ch = getch()) == ' ') {
if (flag == i) {
printf("\n点名结束\n");
break;
}
RN = rand() % i;
while (hash[RN] == 1) {
RN = rand() % i;
}
flag++;
printf("\n~~~~~\n%s\n%s\n%s\n-------------\n", st[RN].sNo, st[RN].sxueNo, st[RN].sname);
hash[RN] = 1;
}
return 0;
}
在使用printf函数时,需要注意几个关键点。例如,域宽设置可以用来控制输出的宽度,如果实际输出内容小于设定宽度,则会在左侧或右侧填充空白字符。此外,如果想输出百分号(%),则需要在格式控制字符串中使用连续两个百分号(%%)。
在程序中,我们使用了结构体和动态内存分配来存储和操作学生的相关信息。通过随机数生成器,我们可以随机选择一个学生进行点名。同时,使用一个数组来记录哪些学生已经被点名过,以避免重复点名。
希望这个示例能够帮助你更好地理解如何用C语言编写一个随机点名程序。如果有任何疑问,欢迎随时提问。
用C语言编写一个随机点名程序
if (flag == i) { printf("\\n点名结束\\n");break;} RN = rand() % i;while (hash[RN] == 1) { RN = rand() % i;} flag++;printf("\\n~~~\\n%s\\n%s\\n%s\\n---\\n", st[RN].sNo, st[RN].sxueNo, st[RN].sname);hash[RN] = 1;} return 0;} 在使用printf函数...
c语言 随机点名
=1) printf("Error writing file.\\n");} fclose(fp); }void rollcall() \/\/ 随机点名{FILE *fp; if((fp=fopen("stu.dat","rb"))==NULL){printf("Can't open file.\\n");exit(1);}srand((unsigned)time(NULL));int i=0;int randID=rand()%(64-1+1)+1; \/\/ 1~64p...
用C语言编写一个随机点名程序
printf("%s\n","点名结束");break;} RN=rand()%i;/*产生一个随机数*/ while(hash[RN]==1)/*判断有没有完成某个一个学生点名*/ RN=rand()%i;/*产生随机数*/ flag++;/*计数*/ printf("\n~~~\n%s\n%s\n%s\n---\n",s...
c语言 课堂随机点名程序 跪求大神帮我修改正确!
printf("\\t\\t\\t欢迎使用课堂随机点名程序!\\n\\n");printf("点名前请输入您要点名的班级:");scanf("%s",filename);fp=fopen(filename,"r");while (fgets(line,99,fp)!=NULL){ strcpy(stubuff[stucnt++],line);} printf("该班一共有%d个学生\\n",stucnt);srand((unsigned)time(NULL)...
用c语言编一个上课点名系统
C++字符串类CSTRING提供了丰富的成员函数,可以利用这些函数进行字符串拼接等操作,以达到数据的准确读取。最后,需要找到或者编写一个随机函数,以确保每次点名时都能随机选取学生。在Visual C++(VC)的库中,有很多现成的随机函数可供使用,也可以根据需要编写自己的随机函数。整个过程并不复杂,只要按照...
求C++的随机点名程序。。。要有随机点名和顺序点名
vector<SStudentInfo*> m_vInfo;3、使用C语言随机函数取得随机数,srand((unsigned)time(0)); int rid = rand()%m_vInfo.size() - 1; SStudentInfo *pInfo = m_vInfo[rid];4、将pInfo里面的信息显示到界面 界面可以使用MFC, 如果使用控制台做的话也很方便 我只提供一个思路 如果要我...
说说概率的故事(一)
c语言中与之相关的主要有两个函数:srand(seed)和rand(void)。srand()的功能就如刚才的例子,接受一个seed,生成随机序列。而rand()函数则会做一个派生:随机数表到区间[0, RAND_MAX]的映射(RAND_MAX一般定义为32767),于是就返回了一个1~32767的随记数。接下来一切都好办了。例如你想玩骰子,...
C语言!!!
1、库函数rand()会返回一个大于0的随机整数;2、rand()%n,对这个返回的随机整数除以n取余,结果是一个0到n-1的随机整数;3、rand()%n+1,将rand()%n的结果加上1,就可得到一个1到n的随机整数;更通用一点的公式,产生m到n中(n>m)的一个随机数的公式是:rand()%(n-m+1)+m。
c语言要学到什么程度
A、直接用纸写程序,写完后交给打字员,程序就OK。B、别人的程序,看完纸上的源代码,就知道问题之所在。C、在一个规模达到100万行的程序里面,程序发生了崩溃,能够在几小时内定位问题。D、能够指出任意一段代码,可能存在的和标准的不符合之处 E、常见的C语言编译器,包括但不限于:TC、VC、BCC...
学校教电脑的软件都有哪些软件可以学习电脑
1、就近几个月来说,月编程语言排行榜中Java依然是遥遥领先其次是C语言再是c++、VB,感兴趣可以搜索下看看 2、难度:c++是编程语言里面最难学的一门语言这时业界公认的,Java最好学,即使没基础几个月就也可以入门,行业有句话:聪明人用delphi,懒人用VB,你侧重理解后一句即可 3、哪个好:编程是一种跨语言的技术,...