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

如题所述

#include<stdio.h>
#include<stdlib.h>
int main()
{
FILE*fp;
char name[15];
char num[15];
char ch;
int n=0,m;
unsigned int bb;


fp=fopen("student.txt","r");
while(!feof(fp))
{
ch=fgetc(fp);
if(ch=='\n')n++;
}//统计人数
fclose(fp);
bb=time(0);
srand(bb);
m=rand()%n+1;

n=0;
fp=NULL;
fp=fopen("student.txt","r");
while(!feof(fp)&&n<m)
{
n++;
fscanf(fp,"%s %s",name,&num);
}
printf("随机抽取:%s %s\n",name,num);
fclose(fp);
system("pause");
}

文件内容:

追问

不用文件能行么??没学到这一块呢

就是提前把姓名,学号之类的输入一些,然后随机从中抽取一个

大神⊙▽⊙(#゚Д゚)

追答
#include<stdio.h>
#include<stdlib.h>
int main()
{
    char name[20][15];//最多20个人
    int num[20];
    int pstk=0;
    int i=0;
    char j;
    unsigned char c;
    while(1)
    {
        printf("输入姓名");
        scanf("%s",name[pstk]);
        getchar();
        printf("输入学号");
        scanf("%d",&num[pstk]);
        getchar();
        pstk++;
        printf("是否继续?(y/n)");
        scanf("%c",&j);
        getchar();
        if(j=='y')continue;
        else if(j=='n') break;
    }
    c=time(0);
    srand(c);
    i=rand()%pstk;
    printf("随机抽取:%s %d\n",name[i],num[i]);
    system("pause");
}

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-12-25


int main(void)
{
char name[20];//名字
int num;//学号
int i = 10, j=0; //输出10个

while(i--)
{
num = (rand()%100);
for(j=0; j<10; j++)//名字长度为10
{
name[j] = 'A' + (rand() % 26);
}
name[j] = '\0';

printf("%d %s\n\r", num, name);
Sleep(1000); ///1s输出一个
}
return 0;
}

追问

能详细解释一下吗??谢谢😭

for里面有点不懂

追答num = (rand()%100); //这里随机0-100的数作学号
for(j=0; j<10; j++)//名字长度为10         
{             
    name[j] = 'A' + (rand() % 26);  ///英文是26个字母,顺序是a-z,
                                    ///这里运用了ASCII码  
                                    ///这里就是在a-z 26个字母中随机抽取一个字母
}         
name[j] = '\0';

第2个回答  2014-12-25
名字怎么个抽法追问

就当整数吧

追答

名字呢?随机抽字母?

追问

char??

追答

。。。就是在26个字母里随便抽几个组成字符串,做名字?

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<conio.h>  //不用在意,为了实现一个小功能。。
#include<ctype.h>
int main()
{
   char letter[26] = {0},name[5] = {0};
   int id = 0;
   size_t size = sizeof(letter)/sizeof(char);
   char ke = 'a';
   //恩。。懒得自己打字母了。。
   for(int i = 0;i<size;++i)
      letter[i] = ke++;
   srand(time(NULL));//弄个种子
   ke = 0; //等一下有用(强迫症非要把它弄成0,不然浑身难受)
   printf("Enter any key...\n");
   while(true)
   {
      ke = getch();  //这里实现没按一次按键就显示一条信息。。嗯哼
      if(toupper(ke) = 'Q')   //按到q/Q就结束程序啦
         break;
      for(int i = 0;i<sizeof(name)/sizeof(char);++i)
          //随机抽~五个字母,刚刚的size可以重(chong)用。
           name[i] = letter[rand()%size];  //这样感觉抽出来的名字会很奇怪。
       name[0] = toupper(name[0]);//第一个字母变成大写。。。
       //直接用rand生成一个长一点的整形就好。。。不够长可以用random()
       id = rand();
       printf("Name: %s\tID: %d\n",name,id);// \t来个制表符
    }
    printf("EXIT...\n");//信息,不然退出了反应不过来
    return 0;
}

 你可以按着回车不放,或者按别的键。。按q就会退出,按一次键打印一条,按着不放一直打印

因为没说要打印多少条啊。想把名字该长直接去改name的元素个数就可以了

C语言,使用rand()函数,编写程序,随机输出同学们的姓名和学号,在线等...
include<stdio.h>#include<stdlib.h>int main(){FILE*fp;char name[15];char num[15];char ch;int n=0,m;unsigned int bb;fp=fopen("student.txt","r");while(!feof(fp)){ch=fgetc(fp);if(ch=='\\n')n++;}\/\/统计人数fclose(fp);bb=time(0);srand(bb);m=rand()%n+1;n=0...

程序每次运行输出随机的学号和姓名 运用c语言
rand()%M+N; (M为学生数目,N为最小学号数),即可产生一个随机学号,根据学号检索姓名就可以了。rand的调用要初始化,调用之前先执行srand();这两个函数的头文件为#include<stdlib.h> include<stdio.h>#include<stdlib.h> void main(){ int b; srand(34);\/\/34为种子数,可以为任意值...

c语言随机输出学生姓名和学号
就是随机参赛随机数,作为下标,访问数组或结构体。include <stdio.h>#include int main(void){ printf("%d\\n", subscript(128)); return 0;}\/\/\/ mod 为数组或结构体的最大值int subscript(int mod){ srand((unsigned)time(NULL)); int index = rand() % mod; return ind...

用C语言编写一个随机点名程序
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].sna...

