复习C语言随笔 四
1. 传参
#include<stdio.h>
int jisuandaxiao(int a[]){
return sizeof(a)/sizeof(a[0]);
}
int main(){
int a[6] = {0,1,2,3,4,5};
printf("%d", jisuandaxiao(a));
return 0;
}
运行结果如下:
本例中本想求出数组a的长度,应该为6。但是输出结果为2,原因在于在形参中的a是数组a的首地址,其长度为8个字节(64位),a[0]的长度为4个字节,所以返回2。
所以,在通常的一些需要使用数组或指针作为形参的函数中,有‘偏移量’这个参数。其意义便在于此。
2.随机数
rand() 对于给定的种子seed, rand()会反复产生特定的随机序列
srand(unsigned int time()) 为 rand() 设置起点,只设一个就可以
time_t time() 返回时间 执行该函数的时刻与1970-1-1 0:0:0 的时间差
eg:输出1000个100以内的随机数
srand((unsigned int)time(NULL));
for(i = 0; i<1000; i++){
num = rand()%100+1;
printf("%d",num);
}
一个利用随机数函数的典型程序: 猜数字游戏
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
int main(){
int a;
int b;
int c=1;
int count=0;
srand(time(NULL));
printf("*************游戏开始***************\n");
while(c==1 || scanf("%d",&c))
{
if(c==1)
{
count++;
a = rand()%100;
printf("请猜这个数字(100以内)\n");
while(!NULL){
scanf("%d",&b);
if(b>a) printf("猜大了\n");
else if (b<a) printf("猜小了\n");
else
{
printf("真棒,猜对了!!\n");
break;
}
}
c=0;
}
else break;
printf("输入1开始游戏,输入其他结束游戏\n");
}
printf("共进行%d次游戏",count);
return 0;
}