在一维数组中写维吉尼广场

Posted

技术标签:

【中文标题】在一维数组中写维吉尼广场【英文标题】:write vigenere square in 1d array 【发布时间】:2015-11-09 03:09:07 【问题描述】:

如何使用这些 for 循环将 vigenere 正方形写入一维数组。 我已经尝试了很多年,但我无法解决。我有一个用于列和高度的 for 循环。我有一个名为 alphab 的字母表专用数组和一个用于存储大小为 26*26 的值的数组。

#include <stdio.h>
void vigsq(char *vs);

char *pVs;
char vs[100]; // 1d array of fixed size. vs = vigenere square containing 26 X 26 elements
char alphab[26]; //holds the alphabet in uppercase

int main(int argc, const char * argv[])

    printf("Hello\n");
    pVs = vs;

    vigsq(pVs);
    return 0;



void vigsq(char *vs)

    int i = 0;//i index
    int a = 0;//a index

    for (i = 0; i <= 25; i++) // number of row
    
        for (a = 0; a <= 25 ; a++) // prints the columns a - z
        

            alphab[a] = (65 + a + i);
            if (alphab[a] > 90)
            
                alphab[a] = (65 + i);
            

            printf("|%c|",vs[a]);
        
        printf("\n"); // print new line
    

    printf("\n"); // print new line

【问题讨论】:

【参考方案1】:

使用取模运算符%,这样可以确保字符保持在 A 到 Z 之间的范围内。

char c = 'A' + shift % 26;

您可以将字母向右移动,一旦字母到达Z,下一个字母将是A

int main()

    int row, col;
    for (row = 0; row < 26; row++)
    
        for (col = 0; col < 26; col++)
        
            char c = 'A' + (row + col) % 26;
            printf("%c ", c);
        
        printf("\n");
    
    printf("\n");
    return 0;

【讨论】:

以上是关于在一维数组中写维吉尼广场的主要内容,如果未能解决你的问题,请参考以下文章

C语言中怎么把一维数组赋给另外一个一维数组

如何在C++中创建一维动态数组

C++二维数组给一维数组赋值

thinkPHP 一维数组的一个值怎么输出在模板上

为啥多维数组第一维的大小可以是任意的

Python,例如有两个一维数组,怎么变成二维数组?