① c語言,大家幫我看看這個程序,為啥輸出的是一大堆沒有規律的數字呢
這是因為你定義的數組a[2][3]沒初始化,你可以加一個初始值:
int
a[2][3]={0},(*p)[3]=a,i,j;
這樣就沒問題了。
至於沒初始化出現的問題數字,這是隨機的,反正不是你賦值的,程序里從哪裡取出來的,不可預測。
② C語言中隨機數是如何產生的呢
一般是偽隨機數,通過一個種子來生成偽隨機數序列,然後從序列里取數來當作隨機數
當然,一般應用可以使用一些隨機事件,如某件事發生的時刻,ad器件上讀到的雜訊電壓之類的
對偽隨機數種子進行隨機化,這樣再得到的隨機數就比較沒有規律了
③ C語言 sprintf函數,如何生成不規則的隨機字元串
沒有明白你的本意是什麼,做了一個,你看看吧,不對接著追問
#include"stdio.h"
#include"stdlib.h"
#include"time.h"
intmain()
{
inta;
srand((unsigned)time(NULL));
a=rand()%1000;
printf("隨機數%0d ",a);
}
④ C語言:如何產生不重復的隨機數字
數學意義上的隨機數在計算機上已被證明不可能實現。通常的隨機數是使用隨機數發生器在一個有限大的線性空間里取一個數。「隨機」甚至不能保證數字的出現是無規律的。
我覺得你的程序邏輯似乎不對,看程序a的值應該來自數組num[],假如在第一個for循環中生成的x值為1,第二次仍然生成1,程序將陷入死循環,又或者a是某個特定值,只是你應該給出說明。
使用系統時間作為隨機數發生器是常見的選擇,參考下面的隨機輸出1個1~99數字的程序:
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
int main(void)
{
int i;
time_t t;
srand((unsigned) time(&t));
printf("Ten random numbers from 0 to 99\n\n");
for(i=0; i<10; i++)
printf("%d\n", rand() % 100);
return 0;
}
⑤ C語言中如何給一個數組輸入一組總數未知的數
#include<stdio.h>
#include<ctype.h>
int main()
{
int a[1000];
char c;
int i=0;
int n=0;
while((c=getchar())!=' ')
{
if(isdigit(c))
{
ungetc(c,stdin);//將c送回輸入流
scanf("%d",&a[n++]);
}
}
for(i=0;i<n;i++)
{
printf("%d",a<i>);
}
return 0;
}
(5)c語言怎麼出現一組沒有規律的數擴展閱讀:
printf()函數的用法
1.printf()函數的調用格式為:printf("<格式化字元串>",<參量表>);
//__stdcall
int __cdecl printf(const char*p,...);
...可變參數
printf在列印浮點數,不論原來是雙精度還是單精度,都變為雙精度(8位元組)
列印1位元組(char)2位元組(short)4位元組(int)==>4位元組,除了long long(8位元組)
void main()
{
int a=10;
folat ft=12.25f;
printf("%d%d ",a,ft);
}
%d格式控制符--不具有強轉能力
A格式化字元串包括兩部分內容:
一部分是正常字元,這些字元將按原樣輸出;
另一部分是格式化規定字元,以"%"開始,後跟一個或幾個規定字元,用來確定輸出內容格式。
1.d/i有符號十進制形式輸出(正數不輸出符號)
2.u無符號十進制形式輸出
3.o無符號八進制形式輸出(不輸出前綴0)
4.x無符號十六進制形式輸出(不輸出前綴Ox),並以小寫abcdef表示。
5.X無符號十六進制形式輸出(不輸出前綴Ox),並以大寫ABCDEF表示。
6.c輸出單個字元
7.s輸出字元串
8.f以小數形式輸出單、雙精度實數
9.E/e用科學計數法表示浮點數
10.G/g以%f或%e中較短的輸出寬度輸出單、雙精度實數
+++++++++
void main()
{
long long x=0x12345678901357;
printf("%x ",x);//=>78 90 13 57
printf("%lx ",x);//=>78 90 13 57
printf("%llx ",x);//=>12345678901357
}
B參量表
需要輸出的一系列參數,其個數必須與格式化字元串所說明的輸出參數個數一樣多,各參數之間用","分開,且順序一一對應
例題:
void main()
{
char a=128;
printf("%d ",a);//=>-128
printf("%x ",a);//=>ffff ff80
}
當printf調用,a給可變參數,自然而然擴展為4位元組,a是有符號數,擴展的時候加符號位
1111 1111 1111 1111 1111 1000 0000=>ffff ff80
unsigned char a=128;
printf("%x ",a);==>80
⑥ C語言中生成一組各不相同的不重復的隨機數
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
intmain()
{
int*a,n,i,j;
scanf("%d",&n);
a=(int*)calloc(n,sizeof(int));
srand(time(NULL));
for(i=0;i<n;i++)
{
loop:
a[i]=rand()%n+1;
for(j=0;j<i;j++)
if(a[i]==a[j])gotoloop;
}
for(i=0;i<n;i++)printf("%d",a[i]);
printf(" ");
free(a);
return0;
}
⑦ C語言中怎樣生成隨機數
C語言生成
隨機數
的
函數
為rand。
1
聲明:
int
rand(void);
2
頭文件:
stdlib.h
3
功能:
獲取一個非負隨機
數值
。
4
注意事項:
a)
rand是
偽隨機數
,由一個種子計算得來。
如果種子相同,每次啟動
程序
,獲取到的
隨機序列
是固定的。
可以通過srand設置當前時間作為種子,使隨機效果更好。
srand(time(NULL));
b)
要獲取[m,n]范圍的隨機數,可以使用代碼
rand()%(n-m+1)+m
⑧ C語言 怎麼產生沒有重復的一組隨機數
隨機數是有幾率產生重復的數,你可以把新產生的跟前面的每一個比較如果有相等的就重新產生。
⑨ c語言怎樣同時產生幾組不同的隨機數
int
a=(int)random(b);random(n)是產生從1到n
的一個隨機數
nt
a=rand();rand()產生的是0--32767之間的隨機數,rand()%5則結果為0-4的任意數,rand()%5+1則為1-5的任意數
⑩ C語言如何產生一組隨機數
#include
<stdio.h>
#include
<stdlib.h>
#include
<time.h>
int
main(void)
{
int
a;
int
t=10,d=100;
srand(time(NULL));
/*初始化隨機數種子*/
a=rand()%(d-t)+t;
/*生成一個[t,d)區間內的整數*/
return
0;
}