C语言如何随机输出一个字符串?

Posted

tags:

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

比如说,我有100个人的名字(均大于一个字符),现在要求随机输出其中一人的名字?有人知道怎么设计这个程序么?不需要源码,只要思路就行。
PS:除了说什么建立100个变量,每个里面存个名字,最后用switch这种办法。这个不考虑

随机输出一个字符串,其实就是要随机生成一个字符串并输出。

要实现这一点,可以通过rand函数来实现。

具体示例代码如下:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define STR_LEN 10//定义随机输出的字符串长度。
#define CHAR_MIN \'a\'
#define CHAR_MAX \'z\' //定义输出随机字符串每个字符的最大最小值。
int main()

    char str[STR_LEN + 1] = 0;
    int i;
    
    srand(time(NULL));//通过时间函数设置随机数种子,使得每次运行结果随机。
    for(i = 0; i < STR_LEN; i ++)
    
        str[i] = rand()%(CHAR_MAX-CHAR_MIN + 1) + CHAR_MIN; //生成要求范围内的随机数。
    
    printf("%s\\n", str);//输出生成的随机数。
    
    return 0;

以上代码实现了随机生成一个长度为10,全部字符均为小写英文字符的字符串并输出。

核心语句为str[i] = rand()%(CHAR_MAX-CHAR_MIN + 1) + CHAR_MIN;

其中,

rand()获取一个随机数,

rand()%(CHAR_MAX-CHAR_MIN + 1)使结果位于[0, CHAR_MAX-CHAR_MIN]之内。这里利用了模除的特性。

这样最终的结果就是位于[CHAR_MIN, CHAR_MAX]之间的字符了,从而实现控制生成随机数据范围的效果。

参考技术A 字符串数组是必备的……不然很难实现……
如果每个名字都配有编号的话,就需要结构体了……然后使用结构体数组……
name[rand()%100] 就能得到一个名字了……
我觉得这是最简单的方法了……
当然,有数据库的话也可以……
建立一个表inf,有两个值ID和NAME
int i = rand%100;
select name from inf where id = i;本回答被提问者和网友采纳
参考技术B 用一个vector容器,里面存string。
假设你的名字在一个文本里,读文本,一行一个名字。用string保存之后存到你的容器里。
然后用随机数。
rand() % vector.size()得到一个随机的下标,用这个下标去取容器里的数据。
搞定
参考技术C 把人名放到大小为100的数组里,你可以从0到100中随机取一个数字,然后把这个数字作为元素下标,打印数组里这个下标对应的元素,就可以随机打出人名了。 参考技术D

    名字存数组,取数组下标,数组下标随机

    存字符串,用指定字符隔开。处理的时候分割字符到数组。还是取数组下标

C/c++中如何产生指定的随机字符

随机输出a、s、p 三个字符中的任意一个~

C/c++中如何产生指定的随机字符,方法为:

    将指定的字符存储到字符数组a中,字符个数为n。

    生成[0-n)的随机数 i=rand()%n

    按随机数取数组元素  a[i]

参考代码:

#include <stdlib.h> //rand srand
#include <stdio.h>
#include <time.h>
void main()

    char a[]="asp" ;
    int n=3;
    int i;
    srand(time(NULL)); //随机种子
    i=rand()%n ;
    printf("%c\\n", a[i] );

参考技术A u ?
??7 ??d m ?? ] ???V ???e ??F   ?~ ? i  ? ??n g ?Q ' ? ?? ?Press any ke
y to continue
#include "stdio.h"
#include "stdlib.h"
#include "time.h"

main()

int i;
srand((unsigned)time(NULL));
//数字 大小写 字符 都有 限定范围可生成 指定 大写 小写 数字 字符
for (i=0;i<50;i++)

printf("%c ",rand()%256);

参考技术B #include <stdio.h>
#include <stdlib.h>
#include <time.h>

void main()

char a[] = 'a','s','p';
int i,idx;

srand(time(0));////随机数种子
for(i = 0; i < 10; i++)////假设需要输出10个

idx = rand()%3;///3是字母表的个数,求余数的结果为0,1,2
printf("%c\n", a[idx]);


追问

只随机输出一个字符,然后把这个字符赋予一个变量

本回答被提问者采纳
参考技术C srand(time());
int i = rand() %3;
switch(i)

case 0:
printf("a“);
break;
case 1:
printf("s“);
break;
case 2:
printf("p“);
break;

关键是rand()随机函数的使用 rand() %3 产生一个 0-2的随机 数

以上是关于C语言如何随机输出一个字符串?的主要内容,如果未能解决你的问题,请参考以下文章

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

c语言如何实现字符的批量输入和批量输出?

C语言 sprintf函数,如何生成不规则的随机字符串?

输出一个随机字符串中的数字之和-Python

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

如何用COBOL语言生成随机数?如何截取字符串?知道的大哥大姐告诉一下,谢谢O(∩_∩)O~