打印两个索引之间的所有字母字符

时间:2013-03-25 21:03:33

标签: c

我对这个问题有点麻烦。我一直在“构建成功”(我在xCode中工作),但没有打印输出。

以下是问题:

“编写程序和void函数.void函数将采用两个整数作为值传递参数。这两个整数给出了范围的开始和结束(开始保证小于结束)字母序列中的位置(A为零,B为1等)然后函数必须打印起始大写字母,然后在升序FOR循环中打印每个大写字母。您可以使用put char()或printf。示例:如果用户键入“CJ”,则传递给函数的int将为2和9,打印输出将为“CDEFGHIJ”。

这是我的代码:

#include <stdio.h>

void writeLetters (int begin, int end);

int main() {

    char beginChar, endChar;
    int beginInt, endInt;

    scanf("%c%c", beginChar, endChar);

    beginInt = beginChar*1;
    endInt = endChar*1;

    writeLetters(beginInt, endInt);

    return 0;
}

void writeLetters (int begin, int end) {

    int i;
    char beginChar = begin*'A', endChar = end*'A';

    for (i=begin; i<=end; i++) {

        printf("%c", beginChar);
        beginChar += 'A';
    }
}

谢谢!

2 个答案:

答案 0 :(得分:0)

scanf("%d%d", &beginInt, &endInt);    
....

void writeLetters (int begin, int end)
{
   int i;

   for (i=begin; i <= end; i++)
   {
       printf("%c", (char)('A' + i));
   }
}

答案 1 :(得分:0)

你有很多问题;有些已经被指出,有些则没有。查看您的writeLetters函数,每次循环都会beginChar增加'A'

试试这个:

void writeLetters (int begin, int end) 
{
    while(begin <= end)
    {
        printf("%c", 'A' + begin);
        begin++;
    }
}

int main() 
{
    char beginChar, endChar;

    scanf("%c%c", &beginChar, &endChar);

    /* live dangerously - don't error check scanf and don't
     * sanitize the input. In real life, you should always
     * practice safe hex.
     */
    writeLetters(beginChar - 'A', endChar - 'A');

    return 0;
}