当前位置:首页 » 编程语言 » c语言中二维数组省略行数怎么写
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言中二维数组省略行数怎么写

发布时间: 2023-02-08 19:01:26

1. 在int b[][3]={{1},{3,2},{4,5,6},{0}};中,a[2][2]的值是

二维数组省略行数排列,结合题目,可写为下列形式
{{1}{ }{ }
{3}{2}{ }
{4}{5}{6}
{0}{ }{ }
{ }{ }{ }
.........
}
确定列数,题目对每行部分元素定义,未定义元素因为要满足列数,空位用0代替
a[2][2]即为第三行第三列元素,答案为6
同理可知a[1][1]为2,a[0][2]为空位,看成0

2. c语言中 二维数组要怎么输入怎么换行啊

scanf那行里的a[i][j]要写成&a[i][j],输入就正常的输入就行了,其实scanf读入数字的时候,数字可以用空格、回车或者TAB间隔,比如说一个2x2的数组,你输入
10 11
12 13
或者输入10 11 12 13都是可以的。

3. C语言程序设计(12)

第一处填空,是个三重循环:
for(i=0;i<N;i++)
for(j=0;j<N+1;j++)
for(k=j+1;k<N;k++)
这里,i是数组的行标号,第一重循环表示依次对N行数组分别排序
然后j和k是列下标,一个二重循环排序的过程,其原理如下:
比如2 3 5 1 0 按从小到大排序
首先,j=0 k=1~4,就是数字2分别与3 5 1 0比较,把小的放到2的位置来
一轮之后,就变成 0 3 5 2 1
第二轮,j=1 k=2~4 ,就是数字3分别与5 2 1比较,把最小的放到3的位置
就是依次找出最小的放在最前,找出第二小的,放第二个位置……
依次这样循环到最后,就能完成排序

第二个填空,是要完成“第0行从小到大排序,第1行从大到小排序,第2行从小到大排序,第3行从大到小排序”这样的功能,这样填:
if(i%2==1?a[i][j]<a[i][k]:a[i][j]>a[i][k])
表示,如果i%2==1(即i是奇数行标),则采用a[i][j]<a[i][k]这个判断条件,否则就采用a[i][j]>a[i][k]这个判断条件
这样就能实现偶行从小到大排序,奇行从大到小排序咯

=============================================
1
outarr(aa);
这样是把数组的地址当作实参传递过去,而,形参是这样
void outarr(int a[N][N])
这说明白形参是接受的数组的值啊???
这是怎么回事?

这里不是按地址传递,定义void outarr(int a[N][N])表示的是按数组整个传递,并且数组做为参数传递有个特点,就是一定是按引用传递
知道什么是按引用传递吗?简单理解,就是在函数里面,对该参数的修改,会影响主函数中该参数的值

====================================================
2
在主函数中
数组的定义是这样的
int aa[N][N]
表示未知行和列
但初始化又是这样
int aa[N][N]={{2,3,4,1},{8,6,5,7},{11,12,10,9},{15,14,16,13}};
这样能算对吗?

这里数组的定义不是未知行和列
我们语庋规则规定,数组定义,必须用明确定义行列的数目
其实这里的N不是一个变量,而已经变成一个数字了,看上面的定义:
#define N 4
这一句定义,等于告诉编译器,每逢碰到N,就把它换成4的意思
那么其实数组定义就是int aa[4][4]

=====================================================
3
第一个被调函数
void sort(int a[][N])
它里面省略的行,我知道,二维数组可以这么写,但,在这个被调函数中,要使用到行数啊,它不给出,后面,怎么计算呢?

这个程序中,行数N在前面已经定义了
在整个程序的过程中,N不是一个变量,而是表示数字4!!