C语言点名

本文目录一览:

跪求c语言上课随机点名程序设计

#includestdio.h

#includestdlib.h

#includetime.h

#defineSTU_NUM_MAX4

structStudentInfo//学生信息结构

{

charname[15];

intstu_id;

}stu[STU_NUM_MAX];

voidWriteData()//写入学生信息

{

FILE*fp;

intstu_num=4;

for(inti=0;istu_num;i++)

{

printf("请输入第%d个学生的姓名:",i+1);

scanf("%s",stu[i].name);

printf("请输入第%d个学生的学号:",i+1);

scanf("%d",stu[i].stu_id);

}

if((fp=fopen("myfile.dat","ab"))==NULL)

{

printf("Can'topenfile\n");

exit(1);

}

for(intj=0;jstu_num;j++)

{

if(fwrite(stu[j],sizeof(structStudentInfo),1,fp)!=1)

printf("Errorwritingfile.\n");

}

fclose(fp);

}

voidTeacherDM(intstuID)//教师点名

{

FILE*fp;

boolfind_mark=false;

printf("\n\t%s\t\t%s\n","学号","姓名");

if((fp=fopen("myfile.dat","rb"))==NULL)

{

printf("Can'topenfile\n");

exit(1);

}

inti=0;

do

{

fseek(fp,i*sizeof(structStudentInfo),SEEK_SET);

fread(stu[i],sizeof(structStudentInfo),1,fp);

if(stu[i].stu_id==stuID)

{

printf("\t%4d\t%s\n",stu[i].stu_id,stu[i].name);

printf("\n\n\t请【%s】同学回答某某问题.\n",stu[i].name);

find_mark=true;

break;

}

i++;

}while(!feof(fp));

if(!find_mark)printf("\n\t\t未能找到学生号为:%d的记录!\n",stuID);

fclose(fp);

}

voidmain(void)

{

intstuID[4]={2013011001,2013011002,2013011003,2013011004};

//WriteData();

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

TeacherDM(stuID[rand()%(3-0+1)+0]);

}

运行效果截图:

另外多说一句,你所说的公正性,是不是指被点名过的同学不会再次被随机点名到。如果是这个意思,那么你可以通过数组来设置它,即把点名过的同学的学号或姓名保存到一维数组里,随机判断时只需循环检查下该同学是否已被点名过。这里就留给你做了。

用C语言编写一个随机点名程序

例:

#include<stdio.h>/*standardinput&output*/

#include<stdlib.h>/*standardlibary*/

#include<string.h>/*string*/

#include<conio.h>/*ConsoleInput/Output*/

#include<time.h>

structstudentinfo/*学生信息的结构体*/

charsNo[5];/*学生编号*/

charsxueNo[14];/*学号*/

charsname[20];/*学生的姓名*/

}st[100];

charhash[100]={0};/*链表的数组*/

intmain()

inti=0,j=0,flag=0,RN,*a;

FILE*fp;

charch,filename[20]={0},line[100]={0};

printf("Pleaseinputfilename:");

//fflush(stdin);/*用来清空输入缓存,以便不影响后面输入的东西*/

gets(filename);/*键盘输入文件名*/

fp=fopen(filename,"r");/*openreadonly*/

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

/*sizeof(类型符)是计算类型所占字节数,sizeof(int)是int所占字节数,再乘以i,得到i个int型数据的总字节数。malloc函数用于动态开辟一块内存空间,参数为开辟的内存空间字节数,返回开辟的内存空间的首地址指针。*/

a=(int*)malloc(sizeof(int)*i);

memset(a,-1,sizeof(a));/*将已开辟内存空间a的第4个字节设置为-1*/

printf("按空格键点名,其他键退出:");

fflush(stdin);

while((ch=getch())=='')

/*while(!(ch=getch())==NULL)*/

if(flag==i)/*如果flag等于总人数*/

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",st[RN].sNo,st[RN].sxueNo,st[RN].sname);/*输出学生的信息*/

hash[RN]=1;

扩展资料:

printf函数使用注意事项

1、域宽

%d:按整型数据的实际长度输出。

如果想输出指定宽度可以指定域宽,%md-->m域宽,打印出来以后,在控制台上,显示m位;

如果我们要打印的数的位数如果超过我们设定m则原样输出;

如果我们要打印的数的位数如果小于我们设定的位数,则补空白,具体如下:

如果m为正数,则左对齐(左侧补空白);

如果m为负数,则右对齐(右侧补空白)。

2、转义字符

如果想输出字符"%",则应该在“格式控制”字符串中用连续两个%表示。

如:printf("%f%%",1.0/3);输出结果:0.333333%。

随机点名程序设计 C语言编程

设置一个足够大的随机池,给每一个学生分配相同的空间,然后利用随机数来选取被点名的学生,同时对该学生所分配的空间和其他学生的空间进行缩减或增加。然后执行下一轮。

大致思路就是这样,希望能够帮到你哦~

c语言 随机点名

