我正在编写一个打印字母表的程序,然后转换一个。它会这样做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);
}
答案 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;
}