汉扬编程 C语言入门 C语言怎样对二维数组中每个元素进行选择排序?

C语言怎样对二维数组中每个元素进行选择排序?

参考代码:

#include <stdio.h>

#include \”stdlib.h\”

#include \”time.h\”

int main(int argc,char *argv[]){

int a[5][8],i,j,k,t,*p;

printf(\”排序前:\\n\”);

srand((unsigned)time(NULL));

for(i=0;i<5;i++){//为二维数组赋值

for(j=0;j<8;printf(\”%3d\”,a[i][j++]=rand()%100));

printf(\”\\n\”);

}

printf(\”排序后:\\n\”);

p=(int *)a;//降为一维,这样排序简单

for(t=i=0;i<40;i++){//选择法排序

for(k=i,j=k+1;j<40;j++)

if(p[k]>p[j])

k=j;

if(k!=i)

j=p[k],p[k]=p[i],p[i]=j;

printf(++t%8 ? \”%3d\” : \”%3d\\n\”,p[i]);

}

return 0;

}

C语言如何动态分配二维数组?

使用malloc函数,先分配第一维的大小,然后再循环分配每一维的大小。示例代码,分配3行4列二维数组:#include <stdio.h>#include <malloc.h>int main(){ int **a; int i, j; a = (int**)malloc(sizeof(int*)*3);//为二维数组分配3行 for (i = 0; i < 3; ++i){//为每列分配4个大小空间 a[i] = (int*)malloc(sizeof(int)*4); } //初始化 for (i = 0; i < 3; ++i){ for (j = 0; j < 4; ++j){ a[i][j] = i+j; } } //输出测试 for (i = 0; i < 3; ++i){ for (j = 0; j < 4; ++j){ printf (\”%d \”, a[i][j]); } printf (\”\\n\”); } //释放动态开辟的空间 for (i = 0; i < 3; ++i){ free(a[i]); } free(a); return 0;}/*输出:0 1 2 31 2 3 42 3 4 5*/

本文来自网络,不代表汉扬编程立场,转载请注明出处:http://www.hyzlch.com/cjia/6758.html

C语言学习篇(20)—–二维数组

你见过“最美”的C语言代码是什么?

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

返回顶部