一维的可以理解为行形式
二维的是行列式
三维的可以这样理解
每一个[]代表一个方向 当然三维以上的数组不太容易用实体模式想像 但大概方式是一样的
搞清以上几项的地址关系
组数基本我们可以按行读来理解[具体对应于代码]
即 1维 从左向右读
void Swap(int *a, int *b)
{
int tmp = *a;
*a = *b;
*b = tmp;
}
void Selectsort(int *arr, int sz)
{for (int end=sz-1; end=0; end--)
int max = end;
int i;
for ( i = 0; i = end; i++)//选出最大下标
if (arr[i] arr[max])
max = i;
Swap(arr, arr[max]);
int main()
int sz = sizeof(arr) / sizeof(arr[0]);
for (int i = 0; i = sz - 1; i++)
scanf("%d", arr[i]);
Selectsort(arr, sz);
printf("%d ", arr[i]);
system("pause");
return 0;
扩展资料:
printf函数使用注意事项
①.、域宽
%d:按整型数据的实际长度输出.
如果想输出指定宽度可以指定域宽,%md--gt;m域宽,打印出来以后,在控制台上,显示m位;
如果要打印的数的位数如果超过我们设定m则原样输出;
如果要打印的数的位数如果小于设定的位数,则补空白,具体如下:
如果m为正数,则左对齐(左侧补空白);
如果m为负数,则右对齐(右侧补空白).
如果想输出字符"%",则应该在"格式控制"字符串中用连续两个%表示.
同意一楼方法,讲二维数组存到一维数组中,然后用qsort排序,再存到二维数组当中
代码敲了一下,发现C语言快忘光了
#include stdio.h
#include stdlib.h
int comp(const void *a , const void *b){
return *(int *)b - *(int *)a; //这是b-a,如果是a-b就是从小到大排序
int main(){
int n;
int i , j , k;
scanf("%d",a[i][j]);
b[k++] = a[i][j]; // k ++别看漏
a[i][j] = b[k++];
printf("%d",a[i][j]);
qsort看不懂再给你个百科的链接
自己再敲一次吧,代码是敲出来的,多练练
ps:那个int n是多余的,你的代码测试了,可以
在C语言中,二维数组按行存储,对每一行排序很方便,可以把每一行当成一个一维数组,使用排序函数直接进行排序. 然而对...
无论是多少维的数组,机内都是一维的,以行优先存放.所以直接降为一维数组排序最方便省事.下面以二维数组为例写出代码——
#include?"stdio.h"
int?main(int?argc,char?*argv[]){
printf("Before?ordering?is?as?follows:\n");
printf("\n");
if(p[k]p[j])
k=j;
if(k!=i)
j=p[k],p[k]=p[i],p[i]=j;
printf("Sorted?as?follows:\n");
return?0;
运行结果:
第一处填空,是个三重循环:
for(i=0;iN;i++)
for(j=0;jN+1;j++)
for(k=j+1;kN;k++)
这里,i是数组的行标号,第一重循环表示依次对N行数组分别排序
然后j和k是列下标,一个二重循环排序的过程,其原理如下:
就是依次找出最小的放在最前,找出第二小的,放第二个位置......
依次这样循环到最后,就能完成排序
这样就能实现偶行从小到大排序,奇行从大到小排序咯
=============================================
outarr(aa);
这样是把数组的地址当作实参传递过去,而,形参是这样
void outarr(int a[N][N])
这说明白形参是接受的数组的值啊?
这是怎么回事?
这里不是按地址传递,定义void outarr(int a[N][N])表示的是按数组整个传递,并且数组做为参数传递有个特点,就是一定是按引用传递
知道什么是按引用传递吗?简单理解,就是在函数里面,对该参数的修改,会影响主函数中该参数的值
====================================================
在主函数中
数组的定义是这样的
int aa[N][N]
表示未知行和列
但初始化又是这样
这样能算对吗?
这里数组的定义不是未知行和列
我们语庋规则规定,数组定义,必须用明确定义行列的数目
其实这里的N不是一个变量,而已经变成一个数字了,看上面的定义:
=====================================================
第一个被调函数
void sort(int a[][N])
它里面省略的行,我知道,二维数组可以这么写,但,在这个被调函数中,要使用到行数啊,它不给出,后面,怎么计算呢?
这个程序中,行数N在前面已经定义了