作者flyingcop (飛揚的杯子)
看板C_and_CPP
標題[問題] rand取位數的問題
時間Tue Jun 9 14:03:30 2009
如題
我們老師要求我們找出n個十位數的亂數
我的程式已經寫到這樣了
int main()
{
int i, n, n2;
int num[100];
^^^^^^
do
{
printf("請輸入要幾個個位數亂數\n");
scanf("%i",&n);
srand(time(NULL));
printf("原始陣列");
for(i=0; i<n; i++)
{
num[i]=rand()%11;
if(num[i]>0 && num[i]<10)
^^^^^^^^^^^^^^^^^^^^^^^^主要是由這裏開始不知道該怎麼改
{
printf(" %i ",num[i]);
}
}
---------------------
我這個寫法已經可以找出屬於個位數的亂數
可是問題是 他會自動把不符合條件的亂數刪除
例如:我希望找到十個符合條件的亂數
但是這次的亂數裡面只有七個符合條件
顯示出來就只有顯示七個 可是我要找十個呀>"<
---------------------
另外再問一個 陣列的索引值應該怎麼設定才可以配合使用者的輸入值呢?
(因為這題是要求要使用者自行輸入顯示出的亂數個數
那假設 使用者輸入99 或 999 或9999 就會超出範圍)
老師是告訴我們用[宣告位址]
(可是他只告訴我原理 沒有告訴我應該要怎麼寫 我很笨 這樣不懂)
應該怎麼用比較好呢
--
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.127.179.155
※ 編輯: flyingcop 來自: 140.127.179.155 (06/09 14:04)
1F:→ sosokill:else n--; 06/09 14:41
2F:推 VictorTom:32 bit的insigned int也只能放最大到 42,9496,7295.... 06/09 15:47
3F:→ VictorTom:而stdlib.h裡的rand()回傳印象中最大到32767而已.... 06/09 15:48
4F:→ VictorTom:如果你的作法是想產生十個0~9的數湊成十位數, 應該%10 06/09 16:04
5F:→ VictorTom:當你有10個0~9的數字自然就拼成了一個十位數的數字.... 06/09 16:05
6F:→ VictorTom:最多就是要印的時候, 一開始前n個0可能不用印出來@_@" 06/09 16:06
7F:→ VictorTom:至於是N個亂數是使用者輸入的, 如果不用儲存那根本沒差. 06/09 16:08
8F:→ VictorTom:產生亂數與印出的部份直接給它跑N遍就行了XD 06/09 16:08