c语言如何随机输出同学名字?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言如何随机输出同学名字?相关的知识,希望对你有一定的参考价值。

同学a=王强;
同学b=张龟;
同学C=李大爷;

求实例,回答好加分谢谢!

#include <stdlib.h>
#include <time.h>
int randonNumber()
int i,number;
srand((unsigned) time(NULL)); //用时间做种,每次产生随机数不一样
for (i=0; i<50; i++)

number = rand() % 2;

return number;

void main()
char * name="王强","张龟","李大爷";
int order = randonNumber();
switch(order)
case 0:
printf("同学A=%c",name[0]);
break;
case 1:
printf("同学B=%c",name[1]);
break;
default:
printf("同学C=%c",name[2]);
break;

追问

辛苦了兄弟,我这边运行有点问题

追答

#include
#include
int randonNumber()
int i,number;
srand((unsigned) time(NULL)); //用时间做种,每次产生随机数不一样
for (i=0; i<50; i++)

number = rand() % 2;

return number;

void main()
int order = randonNumber();
switch(order)
case 0:
printf("同学A=王强");
break;
case 1:
printf("同学B=张龟");
break;
default:
printf("同学C=李大爷");
break;


估计是中文有点问题,直接这样输出

追问

你有调试过吗?还是报错的

追答

报什么错误?

参考技术A 随机数函数
int rand( void );
除以3.余数是几0,1,2!
多看书。

用C语言如何实现多线程同时运行的情况下,各个线程输出不同的随机数?

我用系统时间作为种子,发现因为各个线程之间运行的时间差太小,所以产生的随机数还是相同的。网上有种方法可以用微秒级的时间作种子,但我没看懂,不知道谁能帮忙解释下不?或者有其他方法也欢迎提出。不过在srand前让线程sleep的方法就不需要了,因为我这里的情况要求线程之间要同时运行。

1、使用pthread库执行多线程,这个是Linux下的线程库 Windows下应该有自己的API,不过这种东西一般还是以Linux为标准。pthread_create()创建一个线程,传入fun()的函数指针就行了。然后这个Beep()的需求要进行线程间通信,可以用共享内存的方法,设一个bool变量flag共享,然后beep的时候设为false,beep完设成true。fun()里面每次看一下这个flag,是false的话就不做动作等下一秒,基本可以满足需求。

2、例程:

#include <pthread.h>
#include <stdio.h>
#include <sys/time.h>
#include <string.h>
#define MAX 10
pthread_t thread[2];
pthread_mutex_t mut;
int number=0, i;
void *thread1()

printf ("thread1 : I'm thread 1\\n");
for (i = 0; i < MAX; i++)

printf("thread1 : number = %d\\n",number);
pthread_mutex_lock(&mut);
number++;
pthread_mutex_unlock(&mut);
sleep(2);

printf("thread1 :主函数在等我完成任务吗?\\n");
pthread_exit(NULL);

void *thread2()

printf("thread2 : I'm thread 2\\n");
for (i = 0; i < MAX; i++)

printf("thread2 : number = %d\\n",number);
pthread_mutex_lock(&mut);
number++;
pthread_mutex_unlock(&mut);
sleep(3);

printf("thread2 :主函数在等我完成任务吗?\\n");
pthread_exit(NULL);

void thread_create(void)

int temp;
memset(&thread, 0, sizeof(thread)); //comment1
/*创建线程*/
if((temp = pthread_create(&thread[0], NULL, thread1, NULL)) != 0) //comment2
printf("线程1创建失败!\\n");
else
printf("线程1被创建\\n");
if((temp = pthread_create(&thread[1], NULL, thread2, NULL)) != 0) //comment3
printf("线程2创建失败");
else
printf("线程2被创建\\n");

void thread_wait(void)

/*等待线程结束*/
if(thread[0] !=0)  //comment4
pthread_join(thread[0],NULL);
printf("线程1已经结束\\n");

if(thread[1] !=0)  //comment5
pthread_join(thread[1],NULL);
printf("线程2已经结束\\n");


int main()

/*用默认属性初始化互斥锁*/
pthread_mutex_init(&mut,NULL);
printf("我是主函数哦,我正在创建线程,呵呵\\n");
thread_create();
printf("我是主函数哦,我正在等待线程完成任务阿,呵呵\\n");
thread_wait();
return 0;

参考技术A 你用 (系统时间 - 线程 id*10) 作种子 就可以了。
种子变了,随机数系列就会变。
或 一个线程种子用 srand(1234); 另一个用 srand(4321); ...
加 系统时间 目的是 每次跑程序 随机数系列不同,更符合“随机”。本回答被提问者采纳

以上是关于c语言如何随机输出同学名字?的主要内容,如果未能解决你的问题,请参考以下文章

C语言如何用数组存储一些中文名字,并且可以随机抽取一个名字输出

C语言中如何用名字存数组,用时间函数模拟随机,实现随机输出一个姓名。

C语言 随机产生10个手机号,不能重复。输入英文名后绑定手机号,一个名字一个手机号

C语言,使用rand()函数,编写程序,随机输出同学们的姓名和学号,在线等。。。。。

在C语言中如何固定字符的长度

C语言随机数字