“为了公平起见,我们决定做一个随机点名小程序”不是说你们决定做一个小程序吗?为什么不自己做呀?没有必要一个班的学生都没有能力编写一个这种简单程序吧

百度知道并不是一个提交结果的平台,所谓知道就是将知识贡献,让大家获得启发,不是给人当奴隶干活!

求c语言班级点名程序,高手们来帮帮忙啊

#include stdio.h

#include stdlib.h

#include time.h

typedef struct Student

{

char name[20];

bool IsRead;

}Student;

int main()

{

int i;

int select;

int mark=1;

//下面中你还可以加入一些学生,记得初始化的IsRead都是false

Student student[]=

{

{"张三",false},

{"李四",false},

{"王五",false},

{"刘六",false},

{"赵七",false}

};

printf("欢迎进入点门系统,以下是全班的花名册:\n");

for (i=0;isizeof(student)/sizeof(Student);i++)

printf("%s ",student[i].name);

printf("\n");

do

{

printf("请选择:\n1.点名\n2.显示没有点到的学生名字\n3.退出点名系统\n");

scanf("%d",select);

system("cls");//如果是Linux系统,把cls改成clear。如果是其他系统请把这行注释掉,清频

if(1==select)

{

mark = 1;

while (1)

{

for(i=0;isizeof(student)/sizeof(Student);i++)

mark=mark*(student[i].IsRead? 1:0);

if(mark)

{

printf("你已经把全班点了个遍\n");

break;

}

srand(time(NULL));

i = rand()%(sizeof(student)/sizeof(Student));

if(!student[i].IsRead)

{

printf("点名:%s\n",student[i].name);

student[i].IsRead = true;

break;

}

}

}

else if (2==select)

{

for(i=0;isizeof(student)/sizeof(Student);i++)

{

if(!student[i].IsRead)

printf("%s ",student[i].name);

}

printf("\n");

}

else if(3==select)

{

printf("谢谢使用\n");

return 0;

}

}while(true);

return 0;

}

这可是我一个字一个字的打出来的,专门为你写的!~

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/288996.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝的头像小蓝
上一篇 2024-12-24 03:01
下一篇 2024-12-24 03:01

相关推荐

  • AES加密解密算法的C语言实现

    AES(Advanced Encryption Standard)是一种对称加密算法,可用于对数据进行加密和解密。在本篇文章中,我们将介绍C语言中如何实现AES算法,并对实现过程进…

    编程 2025-04-29
  • 学习Python对学习C语言有帮助吗?

    Python和C语言是两种非常受欢迎的编程语言,在程序开发中都扮演着非常重要的角色。那么,学习Python对学习C语言有帮助吗?答案是肯定的。在本文中,我们将从多个角度探讨Pyth…

    编程 2025-04-29
  • Python被称为胶水语言

    Python作为一种跨平台的解释性高级语言,最大的特点是被称为”胶水语言”。 一、简单易学 Python的语法简单易学,更加人性化,这使得它成为了初学者的入…

    编程 2025-04-29
  • OpenJudge答案1.6的C语言实现

    本文将从多个方面详细阐述OpenJudge答案1.6在C语言中的实现方法,帮助初学者更好地学习和理解。 一、需求概述 OpenJudge答案1.6的要求是,输入两个整数a和b,输出…

    编程 2025-04-29
  • Python按位运算符和C语言

    本文将从多个方面详细阐述Python按位运算符和C语言的相关内容,并给出相应的代码示例。 一、概述 Python是一种动态的、面向对象的编程语言,其按位运算符是用于按位操作的运算符…

    编程 2025-04-29
  • Python语言由荷兰人为中心的全能编程开发工程师

    Python语言是一种高级语言,很多编程开发工程师都喜欢使用Python语言进行开发。Python语言的创始人是荷兰人Guido van Rossum,他在1989年圣诞节期间开始…

    编程 2025-04-28
  • Python语言设计基础第2版PDF

    Python语言设计基础第2版PDF是一本介绍Python编程语言的经典教材。本篇文章将从多个方面对该教材进行详细的阐述和介绍。 一、基础知识 本教材中介绍了Python编程语言的…

    编程 2025-04-28
  • Python语言实现人名最多数统计

    本文将从几个方面详细介绍Python语言实现人名最多数统计的方法和应用。 一、Python实现人名最多数统计的基础 1、首先,我们需要了解Python语言的一些基础知识,如列表、字…

    编程 2025-04-28
  • Python作为中心语言,在编程中取代C语言的优势和挑战

    Python一直以其简单易懂的语法和高效的编码环境而著名。然而,它最近的发展趋势表明Python的使用范围已经从脚本语言扩展到了从Web应用到机器学习等广泛的开发领域。与此同时,C…

    编程 2025-04-28
  • Python基础语言

    Python作为一种高级编程语言拥有简洁优雅的语法。在本文中,我们将从多个方面探究Python基础语言的特点以及使用技巧。 一、数据类型 Python基础数据类型包括整数、浮点数、…

    编程 2025-04-28

发表回复

登录后才能评论