飛音時代公司的c語言測試題目


題目如下

有一個文本文件保存了9*9矩陣數據
通過回車換行分隔行
行內通過,分隔元素
1-9的數字是有效元素,其他內容都認為是空
要求
1. 實現矩陣轉置
2. 矩陣內元素如果是數字進行1-9,2-8,3-7,4-6互相映射,即如果原來數字是1,改成9,如果是9改成1

 

有一個文本matrix.txt,內容如下:

 

 , , , ,1, , ,3,
5, ,4, , , , , ,
 , , , ,5,3,8, ,9
 ,8,9, , , , , ,
 , , , , ,1,6, ,
 , , ,5,9, ,3,1,
 ,6, ,8, , ,9, ,
8,4,1, , , , , ,
2, , , ,6, , , ,7

代碼:

#include <stdio.h>
#include <stdlib.h>
/*
 *作者沒拉鏈的布加拉提
 */
int main(int argc,const char *argv[])
{
    char buff[9][9];
    FILE *fp;


    //判斷是否成功讀取
    if ((fp = fopen("matrix.txt","r")) == NULL)
    {
        perror("fail to read");
        exit(1);        
    }
    //把文件的數字字符提取到buff[9][9]中
    for (int i = 0; i < 9; i++)
    {
        for (int j = 0; j < 18; j++)
        {
            char buf = fgetc(fp);
            if (buf == EOF)
                break;           
            if(buf != ',' && buf != '\n')
                buff[i][j/2] = buf; 
        }
        
    }
    
    //把buff[9][9]反轉並且數字對應
    for (int i = 0; i < 9; i++)
    {
        for (int j = i; j < 9; j++)
        {
            char temp = buff[j][i];
            if(buff[i][j] != ' ')
                buff[j][i] = '9' + '1' - buff[i][j];
            else
                buff[j][i] = buff[i][j];



            if(temp != ' ')
                buff[i][j] = '9' + '1' - temp;
            else
                buff[i][j] = temp;
        }
    
    }


    fclose(fp);
    //寫入到一個新文件
    fp = fopen("matrix1.txt","w+");



    for (int i = 0; i < 9; i++)
    {
        for (int j = 0; j < 9; j++)
        {
           fputc(buff[i][j],fp);
           if(j<8)
             fputc(',',fp);
        }
        fputc('\n',fp);
    }


  fclose(fp);
    return 0;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM