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

问题描述

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("%6dn",b[i]);/*打印每行数组之和*/

}

}

解决方案

 int a[M][N],b[M];
你b定义成N,越界了,修改b[M]结果去修改a[0][0]了

解决方案二:

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

解决方案三:

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

时间: 2024-11-03 00:16:53

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

c语言中怎么把一个大小不确定的二维数组当作参数传入函数中

问题描述 c语言中怎么把一个大小不确定的二维数组当作参数传入函数中 c语言中怎么把一个大小不确定的二维数组当作参数传入函数中,取大神,取大神,取大神 解决方案 用VC++新建一个程序,默认生成的main函数定义如下 int mian(int argc, char* args[]) 这就是一个例子. 解决方案二: 一个表示长度的参数,一个指向二维数组的指针 解决方案三: fun(args[][],int rows,int cols) 解决方案四: void Func(int array[][10]

C语言及程序设计提高例程-35 使用指针操作二维数组

贺老师教学链接  C语言及程序设计提高 本课讲解 使用指向二维数组元素的指针 #include <stdio.h> int main( ) { int a[3][4]= {1,3,5,7,9,11,13,15,17,19,21,23}; int *p; for(p=a[0]; p<a[0]+12; p++) { printf("%3d ",*p); } return 0; } 使用指向一维数组的指针 #include <stdio.h> int main(

c语言-怎么随机给二维数组赋值,指针表示

问题描述 怎么随机给二维数组赋值,指针表示 #define M 25 #define N 25 int array[M][N]; int i, j; void Rand(int *p, int n) { p = &array[0][0]; for(i = 0;i<n;i++ { *(p + i) = rand()%100; } } 这是一维指针,要求是二维,怎么破 解决方案 #include #include //输出数组中的数字 void Output(int *a, int len);

c语言-java的二维数组和C语言二维数组的储存结构有什么区别?

问题描述 java的二维数组和C语言二维数组的储存结构有什么区别? java的二维数组和C语言二维数组的储存结构有什么区别?,数据结构有什么区别吗?有人说java的数组在内存中存储不是连续的,, 解决方案 java二维数组的存储在内存中不一定连续.二维数组是一维的一维,也就是树形结构. 解决方案二: 个人认为是连续的,要支持随机访问,当然如果内存真的不是连续的,那就是vm的事情了 解决方案三: C语言是连续的,Java应该也是连续的吧,这个问题还真没深究过.

《C语言及程序设计》实践项目——二维数组与指针

返回:贺老师课程教学链接 [项目1-二维数组当函数参数]定义一个函数来完成对参数数组中元素的求和工作,函数声明如下: int sum(int array[ ][4],int m,int n); //该函数完成对array数组中的前m行和n列元素求和 在以下程序的基础上,完成对sum函数的定义. #include <stdio.h> int sum(int array[ ][4],int m,int n);//该函数完成对array数组中的前m行和n列元素求和 int main() { int

C语言中实现动态分配二维数组

在C语言中动态的一维数组是通过malloc动态分配空间来实现的,动态的二维数组也可以通过malloc动态分配空间来实现. 实际上,C语言中没有二维数组,至少对二维数组没有直接的支持,取而代之的是"数组的数组",二维数组可以看成是由指向数组的指针构成的数组.对于一个二维数组p[i][j],编译器通过公式*(*(p+i)+j)求出数组元素的值: 1.p+i 计算行指针. 2.*(P+i) 具体的行,是一个指针,指向该行首元素地址. 3.*(P+i)+j 得到具体元素的地址. 4.*(*(p

C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com

原文:C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表本文由 arthinking 发表于315 天前 ⁄ itzhai.com原创文章 ⁄ C语言 ⁄ 评论数 3 ⁄ 被围观 1,775 views+   指针数组: 在一个数组中,如果它的元素全部都是指针

c语言-C语言二维数组下标越界--却能给越界的下标赋值 和输出

问题描述 C语言二维数组下标越界--却能给越界的下标赋值 和输出 编译器:dev-c++ int iArray[3][4]; iArray[3][4]=1000; printf("%d",iArray[3][4]); 改变 iArray[3][4]的值为1000 输出的结果仍然为1000 请问这个是什么原因呢? 我是直接给越界的下标进行了赋值 以前以为只要是下标越界了 输出的都是无意义的数字 其实那是因为没有给越界的下标赋值 对吗 越界的下标为什么还能正常使用呀 解决方案 使用越界的数

C语言,寻找二维数组鞍点,代码个人测试正确, 但是wrong answer, 求大神指点

问题描述 C语言,寻找二维数组鞍点,代码个人测试正确, 但是wrong answer, 求大神指点 Description 给定一个海拔平面图,相当于一个二维数组,数组的每个元素表示一个点的海拔高度.请判断该图中是否存在鞍点,如果存在,则输出该鞍点的位置,即行.列坐标. 本题规定鞍点的定义为:该点的值在它所在的那行中是唯一最大的,且该点的值在它所在的那列中是唯一最小的. Input 输入有多个测试用例,如果把每个测试用例看作一个"块",那么,在一个"块"中: 第一行