C#,用vs做一个winform随机点名程序,求帮助。紧急~

C#,用vs做一个winform随机点名程序,求帮助。紧急~,第1张

public  string[] nameStr={"森枣皮甲",“乙",......}姓名组

public int ids=10随机数量

public  string[,] names=string[ids] 出现的名称

public void time() 执行的语句

{

  int i=0

    while(i<ids){

    int id=random(nameStr.length())//随机函数

    showname(id,i)

    id++

  }

}

生成名单

public void showname(int id,int 岩陆i)

{

   nameStr[i]=nameStr[id]

   //加入显示名单的语句textbox.text=textbox.text+nameStr[id]

    str(id)

}

数组移动

public void str(int id)

{

    int tempids=nameStr.length()-1

    string[] tempstr=new string[tempids]

    int tempi=0

    for(int j=0j<=tempidsj++)

   {

         if(tempi!=id) 

         {

         tempstr[tempi]=nameStr[j]

         tempi++

        }

   }

  此差  nameStr=tempstr

 }

网上有现成的,我只是搬过来,不过自己写也简单

例:

#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--&gt;m域宽,打印出来以后,在控制台上,显示m位;

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

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

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

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

2、转义字符

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

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

我用控制台做了一个,你可以参考谨拍大: public class Test { public static string GetRandomName(params string[] names) { Random rd = new Random(DateTime.Now.Millisecond)return names[rd.Next(0, names.Length)]} //主函数 public static void Main(String[] args) { //测试: Console.WriteLine(GetRandomName("张三", "李四", "王五贺埋", "赵六"))} } 实际上,你把这段祥竖代码也可以黏贴到WinForm中,在Button(按钮事件点击中),写上诸如主函数中的输出代码。主语“张三”、“李四”,可以通过创建一个文本文件(每一行有一个姓名),然后使用File.ReadAllLines("绝对路径文本文件")作为参数读入即可。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12464867.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存