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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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;
   
  

参考技术A

    先输入

    再排序(1个函数)

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

c 语言用指针表示二维数组的列 怎样表示

定义二维指针,例如:int (*p)[3],a[3][4];p=a;
那么指针指向二维数组的列是这样:*(*(p+1)+2)/*指向第二行第三列,即:a[1][2]*/
就是说,二维指针中*p是把行指针换成列指针。**p才是指向的数值。
参考技术A C语言是按行优先的方式存储的,如果您不是特别需要,还是把矩阵做个转置吧 参考技术B i 行 j 列 单元地址 int *p=*(p+i)+j;
第一个单元地址 int * p0=*p+j;
单元增量 就是每行的列数; int d=列数;
int *p1=p0+d;
参考技术C a[i][j]=(*p)[j]
for(m=0;m<i;m++)
*(*p[j]+m)+j

以上是关于c语言中怎样输入一个3*3的二维数组存储到文件中在文件中按顺序输出二维数组的主要内容,如果未能解决你的问题,请参考以下文章

c语言问题:c语言中二维数组在内存中怎样存储?

在C语言中定义二维数组long a[3][5],则数组占多少字节的存储空间?

C语言中,对于不知道长度的数组怎样输入。。。

C语言中,对于不知道长度的数组怎样输入。。。

C语言实现一个可变长的二维数组

C语言中怎样区分一维指针和二维指针?