2 qq 31609101 qq_31609101 于 2016.03.02 15:53 提问

C语言使用随机分布函数rand()%100;但是二维数组a[0][0]的值大于100,其他正常

#include
#include
#define M 5
#define N 4
void china(int a[][N],int b[M]);/*给二维数组随机分配数值,并求二维数组每行数值之和*/
void orange(int a[][N],int b[M]);/*将付好值得数组和求和打印出来*/

void main()
{int a[M][N],b[N];
china(a,b);
orange(a,b);
}

void china(int a[][N],int b[M])
{int i,j,ave;
for(i=0;i<M;i++)
{ ave=0;
for(j=0;j<N;j++)
{
a[i][j]=rand()%100;/*对数组随机分配数值*/
ave=ave+a[i][j];/*求每行数值的和*/
}
b[i]=ave;
}
}

void orange(int a[][N],int b[M])
{int i,j;
for(i=0;i<M;i++)
{for(j=0;j<N;j++)
{printf("%6d",a[i][j]);/*打印二维数组*/
}
printf("%6d\n",b[i]);/*打印每行数组之和*/

}

}

3个回答

caozhy
caozhy   Ds   Rxr 2016.03.02 21:17
已采纳
 int a[M][N],b[M];
你b定义成N,越界了,修改b[M]结果去修改a[0][0]了
YXTS122
YXTS122   2016.03.02 21:53

main()函数里的b[n]改为b[m]。。。。。。

caozhy
caozhy 回复YXTS122: 呵呵,说的我不好意思了。
2 年多之前 回复
YXTS122
YXTS122 不好意思,网络不好,没看到有人回答,重复回答了,当我什么都没回答,不要采纳我。
2 年多之前 回复
YXTS122
YXTS122 不好意思,网络不好,没注意到有人回答,所以重复回答了,当我什么也没回答就是了。。。
2 年多之前 回复
YXTS122
YXTS122   2016.03.02 19:15

srand(time(0));加上这一句试试

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
c语言生成 o~100随机数!
还在学习中,先贴上代码,等待以后自己解答,第二种为什么编译失败! #include #include #include #include #include #define BOOL int #define TRUE 1 #define FALSE 0 int main(void) { //正确的 /*  int chosen=0; int i
c++产生100以内的随机数
主要用到两个函数rand()和srand(). int GetRandomNumber() { int RandomNumber; srand((unsigned)time(NULL));//为rand()函数生成不同的随机种子 RandomNumber = rand()%100;//生成100以内的随机数 return RandomNumber; } 解释: (1)rand()
1----编程实现100以内两个随机整数的加法运算练习(rand函数)
问题描述: 编程实现100以内两个随机整数的加法运算练习 算法分析 首先考虑需要定义那些变量。因为是模拟加法a+b=c,所以需要定义a,b,c。 接着考虑数据的获取。随机整数可以通过标准库“stdlib.h”中的伪随机函数int rand()来产生,rand()函数每次产生一个0~32767之间的随机数。如果要产生一个0~99之间的随机数,可以用表达式rang%100(取余运算
C++中如何产生均匀分布的随机数
产生均匀分布的随机数:        上面例子产生的随机数会比较大,如果我们只想产生0到100的随机数。按照我们之前的做法是直接random()%100。这种做法是不好的。原因可以参见《Accelerated C++》的7.4.4节。         C++11也知道这一点,这就使得C++11的随机数更加复杂了。        我们平常说产生随机数,隐含是意思是产生均
srand()以及rand()函数用法(zz)
 srand()就是给rand()提供种子seed 如果srand每次输入的数值是一样的,那么每次运行产生的随机数也是一样的,srand(n)for(10)rand()也就是说,以一个固定的数值作为种子是一个缺点。 通常的做法是  以这样一句代码srand((unsigned) time(NULL));来取代,这样将使得种子为一个不固定的数, 这样产生的随机数就不会每次执行都
excel =rand() 随机生成数字或区间数字的函数使用
    日常工作中,有时候需要用到一些随机的数字,如果少的话手工可以录入,如果数量多,手工录入就会很麻烦,这时候,我们用rand函数便能轻松实现。rand函数的语法结构为:=Rand()rand函数没有参数,rand函数返回一个大于等于0小于1的随机数。既然是随机数,对于不同的单元格,每次计算工作表时,就会返回一个新的数值。若要生成整数,或者保留指定位数的小数,则使用round函数,如=round...
C语言——右下角
 File Name:T043.cpp 右下角 Time Limit: 3000ms, Memory Limit: 10000KB , Accepted: 3442, Total Submissions: 5301 Description 输出一个NxN(1≤N≤100)二维数组A右下角的元素(元素值不超过9)。 Input 第1行输
【Java每日一题01】使用java.lang.Math类,生成100个0到99之间的随机整数,找出它们之中的最大者和最小者,并统计大于50的整数个数
package test01; public class RandomNum { public static void main(String[] args) { int number[] = new int[100]; int record = 0; for (int i = 0; i < n
假设有一个rand(0,1)的0,1随机生成器,如何对于给定的(a,b),随机生成一个x, 其中 a <= x <= b
 Describe an implementation of the procedure RANDOM(a, b) that only makes calls to RANDOM(0, 1). What is the expected running time of your procedure, as a function of a and b?这是算法导论中随机算法部分的一道题,看似很简单
随机输入0-100成绩,统计成绩各分段的人数
统计成绩 输出分段