c语言中怎样输入一个3*3的二维数组存储到文件中在文件中按顺序输出二维数组

例如:输入
1 5 9 7 4
3 5 4 8 9
1 7 5 6 2
在文件中输出
1 1 2 3 4
4 5 5 5 6
7 7 8 9 9

#include<stdio.h>
#include <time.h>
#define N 3 //N定义数组的大小
void ShellSort(int a[],int n)
//直接插入排序:对含有n个整数的数组a[]进行从小到大排序
{
    int i,j,t;
    for(i=1;i<n;i++)
        for(j=i-1;j>=0&&a[j]>a[j+1];j--)
        {
            t=a[j];
            a[j]=a[j+1];
            a[j+1]=t;
        }
}

int main()
{     
    int i;
    int a[N*N]={0},b[N*N]={0};//二维数组a[n][n]在内存中就是以连续的一片空间存放的
    //本质上就是一个n*n大小的一维数组,故此处直接采用一维数组存取
    FILE *fp,*fp2;
    srand((unsigned int)time(NULL));//初始化随机数种子
    for(i=0;i<N*N;i++)
    {   
        a[i]=rand()%100+1;//随机生成100以内的整数,为了方便采用随机数
        //实际上可以采取手工输入
        //a[i]=scanf("%d");                 
        printf("%3d",a[i]);//输出该数
        if(i>0&&(i+1)%N==0) //按n*n行格式断行
            printf("\n");  
       
    }
    ShellSort(a,N*N);  //数据排序
    if((fp=fopen("d:\\tmp\\abc.txt","w"))==NULL)  //请自行更改文件存放位置及文件名
    {  
        printf("打开文件出错.\n");  
        return 0;  
    }  
    printf("排序结果写入文件\n");
     for(i=0;i<N*N;i++)
     {   
                 
         printf("%3d",a[i]);////一起输出排序结果
         fprintf(fp, "%3d ",a[i]); //写到文件
         if(i>0&&(i+1)%N==0) 
            {
                fprintf(fp,"\n");//换行
                printf("\n");
            }
            
    }
  
    fclose(fp);     

    printf("读取文件\n");
    if((fp2=fopen("d:\\tmp\\abc.txt","r"))==NULL)  
    {  
        printf("打开文件出错.\n");  
        return 0;  
    } 
    for(i=0;i<N*N;i++)
     {   
        fscanf(fp2, "%d",&b[i]);  
        printf("%3d",b[i]) ;
        if(i>0&&(i+1)%N==0)//换行
            printf("\n");  
        
    }
  
    fclose(fp2);
    return 0;
   
  }

温馨提示:内容为网友见解,仅供参考
第1个回答  2018-03-24

    先输入

    再排序(1个函数)

    然后文件输入(1个函数)

c语言中怎样输入一个3*3的二维数组存储到文件中在文件中按顺序输出二...
include<stdio.h>#include #define N 3 \/\/N定义数组的大小void ShellSort(int a[],int n)\/\/直接插入排序:对含有n个整数的数组a[]进行从小到大排序{ int i,j,t; for(i=1;i<n;i++) for(j=i-1;j>=0&&a[j]>a[j+1];j--) { t=a[j]; a[j]=a[j+1]...

C语言中如何将一个3×3的二维数组,行列互换,并赋值到另一个二维...
int main(void){ int array[3][3] = {1,2,3,4,5,6,7,8,9};int array_1[3][3];printf("原始数组:\\n");for(int i = 0;i<3;i++){ for(int j = 0;j<3;j++){ array_1[j][i] = array[i][j];printf("%d\\t",array[i][j]);} printf("\\n");} printf("转...

C语言,如何在子函数中写一个3*3二维数组,给主函数调用!!
方法不止一种,我这里用指针的指针实现二维数组。二维数组除了行列,本身地址也是连续的,从第一行第一列的元素地址++,可以取出所有元素。所以我这里先申请了完整的连续地址。include<stdio.h>#include<malloc.h>int ** sr(void){ int i,j; int *memory=(int *)malloc(sizeof(int)*9);...

急急!!!如何用c语言输入和输出一个二维数组??
include <stdio.h> include <stdlib.h> int main(){ int a[2][2];int i,j;for (i=0;i<2;i++){ for (j=0;j<2;j++){ scanf("%d ",&a[i][j]);} } for(i=0;i<2;i++)for(j=0;j<2;j++)printf("%d",a[i][j]);return 0;} 运行成功 ...

C语言,怎样将二维数组存入文件?
int a[2][3] = {2,4,4,2,3,4};\/\/比如说你要把它存到一个文件中。\/\/现在你要现在你的源程序的目录下建立一个比如说是 data.txt文件 \/\/现在开始写程序 FILE *fp;if ((fp = fopen("data.txt","w"))==NULL){ printf("the file can not open..");exit(0);}\/\/出错处理 for...

如何用C语言程序编写“利用函数将给定的3*3二维数组转置”
usingnamespacestd;void zhuang zhi(int a[3][3]){int m,n,i;for(m=0;m<2;m++)for(i=0;i<3;i++){if(m!=1||i!=0){n=a[i][m];a[i][m]=a[m][i];a[m][i]=n;} } } int main(){ inta[3][3];inti,j...

C语言二维数组文件输入输出
\/*你的二维数组*\/ int number[MAX_LENGTH][MAX_LENGTH];memset(number, 0, MAX_LENGTH*MAX_LENGTH);\/*输入文件读入的绝对路径*\/ scanf("%[^\\n]\\n", PATH);if((file_read = fopen(PATH, "r")) == NULL)return EXIT_FAILURE;int filesize;filesize = readfile(file_read, number);fc...

用c语言输入一个二维数组再顺时针输出
{ if(a == NULL|| row <= 0|| col <= 0)return;int i = 0, j = 0, k = 0;for(i = 0; i < row\/2 + row%2; i++){ for(j = i; j < col - i; j++){ printf("%d ",a[i][j]);} j--;for(k = i + 1; k < row - i; k ++)printf("%d ",a[k]...

c语言 二维数组如何输入 该怎么输入数组,才能输出?
一行一行的保存成了一维信息。所以,二维数组的输入只要用双重循环即可,比如:int a[11][11];for(int i=0;i<10;i++){ for(int j=0;j<10;j++){ scanf("%d",&a[i][j]);} } 其实 int a[3][3]可以这样初始化:int a[3][3]= {0,1,2,3,4,5,6,7,8};编译器会自动的将...

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;\/\/行数或列数非法...

相似回答