《C语言》中如何从文件读取矩阵?
2个回答
展开全部
#include <stdio.h>
#include <stdlib.h>
void main()
{
FILE *fin;
int j,i,m;
int **D;
if ( (fin = fopen("a.dat","r"))==NULL){
printf("can not open data file\n");
exit(0);
};
fscanf(fin,"%d",&m);
D = (int **) malloc(sizeof(int *) *m);
for (j=0;j<m;j++){
D[j] = (int *) malloc(sizeof(int) * m);
}
for (j=0;j<m;j++){
for (i=0;i<m;i++) {
if ( i<=j ) {D[j][i] = 0;} else fscanf(fin,"%1d",&D[j][i]);
}
}
fclose(fin);
for (j=0;j<m;j++){
for (i=0;i<m;i++) {
if ( i<j ) D[j][i]=D[i][j];
}
}
printf("n=%d\n",m);
for (j=0;j<m;j++){
for (i=0;i<m;i++) printf("%d ",D[j][i]);
printf("\n");
}
}
==============
n=5
0 1 0 0 1
1 0 2 0 0
0 2 0 1 0
0 0 1 0 2
1 0 0 2 0
#include <stdlib.h>
void main()
{
FILE *fin;
int j,i,m;
int **D;
if ( (fin = fopen("a.dat","r"))==NULL){
printf("can not open data file\n");
exit(0);
};
fscanf(fin,"%d",&m);
D = (int **) malloc(sizeof(int *) *m);
for (j=0;j<m;j++){
D[j] = (int *) malloc(sizeof(int) * m);
}
for (j=0;j<m;j++){
for (i=0;i<m;i++) {
if ( i<=j ) {D[j][i] = 0;} else fscanf(fin,"%1d",&D[j][i]);
}
}
fclose(fin);
for (j=0;j<m;j++){
for (i=0;i<m;i++) {
if ( i<j ) D[j][i]=D[i][j];
}
}
printf("n=%d\n",m);
for (j=0;j<m;j++){
for (i=0;i<m;i++) printf("%d ",D[j][i]);
printf("\n");
}
}
==============
n=5
0 1 0 0 1
1 0 2 0 0
0 2 0 1 0
0 0 1 0 2
1 0 0 2 0
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
确定文件名。
打开文件,使用fopen函数。fopen("文件名", “r”)。
根据约定的文件格式,包括文件中矩阵规模,元素的类型,以及元素分隔的符号,采用fscanf函数循环读入矩阵。
判断文件是否读完,如未读完,重复第三步直到读完。
关闭文件。
C语言的优点:
简洁紧凑、灵活方便,C语言一共只有32个关键字,9种控制语句,程序书写自由,主要用小写字母表示。它把高级语言的基本结构和语句与低级语言的实用性结合起来。 C 语言可以象汇编语言一样对位、字节和地址进行操作, 而这三者是计算机最基本的工作单元。
运算符丰富 ,C的运算符包含的范围很广泛,共有种34个运算符。C语言把括号、赋值、强制类型转换等都作为运算符处理。从而使C的运算类型极其丰富表达式类型多样化,灵活使用各种运算符可以实现在其它高级语言中难以实现的运算。
数据结构丰富 ,C的数据类型有:整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等。能用来实现各种复杂的数据类型的运算。并引入了指针概念,使程序效率更高。另外C语言具有强大的图形功能, 支持多种显示器和驱动器。且计算功能、逻辑判断功能强大。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询