[語法] 呼叫函數
簡易流程圖
(迴圈)
做 5次←──┐
↓ │
呼叫lcga函數┘
↓( 5次)
結束程式
===========程式內容==================
#include <stdio.h>
void lcga(void)
{
static int Lcg_seed = 12345;
int lcg_a,lcg_p;
lcg_p = 2147483647;
lcg_a = 16807;
lcg_seed = (lcg_a*lcg_seed) % lcg_p;
printf("%d\n", Lcg_seed);
}
int main(void)
{
int i;
for(i=0; i<5;i++)
lcga();
printf("%d\n", Lcg_seed);
return 0;
}
========================================
刪除紅色那行,執行結果是
207482415
-356495447
-139599809
-1201846247
-198680241
========================================
而書上的範例是
===============範例=====================
int a =0;
void func(void)
{
int b=0;
static int c=0;
printf("變數a為%d,變數b為%d,變數c為%d\n", a,b,c);
a++;
b++;
c++;
}
int main(void)
{
int i;
for (i=0;i<5;i++)
func();
return 0;
}
==============結果======================
a=0 b=0 c=0
a=1 b=0 c=1
a=2 b=0 c=2
…
========================================
我仿書上把lcg_seed在全區宣告,但是不知道為什麼
呼叫lcga,在lcga列印lcg_seed是 0;在main列印lcg_seed是12345不會變
所以試著用 static ,結果可以,但是變得無法在main print....(紅色那行)
另外,我的程式中
lcg_seed = (lcg_a*lcg_seed) % lcg_p;
照道理來講,求出來的餘數應該永遠是正的
怎麼會出現負的答案呢...~.~??
我用Maple程式去跑答案,只有第一個答案是正確的,之後沒有一個正確
程式哪裡有問題呢??
========================================
另外
int main(void)
{
unif01_Gen *gen;
gen = ulcg_CreateLcg (2147483647, 397204094, 0, 12345);
retuen 0
}
我執行過相同的 ulcg_CreateLcg函數(包含後方的參數)
它能產生不同的數字
我該如何 寫出像這樣的函數呢?
是否直接用.txt寫好,存成.c 就可以用#include "lcga.c"呼叫了呢?
感恩
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.195.128.31
※ 編輯: chrisjon 來自: 123.195.128.31 (05/03 06:53)
推
05/03 08:45, , 1F
05/03 08:45, 1F
推
05/03 12:54, , 2F
05/03 12:54, 2F
→
05/03 12:55, , 3F
05/03 12:55, 3F
→
05/03 15:06, , 4F
05/03 15:06, 4F
討論串 (同標題文章)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章