rand()生成的結(jié)果是一個整數(shù),如果想得到字符(字母),則需要控制得到的數(shù)據(jù)在'a' - 'z'的ascii值之間的數(shù)據(jù),給你一個生成大寫字母的
為渭源等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及渭源網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都網(wǎng)站建設(shè)、成都網(wǎng)站制作、渭源網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!
int getRandChar()
{
int ch;
srand(time(NULL));
ch=rand()%26; //生成0-25的值
ch += 'A' ; //可得到一個隨機字母
return ch ;
}
隨機輸出一個字符串,其實就是要隨機生成一個字符串并輸出。
要實現(xiàn)這一點,可以通過rand函數(shù)來實現(xiàn)。
具體示例代碼如下:
#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));//通過時間函數(shù)設(shè)置隨機數(shù)種子,使得每次運行結(jié)果隨機。
for(i?=?0;?i??STR_LEN;?i?++)
{
str[i]?=?rand()%(CHAR_MAX-CHAR_MIN?+?1)?+?CHAR_MIN;?//生成要求范圍內(nèi)的隨機數(shù)。
}
printf("%s\n",?str);//輸出生成的隨機數(shù)。
return?0;
}
以上代碼實現(xiàn)了隨機生成一個長度為10,全部字符均為小寫英文字符的字符串并輸出。
核心語句為str[i] = rand()%(CHAR_MAX-CHAR_MIN + 1) + CHAR_MIN;
其中,
rand()獲取一個隨機數(shù),
rand()%(CHAR_MAX-CHAR_MIN + 1)使結(jié)果位于[0, CHAR_MAX-CHAR_MIN]之內(nèi)。這里利用了模除的特性。
這樣最終的結(jié)果就是位于[CHAR_MIN, CHAR_MAX]之間的字符了,從而實現(xiàn)控制生成隨機數(shù)據(jù)范圍的效果。
字母 要求是包括大小寫嗎?
可以這樣
char?c;
srand(time(NULL));//設(shè)置隨機數(shù)種子
c?=?rand()%52;
if(c??25)?c?=?c?-?25?+?'a';
else?c?=?c+'A';