字母转换与while循环

时间:2014-03-21 19:08:06

标签: c loops while-loop

我正在编写一个打印字母表的程序,然后转换一个。它会这样做26次,所以最终看起来像这样:

1abcdefghijklmnopqrstuvwxyz
2zabcdefghijklmnopqrstuvwxy
3zxabcdefghijklmnopqrstuvwx
4zxyabcdefghijklmnopqrstuvw

到目前为止,我有一个while循环可以执行任何字母并打印一行字母表字符串,但我不知道如何为一个函数进行一般化。

这是我的一个字母的代码:

#include <stdio.h>
int main(void)
{
char a = 'a';
char h = 'h';
char z = 'z';
int start_p;
 char one = 'a';
int shift = 1;//some of these are used for later parts of my code
int end_p = 1;
int start = 0;
char two = 'a';
one = 'h';

 while(one <= z)
{
 printf("%c", one);
one = one + 1;
 }
one = ;
while(one >= a)
{
printf("%c", one);
one = one - 1;
}

return(0);
}

3 个答案:

答案 0 :(得分:0)

假设'a''z'的字母实际上是连续的,你可以这样做:

#define NUMBER_OF_LETTERS 26

main() {
    int i;
    int shift = 5;

    for(i = 0; i < NUMBER_OF_LETTERS; i++) {
        printf("%c", (i + shift) % NUMBER_OF_LETTERS + 'a');
    }
    printf("\n");
}

模运算符将保证您始终使用0-25 + 'a'范围内的字母。

答案 1 :(得分:0)

使用功能。注意代码不包括start char有效的任何错误检查。

#include <stdio.h>
void printAlphabet(int start)
{
    int one = start;
    int nLettersInAlphabet = 26;
    while (nLettersInAlphabet--)
    {
        printf("%c", one);
        if (one++ == 'z')
            one = 'a';
    }
    printf("\n");
}

int main(void)
{
printAlphabet('a');
printAlphabet('z');
printAlphabet('h');
}

答案 2 :(得分:0)

这个怎么样:

#include <stdio.h>

void printAlphabet(int start) 
{
    int p;
    char letter;

    for(p=0; p<26; p++){
        letter = 'a' + (((start + p) - 'a') % 26);
        printf("%c", letter);
    }
    printf("\n");
}

int main(int argc, char **argv)
{
    int i, start;

    for(i=26; i>0 ; i--){
        start = i + 'a';
        printAlphabet(start); 
    }
    return 0;
}