我需要一些代码方面的帮助。问题是:
编写函数void printSquare(char c, int size)
接受字母表中的一个字母和一个介于3和10之间的数字
生成以下矩形字母:
如果传递的字母a且大小为4:

abcd
bcde
cdef
defg

如果字母W且大小为6,则输出应为
WXYZAB
XYZABC
YZABCD
ZABCDE
ABCDEF
BCDEFG

我已经试着调试了很长一段时间,找不到任何地方需要帮助。这就是代码现在的样子:
void printSquare(char c, int size);
int main() {

    printSquare('b', 4);

    system("pause");
    return 0;
}


void printSquare(char c, int size){
    int counter = 0;
    char letters[26] = { 'a', 'b', 'c', 'd',
        'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n',
        'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z' };
    for (int i = 0; i < 26; i++){
        if (c == letters[i]){
            int temp = i;
            for (int j = 0; j < size; j++){
                letters[i] = letters[temp];
                temp++;
                for (int k = 0; k < size; k++){
                    printf("%c", letters[i]);
                    letters[i++];
                }
                printf("\n");
            }
        }
    }
}

最佳答案

假设编码中大写字母和小写字母是连续的(例如ASCII),您可以考虑如下内容:

void printSquare(char c, int size)
{
    char a = ('A' <= c && c <= 'Z') ? 'A' : 'a';
    for (int i = 0; i < size; ++i)
    {
        for (int j = 0; j < size; ++j)
            // (c - a) is the offset of c from 'A' or 'a'
            // i defines an extra offset for every line, so lines start with c, c+1, ...
            // j defines an offset for a character within line
            // % 26 makes sure that overall offset does not go beyond the alphabet length
            printf("%c", a + (c - a + i + j) % 26);
        printf("\n");
    }
}

关于c - 角色游戏-C编程,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31466107/

10-13 05:31