C语言怎么定义一个二维数组可以使每行的输入长度任意

一道实验题
用二维数组保存用户输入的字符串,终止输入将输入中最长的字符串及其长度输出
请给个代码,要不看不懂啊

1、使用动态数组可以实现变长度数组。建动态数组,其他就像数组一样使用就行了。


2、例程:

int row=0;    //函数
int col=0;    //列数
int i;
int ** arr=NULL;     //下面假设存储的数据类型为int
printf(“请输入二维数组的行数和列数:”);
scanf("%d%d",&row,&col);
//要不要加判断输入是否合法你自己决定,这里就不加,
arr = (int **)malloc(sizeof(int*)*row);       //arr在这里可以看出成数组,数组的每个成员都是指向int类型的指针,这样每个指针指向的代表一行,共row行   
for(i=0; i<row; i++)            //为每行申请空间
{
    arr[i]=(int*)malloc(sizeof(int)*col);       //每一行有col列
}

之后就可以用a[i][j]的形式访问二维数组了

温馨提示:内容为网友见解,仅供参考
第1个回答  2010-12-21
#include <stdio.h>

#define LIN 5
#define COL 100

int main()
{
char str[LIN][COL];
int i, j, len[LIN], maxi, max;
for(i=0;i<LIN;i++)
len[i]=0;
for(i=0;i<LIN;i++)
{
for(j=0;j<COL;j++)
{
str[i][j]=getchar();
len[i]++;
if(str[i][j]=='\n')
{
str[i][j]='\0';
break;
}
}
}
maxi=0;
max=len[0];
for(i=1;i<LIN;i++)
{
if(len[i]>max)
{
maxi=i;
max=len[i];
}
}
cout<<"max line is line "<<maxi<<" : "<<str[maxi]<<endl;
}本回答被提问者采纳
第2个回答  2010-12-21
定义数组时必须有长度,只要把长度定义大点,用“\ 0”控制输出。

C语言怎么定义一个二维数组可以使每行的输入长度任意
1、使用动态数组可以实现变长度数组。建动态数组,其他就像数组一样使用就行了。2、例程:int row=0; \/\/函数int col=0; \/\/列数int i;int ** arr=NULL; \/\/下面假设存储的数据类型为intprintf(“请输入二维数组的行数和列数:”);scanf("%d%d",&row,&col);\/\/要不要加判断输入...

C语言中如何定义一个二维数组,数组长度由输入值确定?
datatype **dta=na(3,2); \/*创建一个3行2列的datatype数组*\/ int i,j;if (!dta) { \/*如果创建失败,则输出错误信息并结束程序*\/ fprintf(stderr,"MEMORY ERROR\\n");return -1;} else { for (i=0; i<3; i++) { \/*使用刚才创建的二维数组*\/ for (j=0; j<2; j++...

C语言如何定义一个N行N列的二维数组任意输入数据
我可以肯定的告诉你,不可能在程序运行的时候决定一个二维数组的大小,因为数组的大小是在编译时就决定了的,不是在运行时,如果是一维的通过某些方法还可以办到,二维的就不可能了,拿一维的来说:polly@nowthen:~$ cat test.c#include <stdio.h>#include <stdlib.h>struct test { int num; ...

如何用c语言实现二维数组?
使用 C 语言实现二维数组可以通过以下步骤:1. 声明一个二维数组变量:首先,需要声明一个二维数组变量来存储数据。声明二维数组需要指定数组的行数和列数,并可以给数组命名。2. 初始化二维数组:可以选择在声明二维数组时初始化,或者在后续的代码中初始化数组。可以使用循环结构来遍历数组的每个元素,并...

c语言:怎样用malloc函数动态分配二维数组,使之可输入数组的行数和每行...
这个是可以的,但是和其他网友说的一样,内存是线性的,当你在语言中分配一个多维数组的时候,编译器其实也是分配线性内存的,但是我们可以通过模拟来实现类似数组的操作,下面演示一个分配以及操作数组的实例(列数要固定,这里假设列数为4):int _tmain(int argc, _TCHAR* argv[]){ int (*p)[4...

c语言定义了一个二维字符数组怎么赋值,要求输入n表示n行,然后每行输入...
然后用strcpy()函数进行赋值。我的编译器没有VLA的功能,所以我定义了4行,有这个功能的话把4改成n就可以 include<stdio.h> include<string.h> int main(void){ int i;char string[4][100];char str[100];for(i=0;i<4;i++){ gets(str);strcpy(string[i],str);} for(i=0;i<4;i...

C语言怎么宏定义一个2维数组
1、例如:define M 80 define N 100 define ARRAY(A,M,N) A[M][N]char ARRAY;2、宏定义是C提供的三种预处理功能的其中一种,这三种预处理包括:宏定义、文件包含、条件编译 宏定义又称为宏代换、宏替换,简称“宏”。格式:define 标识符 字符串 其中的标识符就是所谓的符号常量,也称为“...

C语言实现一个可变长的二维数组
printf("请输入第%d行元素的个数:",i);scanf("%d",&n[i-1]);printf("\\n");int q=n[i-1];p[i-1]=new int[q];for (int j=0;j<n[i-1];j++){ p[i-1][j]=1;} } for (int x=0;x<a;x++){ for (int y=0;y<n[x];y++){ printf("%d",p[x][y]);} pr...

如何使用C语言动态创建一个二维数组?
2、接下来,接收用户输入的行列值。3、为了给这个 row 行、col 列的数组分配存储空间,我们首先为行指针分配空间。4、接下来,我们为每行分配空间。5、二维数组创建完成。现在就可以用这个二数组接收输入了。6、我们将输入的值输出到屏幕上,以验证是否正确。7、我们动态创建了一个 2*3 的数组,数组...

C语言怎么用二维数组输入行数不确定的字符串
首先】是多行字符串的输入和保存。可以:开设一个字符串数组如下,其中N定义最多可记录多少行,M定义每行可保存多少个字符,改变#define定义可以调整这两个数据 define N 1024 \/\/最多1024行 define M 256 \/\/每行最多存储255个字符 char input[N][M];实际输入一行可以用gets函数实现,判断gets...

相似回答