如何在C中随机创建字母矩阵a..z

时间:2015-03-08 16:27:01

标签: c

我几天前就开始使用C语言了。我想用a..z的随机小写字母创建方形字符矩阵。 像:

a x r z
b q e s
w x t 你好吗

如何在 C语言中创建这样的方阵。我搜索了它但没有得到任何解决方案。如果任何人能给我解决方案,将会很有帮助。

3 个答案:

答案 0 :(得分:4)

这应该让你开始:

#include <time.h>
#include <stdlib.h>

#define SIZE 4

void Init(char matrix[SIZE][SIZE])
{
    int i,j;
    for (i=0; i<SIZE; i++)
        for (j=0; j<SIZE; j++)
            matrix[i][j] = (char)('a'+rand()%('z'-'a'+1));
}

int main()
{
    char matrix[SIZE][SIZE];
    srand((unsigned int)time(NULL));
    Init(matrix);
    // The rest of your program...
    return 0;
}

答案 1 :(得分:0)

@barak给出的代码绝对有效。我添加了一些代码来打印矩阵..

#include <time.h>
#include <stdlib.h>

#define SIZE 4

void Init(char matrix[SIZE][SIZE])
{
    int i,j;
    for (i=0; i<SIZE; i++)
    for (j=0; j<SIZE; j++)
        matrix[i][j] = 'a'+rand()%('z'-'a'+1);
}

int main()
{
    char matrix[SIZE][SIZE];
    int i,j;
    srand((unsigned int)time(NULL));
    Init(matrix);
    for(i=0;i<SIZE;i++){
        for(j=0;j<SIZE;j++){
            printf("%c",matrix[i][j]);
        }
        printf("\n");
    }
    return 0;
}

答案 2 :(得分:0)

首先要考虑到所有小写字母都没有必要在没有某些中间符号的情况下相互跟随,例如在EBCDIC中。所以最好自己定义相应的序列。

这是一个示范程序

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

void square_matrix_init( size_t n, char matrix[][n] )
{
    char *s = "abcdefghijklmnopqrstuvwxyz";
    const size_t N = 26;

    for ( size_t i = 0; i < n; i++ )
    {
        for ( size_t j = 0; j < n; j++ ) matrix[i][j] = s[ rand() % N ];  
    }
}   

int main(void) 
{
    size_t n = 4;

    char matrix[n][n];

    srand( (unsigned int )time( NULL ) );

    for ( size_t i = 0; i < n; i++ )
    {
        square_matrix_init( n, matrix );

        for ( size_t k = 0; k < n; k++ )
        {
            for ( size_t l = 0; l < n; l++  ) printf( "%c ", matrix[k][l] );
            printf( "\n" );
        }

        printf( "\n" );
    }

    return 0;
}

程序输出可能看起来像

p p g z 
c i v n 
v y n p 
w g x t 

w i e l 
l i c q 
u f y e 
d z t s 

o z t t 
i q i f 
q w v m 
c s h y 

a m k l 
w o e q 
t e v y 
d q s u 
相关问题