【问题标题】:Print all alphabetic characters between two indices打印两个索引之间的所有字母字符
【发布时间】:2013-03-25 21:03:32
【问题描述】:

我在这个问题上遇到了一些麻烦。我不断得到“构建成功”(我在 xCode 中工作)但没有打印输出。

问题来了:

"写一个程序和一个void函数。void函数会接受两个int作为传值参数。这两个int给出范围的开始和结束(开始保证小于结束)字母序列中的位置数(A 为 0,B 为 1 等)该函数必须打印开始的大写字母,然后打印升序 FOR 循环中的每个大写字母。您可以使用 put char() 或 printf。例如:如果用户键入“CJ”,则传递给函数的整数将为 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';
    }
}

谢谢!

【问题讨论】:

  • 实际运行代码与仅编译代码相比会发生什么?
  • 如果开始 > 结束它不会打印任何东西。你给程序提供什么输入?
  • 我认为您将* 运算符误认为- 运算符。
  • 您缺少 & in scan 语句。 scanf("%c%c", &beginChar, &endChar);

标签: c


【解决方案1】:

您有很多问题;有些已经被指出,有些还没有。查看您的 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;
}

【讨论】:

    【解决方案2】:
    scanf("%d%d", &beginInt, &endInt);    
    ....
    
    void writeLetters (int begin, int end)
    {
       int i;
    
       for (i=begin; i <= end; i++)
       {
           printf("%c", (char)('A' + i));
       }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-22
      • 2020-03-29
      • 1970-01-01
      • 1970-01-01
      • 2023-03-19
      相关资源
      最近更新 更多