c语言中怎样实现对二维数组元素进行赋值并输出。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言中怎样实现对二维数组元素进行赋值并输出。相关的知识,希望对你有一定的参考价值。
参考技术A可以按照下面步骤进行定义二维数组并输出:
1 定义二维指针。
2 确定数组维数,即行数和列数。
3 申请行数个一维指针大小空间,并赋值给二维指针。
4 对于每个一维指,申请列数个元素的空间,并赋值给对应的一维指针。
5 输入或赋值数据。
6 使用双重循环,逐个范围存储单元并输出。
7 逐个释放一维指针上的内存。
8 释放二维指针上的内存。
以整型二维数组为例:
下面的代码,实现先输入二维数组的行数m和列数n,并再输入m*n个整型数据存到动态二维数组中。最后输出所有二维数组的元素值。
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;
追问
能帮我看下我的哪里错了吗
printf(++t%8 ? "%3d" : "%3d\n",p[i])这句有点看不懂
参考技术A 1)核心思想是每行按顺序排列好,假定从小到大,然后,每列从小到大排序2)假设数组为a[i_max][j_max]
核心代码
for(i=0;i<i_max;i++)
for(j=0;j<j_max;j++)
for(k=j+1;k<j_max-1;k++)
if(a[i][k]<a[i][j])
t=a[i][j];
a[i][j]=a[i][k];
a[i][k]=t;
for(j=0;j<j_max;j++)
for(i=0;i<i_max;i++)
for(k=i+1;k<i_max-1;k++)
if(a[k][j]<a[i][j])
t=a[i][j];
a[i][j]=a[k][j];
a[k][j]=t;
望采纳追问
这方法不对啊,比如说
你可以按算法走一遍,不是你给的那个
追问哦
你不是说先排列再排行吗
追答先把每行排好,再把每列排好
追问运行结果
你帮我看下我自己写的有什么错误行吗
追答把这段程序的结果贴给我吧
一定是算法错了,你再看看吧
追问嗯
追答1)核心思想是每行按顺序排列好,假定从小到大,然后,每列从小到大排序
2)假设数组为a[i_max][j_max]
核心代码
for(i=0;i<i_max;i++)
for(j=0;j<j_max-1;j++)
for(k=j+1;k<j_max;k++)
if(a[i][k]<a[i][j])
t=a[i][j];
a[i][j]=a[i][k];
a[i][k]=t;
for(j=0;j<j_max;j++)
for(i=0;i<i_max-1;i++)
for(k=i+1;k<i_max;k++)
if(a[k][j]<a[i][j])
t=a[i][j];
a[i][j]=a[k][j];
a[k][j]=t;
改过了,应该能用,希望能帮到你:-)
太感谢了
追答不用谢:-)
以上是关于c语言中怎样实现对二维数组元素进行赋值并输出。的主要内容,如果未能解决你的问题,请参考以下文章