题目
编写程序随机产生 100 之内的整数并赋值给一个二维数组 a[3][4],并求所 有元素的和
解题方法
对初学者来说,最大的困惑应该是
“随机产生100之内的整数”,怎么产生
?
C语言有生成随机数的标准库函数(包含在头文件stdlib.h中),我们先来学习下:
int rand ( void );
功能:rand函数返回序列中的下一个伪随机数。取值范围是0到RAND_MAX。
再来看看RAND_MAX是多少:
int RAND_MAX;
该宏的值是一个整数常量,表示rand函数可以返回的最大值。
在GNU C库中,它是2147483647,这是可以用32位表示的最大有符号整数。
在其他库中,它可能低至32767(VC6.0中即是)。
所以,实际使用时,这样来产生一个随机数:
int num = rand();
但是你会发现一个问题,每次运行产生的数是一样的。还有另一个函数,可以解决这个问题:
void srand ( unsigned int seed);
要在每次运行程序时产生不同的伪随机序列,请先调用srand(time(0)),然后再调用rand()。
要产生100以内的随机整数,把rand()获得的数对100求余即可。
写代码时,包含头文件
stdlib.h
和
time.h
。rand()和sran()包含在stdlib.h中,函数time()包含在头文件time.h中。
# include
# include
# include
int main(){
int sum = 0, a[3][4];
srand(time(0));
for (int i = 0; i3; i++){
for (int j = 0; j 4; j++){
a[i][j] = rand() % 100;
printf("a[%d][%d] = %d\n", i, j, a[i][j]);
sum += a[i][j];
}
}
printf("\nSum = %d\n", sum);
return 0;
}
运行结果