用C语言编写课堂随机点名程序

要求能完全实现我们的点名程序已有的功能。即事先从教务处网站上下载某班的学生名单并存盘备用。你的程序能够以某种方式有选择性的加载某个班的存盘文件并把相应的学生信息读入内存,然后以随机的方式来查找某个学生的信息并把它显示出来以实现点名。单独要求:1.有简单的容错处理(就是名单上虽然存在很多空格,也能准确的计算出该班的人数,详情请看图片);2.能单独显示序号、学号或姓名等项(就是一行显示序号,一行显示学号,一行显示姓名,不要同时显示这三项)。谢谢你的帮助!

第1个回答  2012-05-02
很简单 你联系我 我需要一份你说的学生名单文件用来测试我的程序

这种东西我做过很多了追问

好的,谢谢,我已经加你Q啦,麻烦你回复下,谢啦!

追答

哪个是你?

追问

超越自我,找到了吗?

追答

#include
#include
#include
#include
#include
struct studentinfo
{
char sNo[5];
char sxueNo[14];
char sname[20];
}st[100];
int main()
{
int i=0,j=0,k,flag,RN,*a;
FILE *fp;
char ch,filename[20]={0},line[100]={0};
printf("Please input file name:");
fflush(stdin);
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())==NULL)
{
RN=rand()%i;
flag=1;
for (k=0;k<i;k++)
{
if (RN==a[k])
{
flag=0;
break;
}
}
if (flag)
{
a[j]=RN;
j++;
printf("\n~~~~~\n%s\n%s\n%s\n------------\n",st[RN].sNo,st[RN].sxueNo,st[RN].sname);
}
}
}

本回答被提问者采纳
第2个回答  2012-05-01
这个。。。。我有点难毒。追问

你哪里看不懂啊?就是虽然那里有空格,也可以准确地读出这个班的人数,麻烦你能帮帮我!

c语言 课堂随机点名程序 跪求大神帮我修改正确!
struct Student *st;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(...

用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语言上课随机点名程序设计
\\n",stuID);fclose(fp);}void main(void){int stuID[4]={2013011001,2013011002,2013011003,2013011004}; \/\/WriteData();srand((unsigned)time(NULL));\/\/随机种子 TeacherDM(stuID[rand()%(3-0+1)+0]);}运行效果截图:另外多说一句,你所说的公正性,是不是指被点名过的同学不会再次被...

c语言 随机点名
exit(1);}for(int j=0;j<stu_num;j++){ if(fwrite(&stu[j],sizeof(struct Student),1,fp)!=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"...

课堂随机点名系统程序设计。
查找:我认为,首先把txt文件存在硬盘上,最好在学生前面编上序号,完了用rand(srand)抽取号码。抽取完毕后,用号码对应用c语言函数fscanf查找号码所对应的学生姓名。删除和添加可以直接在txt里进行。如果非要在程序中的话,用fprintf就可以实现了。随机点名:从网上下载个汉语的发音包,用c调用即可。ran...

求C++的随机点名程序。。。要有随机点名和顺序点名
2、使用fopen读取学生名单到一个char*的缓冲区, 使用stl string来处理这段缓冲区, 并使用stl vector<SStudentInfo*> 存储学生信息 struct SStudentInfo { };vector<SStudentInfo*> m_vInfo;3、使用C语言随机函数取得随机数,srand((unsigned)time(0)); int rid = rand()%m_vInfo.size() - ...

课堂随机点名系统(用C语言编写)
没有规矩不成方圆,如果没有人翘课,教务处也不会要求点名。学风一年不如一年。

急求一个C语言代码求高手帮忙
将个个功能以分开函数来写,这个就不用我说了吧 1、输入班级 2、输入随即抽取人数 3、打开班级名单 4、读取班级人数 5、判断班级人数是否少于随即抽取人数,少于返回第2步,否则执行下一步 6、读取班级名单 7、在1-总人数范围内取“抽取人数”个不重复的随机数 8、点名次数=0 9、判断点名次数,...

.NET老师布置的随机点名系统
什么随机点名系统?是要用B\/S结构还是C\/S结构开发?随便写个简单的给你随机点名也就是用到随机函数string[] name=new string[]{"张三","李四","王麻子","小名","小红","小强"};string person=name[new Random().Next(0,name.length-1)];Console.WriteLine("被点名的人是:{0}",name); ...

说说概率的故事(一)
c语言中与之相关的主要有两个函数:srand(seed)和rand(void)。srand()的功能就如刚才的例子,接受一个seed,生成随机序列。而rand()函数则会做一个派生:随机数表到区间[0, RAND_MAX]的映射(RAND_MAX一般定义为32767),于是就返回了一个1~32767的随记数。接下来一切都好办了。例如你想玩骰子,...

相似回答