C语言中如何取二维数组的一行(一列)?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言中如何取二维数组的一行(一列)?相关的知识,希望对你有一定的参考价值。
就像在Matlab中A(:,3)表示A矩阵的第三行一样,C语言中有没有类似的表示方法?
没有简单的函数或表示方法,只能使用循环输出或者使用数组中的值。
#include <stdio.h>
int main()
int a[3][3]=1,2,3,4,5,6,7,8,9;
int b[3],n=3;
printf("输出第三行:\\n ");
for(int i=0;i<3;i++)
b[i]=a[n-1][i];printf("%d ",b[i]);
数组b中存储的就是第n行的数据。
扩展资料:
数组的使用规则:
1.可以只给部分元素赋初值。当 中值的个数少于元素个数时,只给前面部分元素赋值。例如:static int a[10]=0,1,2,3,4;表示只给a[0]~a[4]5个元素赋值,而后5个元素自动赋0值。
2.只能给元素逐个赋值,不能给数组整体赋值。例如给十个元素全部赋1值,只能写为:static int a[10]=1,1,1,1,1,1,1,1,1,1;而不能写为:static int a[10]=1;请注意:在C、C#语言中是这样,但并非在所有涉及数组的地方都这样,数据库是从1开始。
3.如不给可初始化的数组赋初值,则全部元素均为0值。
4.如给全部元素赋值,则在数组说明中, 可以不给出数组元素的个数。例如:static int a[5]=1,2,3,4,5;可写为:static int a[]=1,2,3,4,5;动态赋值可以在程序执行过程中,对数组作动态赋值。这时可用循环语句配合scanf函数逐个对数组元素赋值。
参考资料:
百度百科-数组
C语言中的数组实质是指针,比如一个数组是char c[32],那么你就可以将它看做是一个用malloc函数进行过分配内存的char *c,数组是指针的特殊形式。
而多维数组的实质是指向指针的指针,比如一个多维数组是char c[3][32],可以将它看做进行过分配内存的char **c。
知道了这点,就知道如何得到某一行了。
int main(int argc, const char * argv[])//声明一个二维数组
char c [3][32];
//分别输入三行数据
sprintf(c[0], "第一行");
sprintf(c[1], "第二行");
sprintf(c[2], "第三行");
//打印
for (int a=0; a<=2; a++)
//用”c[a]“就可以表示第a行的字符串数组
printf("%s\\n",c[a]);
return 0;
输出得到结果:
第一行
第二行
第三行
追问谢谢回答!能不能举个数字的例子,比如二维数组A=1,2,3,4;如何把A的第一行给B,使得B=1,2。谢谢!
追答老老实实的用:
int A[2][2] = 1,2,3,4;int B[2];
for (int a=0; a<=1; a++)
B[a] = A[0][a];
来将A的第一行给B吧。或者试实际情况,自己写一个用来处理这种情况的函数。
因为字符数组用得是最多的,C语言提供了许多用于处理字符串的函数,比如strlen、strcpy、sprintf等等,其他类型就需要自己努力了。
追问好吧,看来只能这样了。谢谢!
本回答被提问者采纳 参考技术B1、用fgets函数可以读取文件中某行的数据,某列数据就必须一个一个读入每行的第几个字符,再存入到一个字符串当中。
2、例程:
#include<string.h>
void main()
char a[100],b[100],c[100];
int i=3,j=4,k=0; //第三行,第四列
FILE *fp = fopen("data.txt","r");
while(fgets(c,100,fp)) //读入每行数据
i--;
if(i==0) strcpy(a,c); //读到第三行数据
b[k++]=c[j-1]; //把每行的那列字符拷到b中
b[k]=0;
printf("第%d行数据:%s\\n",i,a);
printf("第%d列数据:%s\\n",j,b);
fclose(fp);
参考技术C C语言中的数组实质是指针,比如一个数组是char c[32],那么你就可以将它看做是一个用malloc函数进行过分配内存的char *c,数组是指针的特殊形式。
而多维数组的实质是指向指针的指针,比如一个多维数组是char c[3][32],可以将它看做进行过分配内存的char **c。
知道了这点,就知道如何得到某一行了。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int main(int argc, const char * argv[])
//声明一个二维数组
char c [3][32];
//分别输入三行数据
sprintf(c[0], "第一行");
sprintf(c[1], "第二行");
sprintf(c[2], "第三行");
//打印
for (int a=0; a<=2; a++)
//用”c[a]“就可以表示第a行的字符串数组
printf("%s\n",c[a]);
return 0;
输出得到结果:
第一行
第二行
第三行
二维数组中的查找
题目描述
解法
取左下角或右上角,例如取右上角,与目标数对比,如果大于目标数横坐标减一,如果小于纵坐标加一。
以上是关于C语言中如何取二维数组的一行(一列)?的主要内容,如果未能解决你的问题,请参考以下文章