在一维数组中写维吉尼广场
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;
【讨论】:
以上是关于在一维数组中写维吉尼广场的主要内容,如果未能解决你的问题,请参考以下文章