C语言中的二维数组的赋值,输入输出怎么用
代码,实现先输入二维数组的行数m和列数n,并再输入m*n个整型数据存到动态二维数组中。最后输出所有二维数组的元素值。
int main()
{
int**p;//定义二维指针。
int m,n;//行数和列数。
int i,j;
scanf("%d%d",&m,&n);//输入行数和列数。
if(m<=0||n<=0)return-1;//行数或列数非法。
p=(int**)malloc(sizeof(int*)*m);//申请一组一维指针空间。
for(i=0;i<m;i++)
p<i>=(int*)malloc(sizeof(int)*n);//对于每个一维指针,申请一行数据的空间。
for(i=0;i<m;i++)
for(j=0;j<n;j++)
scanf("%d",&p<i>[j]);//输入第i行第j列的数据。其中&p<i>[j]也可以写作p<i>+j或者是*(p+i)+j.功能相同。
printf("输入的数组为%d行%d列:\n",m,n);
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)//这个循环可以输出一行元素。
printf("%d",p<i>[j]);//输出i行j列的元素。
printf("\n");//每行输入结束加换行符。
}
//释放内存
for(i=0;i<m;i++)
free(p<i>);
free(p);
return 0;
}
扩展资料:
函数:free
功能:与malloc()函数配对使用,释放malloc函数申请的动态内存。(另:对于free(p)这句语句,如果p是NULL指针,那么free对p无论操作多少次都不会出问题。如果p不是NULL指针,那么free对p连续操作两次就会导致程序运行错误。)
用法;void free(void*ptr);
程序例:
C/C++代码如下:
#include<string.h>
#include<stdio.h>
#include<alloc.h>//or#include<malloc.h>
int main(void)
{
char*str;
/*allocate memory for string*/
str=(char*)malloc(10);
/*copy"Hello"to string*/
strcpy(str,"Hello");
/*display string*/
printf("String is%s\n",str);
/*free memory*/
free(str);
str=NULL;
return 0;
}
二维数组的赋值与输出,都需要对各个元素进行逐个输出,可以用双重for循环输出全部元素。
举例如下:
int a[2][4];
int i;
// 对二维数组a进行赋值
for(i=0; i<2; i++) // 行
for(j=0; j<4; j++) // 列
a[i][j] = i+j; // 对二维数组a进行赋值为行号与列号之和
// 输出二维数组a的各元素值
for(i=0; i<2; i++) // 行
{
for(j=0; j<4; j++) // 列
printf("%d ", a[i][j]; // 输出二维数组a的各元素值
printf("\n"); // 每输出一行就回车换行
}
如楼上给出的程序:
main()
{ int i,j,a[10][10];
for(i=0;i<10;i++)
for(j=0;j<10;j++)
scanf("%d",&a[i][j]);
for(i=0;i<10;i++)
{ for(j=0;j<10;j++)
printf("%d ",a[i][j]);
printf("\n"); }
}
用下标的方法逐个进行输入和输出操作;
{ int i,j,a[10][10];
for(i=0;i<10;i++)
for(j=0;j<10;j++)
scanf("%d",&a[i][j]);
for(i=0;i<10;i++)
{ for(j=0;j<10;j++)
printf("%d ",a[i][j]);
printf("\n"); }
}
2018-03-21
二维数组的赋值与输出,都需要对各个元素进行逐个输出,可以用双重for循环输出全部元素。
举例如下:
int a[2][4];int i;// 对二维数组a进行赋值for(i=0; i<2; i++) // 行 for(j=0; j<4; j++) // 列 a[i][j] = i+j; // 对二维数组a进行赋值为行号与列号之和 // 输出二维数组a的各元素值for(i=0; i<2; i++) // 行{ for(j=0; j<4; j++) // 列 printf("%d ", a[i][j]; // 输出二维数组a的各元素值 printf("\n"); // 每输出一行就回车换行}
第十二行括号缺少一半;