11.2

随机生成五个乱码

  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<time.h>
  4. int main(){
  5. srand(time(0));
  6. int i; //根据时间生成的数
  7. for(i=1;i<=5;i++){
  8. printf("%d\n",rand());
  9. }
  10. return 0;
  11. }

rand()

srand( )

time(0)

掷骰子

  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<time.h>
  4. int main(){
  5. srand(time(0));
  6. int i;
  7. for(i=1;i<=5;i++){
  8. int dice;
  9. do { //掷骰子
  10. dice = rand();
  11. }
  12. while(dice<1||dice>6);
  13. printf("%d\n",dice);
  14. }
  15. return 0;
  16. }

系统规定数字的猜数字游戏100内

  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<time.h>
  4. int main()
  5. {
  6. srand(time(0));
  7. int ans = rand()%100+1;
  8. int guess;
  9. do{
  10. printf("请输入一个数:");
  11. scanf("%d",&guess);
  12. if(guess>ans){
  13. printf("too large");
  14. } else if(guess<ans){
  15. printf("too small");
  16. }else
  17. printf("correct");
  18. }while(guess != ans);
  19. return 0;
  20. }

全域变数,静态区域变数,静态全域变数

不能用函数呼叫定义全域变数

不能用全域变数定义另一个全域变数

  1. #include<stdio.h>
  2. static unsigned next = 1; //在本文档内可使用
  3. int count(void){
  4. static int k= 0; //在声明前加static表明为静态区域变数,可以防止误用
  5. k++;
  6. return k;
  7. }
  8. int main(){
  9. for(int i = 1;i<=5;i++){
  10. printf("%d\n",count());
  11. }
  12. return 0; //输出为1 2 3 4 5
  13. }

整数的溢位

<limits.h>头文件中的 INT_MAX INT_MIN UINT_MAX 类似形式来求最大值

线性同除法

  1. #include<stdio.h>
  2. int main(){
  3. unsigned int next = 1;
  4. for(int i = 1;i<= 5;i++){
  5. next = next *1103515245+12345;(利用无符号的限制来是系统自己除以一个数)
  6. print("%u\n",next);
  7. }
  8. return 0;
  9. }

X(n+1)=(X(n)*1103515245+12345)%(UINT_MAX+1)

函式递回