比如说,我有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]ä¹é´çå符äºï¼ä»èå®ç°æ§å¶çæéæºæ°æ®èå´çææã
如果每个名字都配有编号的话,就需要结构体了……然后使用结构体数组……
name[rand()%100] 就能得到一个名字了……
我觉得这是最简单的方法了……
当然,有数据库的话也可以……
建立一个表inf,有两个值ID和NAME
int i = rand%100;
select name from inf where id = i;本回答被提问者和网友采纳
假设你的名字在一个文本里,读文本,一行一个名字。用string保存之后存到你的容器里。
然后用随机数。
rand() % vector.size()得到一个随机的下标,用这个下标去取容器里的数据。
搞定
名字存数组,取数组下标,数组下标随机
存字符串,用指定字符隔开。处理的时候分割字符到数组。还是取数组下标