C语言如何随机输出一个字符串?
随机输出一个字符串,其实就是要随机生成一个字符串并输出。要实现这一点,可以通过rand函数来实现。具体示例代码如下:include <stdio.h>#include <stdlib.h>#include #define STR_LEN 10\/\/定义随机输出的字符串长度。#define CHAR_MIN 'a'#define CHAR_MAX 'z' \/\/定义输出随机字符串每个字符的...

在C语言编程中,如何实现让电脑随机输出一1~9的整数?
rand()函数会返回一个伪随机数,但是这是通过一种数学公式推算出来的,得到的随机数分布太集中,这时候要使用srand()函数来设定产生随机数的种子,一般采用当前时间作为种子,这样可以得到分布比较均匀的伪随机数。rand(),srand()函数位于stdlib.h文件中,取得时间的time()函数位于time.h文件中。rand()...

求vfp中计时器的代码,用来随机抽取点名,显示学号跟姓名
用rand函数,按你这个意思,建议考虑先建一个表,表中存储学号、姓名等信息,然后在表单中添加一个计时期,计时周期根据需要设置,计时器time代码中主要使用rand函数产生随机数,然后以此随机数去查找相应记录,例如将此随机数看做记录号,直接用go语句就可以。但从实际应用看,还得有许多其它设计,例如,...

c语言做学号抽签程序,不要有重复抽到同一个人
include <stdio.h> include<stdlib.h> include define N 50 \/\/班级人数 void main(){ int n;srand(time(0)); \/\/获取当前时间作为种子,保证每次产生随机数的种子不同 n=rand()%N;printf("\\n\\n你被选中啦:\\n");printf(">%3d号\\n\\n\\n",n);system("pause");} ...

linux编写代码实现两个班级的随机点名(学号)
! \/usr\/bin\/pythonimport randoml=['a','b','c','d','e','f','g','h','i','j','k','l','n','m','o','p','q','r','s','t','

C语言程序设计:有30名学生的5门成绩,编写函数统计不及格成绩最多的一...
include define M 30\/\/最大人数 define S 5\/\/最大学科数 define P 60\/\/及格线 typedef struct stu { int id;\/\/学生学号 int scores[5];\/\/5们成绩 }STU;void init(STU stus[]);\/\/初始化数值,并打印输出 void stt(STU stus[]);\/\/统计并输出不及格人数最多的科目 int main(){ STU...

相似回答