c - 如何在C语言中乘以一个字符串?

标签 c cs50

这个问题在这里已经有了答案:





Making a Hash Pyramid

(2 个回答)


5年前关闭。




我想用 int“乘以”一个字符串用户输入的变量。

#include <cs50.h>
#include <stdio.h>

    // Height < 24

    string block = "#";
    string output;

    int main(void) {
        printf("Height: ");
        int height = GetInt();
        while (true) { 
            if (height < 24 && height > 0) {
                output = "#" + block * height;
                printf("%s\n", output); 
                break;

            } else {
                printf("Height: ");
                height = GetInt();
            }
        }
        return 0;
    }

使用 Height变量 我想乘以字符串变量 block (#)来自 Height ,并将其添加到另一个 "#" .

我尝试以我认为有意义的唯一方式实现它,但语法似乎不正确。

我已经查看了有关此主题的 StackOverflow,并且只能找到带有此问题的 C# 和 C++ 主题。

编辑:打印后输出应如下所示:
       ##
      ###
     ####
    #####
   ######
  #######
 ########
#########

并且输出的“#”行取决于用户输入的 Height 变量。假设用户输入高度为“5”:
Height: 5
       ##
      ###
     ####
    #####
   ######

应该是输出。

最佳答案

所以你需要2个循环来做到这一点。一个用于遍历要在一行上打印的字符,一个用于遍历整个高度(行数)。

所以我们想做的是:

  • 遍历从 1 到并包括高度的每一行。
  • 对于每一行,输出与当前行号一样多的#

  • 例如
     int lineno;
     int height  = GetInt();
     ... 
     for (lineno = 1; lineno <= height; lineno++) {
          int column;
          for (column = 0; column < lineno; column++) {
               putchar('#');
          }
         putchar('\n');
     }
    

    这将是一棵左调整树。我会让你自行调整它,即在“#”前面打印空格,或者先打印 2 个 # 而不是 1。

    关于c - 如何在C语言中乘以一个字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34677197/

    相关文章:

    c - 如何将 Win32 lParam 转换为 C 结构?

    c - 我的 "Vigenere CS 50"项目运行不正常

    c - 程序创建一个文件,但不会写入该文件

    c - C中使用getchar存储用户输入的多个字符

    c - 用 C 语言编写维吉尼亚密码(保留空格)

    c - 这个vigenere cs50代码有什么问题?

    c - Islower功能故障

    c - 如何从 Unix shell 脚本调用 C 函数?

    c - C 语言的周长计算

    c - 使用相对路径打开文件失败