#include<stdio.h> void trystat(void); int main(void) { int count; for(count=1;count<=3;count++) { printf("Here comes itertion %d:/n",count); trystat(); } getch(); return 0; } void trystat(void) { int fade=1; static int stay=1;//静态变量 printf("fade=%d and stay= %d/n",fade++,stay++); } //使用外部变量 #include<stdio.h> int units=0;//一个外部变量 void critic(void); int main(void) { extern int units; printf("How many pounds to firkin of buter?/n"); scanf("%d",&units); while(units!=56) critic(); printf("You must have looked it up!/n"); getch(); return 0; } void critic(void) { //这里省略了可选的二次声明 printf("No luck,chummy.Try again./n"); scanf("%d",&units); } //part_a #include<stdio.h> void report_count(); void accumlate(int k); int count=0;//文件作用域,外部链接 int main(void) { int value; register int i;//寄存器变量 printf("Enter a positive(0 to quit):"); while(scanf("%d",&value)==1&&value>0) { ++count;//使用文件作用域变量 for(i=value;i>=0;i--) accumulate(i); printf("ENter a positive integer(0 to quit):"); } report_count(); getch(); return 0; } void report_count() { printf("Loop executed %d times/n",count); } //part_b #include<stdio.h> extern int count;//引用声明,外部链接 static int total=0;//静态定义,内部链接 void accumulate(int k)//k具有代码块作用域,空链接 { static int subtotal=0;//静态,空链接 if(k<=0) { printf("loop cycle:%d/n",subtotal,total); subtotal=0; } else { subtotal+=k; total+=k; } } //rand0.c产生随机数 #include<stdio.h> static unsigned long int next=1;//种子 int rand0(void) { next=next*1103515245+12345; return(unsigned int)(next/65516)%32768; } //randb #include<stdio.h> extern int rand0 (void); int main(void) { int count; for(count=0;count<5;count++) { printf("%hd/n",rand0()); } getch(); return 0; } static unsigned long int next=1;//种子 int rand1(void) { next=next*1103515245+12345; return (unsigned int)(next/65536)%32768; return 0; } void srand1(unsigned int seed) { next=seed; } static unsigned long int next=1;//种子 int rand1(void) { next=next*1103515245+12345; return (unsigned int)(next/65536)%32768; return 0; } void srand1(unsigned int seed) { next=seed; } #include<stdio.h> extern void srand1(unsigned int x); extern int rand1(void); int main(void) { int count; unsigned seed; printf("please enter your choice for seed./n"); while(scanf("%u",&seed)==1) { srand1(seed); for(count=0;count<5;count++) { printf("%hd/n",rand1()); } printf("please enter next seed (q t0 quit):/n"); } printf("Done!"); getch(); return 0; } //diceroll //manydice.c多次丢骰子程序 #include<stdio.h> #include<stdlib.h> #include<time.h> #include"diceroll.h" int main(void) { int dice,roll; int sides; srand((unsigned int) time(0)); printf("Enter the number of sides per die.(0 to quit)/n"); while(scanf("%d",&sides)==1&&sides>0) { printf("How many dice?/n"); scanf("%d",&dice); roll=roll_n_dice(dice,sides); printf("You have rolled a %d using %d %d-sided dice./n", roll,dice,sides); printf("How many sides?Enter 0 to stop./n"); } printf("The rollm() function was called %d times./n", roll_count); printf("GOOD FORTUNE TO YOU/n"); getch(); return 0; } //diceroll.c骰子程序 #include"diceroll.h" #include<stdio.h> #include<stdlib.h>//为rand()函数提供类库 int roll_count=0;//外部链接 static int rollem(int sides)//这个文件的私有函数 { int roll; roll=rand()%sides+1; ++roll_count;//计数函数调用 return roll; } int roll_n_dice(int dice,int sides) { int d; int total=0; if(sides<2) { printf("Need at leasr 2 sides./n"); return -2; } if(dice<1) { printf("Need at least 1 die./n"); return -1; } for(d=0;d<dice;d++) total+=rollem(sides); return total; } //dicero.h extern int roll_count; int roll_n_dice(int dice,int sides);