C语言怎样输入一个行列可变矩阵 行列未定 任意矩阵 从键盘输入
发布网友
发布时间:2022-05-12 12:28
我来回答
共2个回答
热心网友
时间:2023-10-09 02:56
有清晰的二维数组最好了??
这是不可能实现的,只能用我的方法模拟出一个二维数组。
我的代码现在行和列就是键盘输入的了呀 scanf("%d%d",&m,&n);m和n就是行和列
至于键盘输入数组数据,把 *(p+m*i+j) = i*j;//可以实现对数据赋值 改成
scanf("%d",(p+m*i+j))即可。
相加你自己告别,两个循环就能搞定的问题。
你根据下面的描述自己添加头文件就行了。system("PAUSE");可以去掉不要。
原型:extern void *malloc(unsigned int num_bytes);
头文件:在TC2.0中可以用malloc.h或 alloc.h (注意:alloc.h 与 malloc.h 的内容是完全一致的),而在Visual C++6.0中可以用malloc.h或者stdlib.h。
用malloc来实现:
int m,n;
int i,j;
int *p;
scanf("%d%d",&m,&n);
p=(int *)malloc(sizeof(int)*m*n);
*(p+m*i+j)就相当于数组的i行j列的元素
for(i=0;i<m;i++)
for(j=0;j<n;j++)
*(p+m*i+j) = i*j;//可以实现对数据赋值
使用完释放free(p)
下面是我写的一个例子:
#include<stdio.h>
int main(void)
{
int m,n;
int i,j;
int *p;
scanf("%d%d",&m,&n);
p=(int *)malloc(sizeof(int)*m*n);
//*(p+m*i+j)就相当于数组的i行j列的元素
for(i=0;i<m;i++)
for(j=0;j<n;j++)
*(p+m*i+j) = i*j;//可以实现对数据赋值
for(i=0;i<m;i++)
for(j=0;j<n;j++)
printf("%d ",*(p+m*i+j));
free(p);
system("PAUSE");
return 0;
}
热心网友
时间:2023-10-09 02:57
循环getline到缓冲字符串
循环对缓冲字符串sscanf
读第一行时决定矩阵宽度
数据记录到动态申请的矩阵内存或者预定义大小有限的矩阵
直到返回失败
直到返回失败