比如说,我有100个人的名字(均大于一个字符),现在要求随机输出其中一人的名字?有人知道怎么设计这个程序么?不需要源码,只要思路就行。PS:除了说什么建立100个变量,每个里面存...
比如说,我有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]之间的字符了,从而实现控制生成随机数据范围的效果。