如何在C中做不同种类的三角形?

时间:2019-01-23 18:57:24

标签: c

问题是非常基本的,但是我需要学习它才能通过我在大学中的第一次编程考试,因此,对我们的帮助非常感谢。 到目前为止,我只能做由星组成的,由金字塔组成的法线金字塔式三角形,高度取决于输入,这表明我的知识有多么有限。

我需要学习的是如何使用for循环来制作包含与星形不同字符的三角形,例如:

n = 7

ABCDEFG HIJKLM NOPQR STUV WXY ZA B

或使用十六进制

0 12 345 6789 ABCDE F01234 56789AB

我们将不胜感激任何其他帮助,但是仅凭代码就可以了,因为我需要弄清楚如何用重复的字母或其他符号代替星号。

谢谢!

2 个答案:

答案 0 :(得分:0)

我首先要定义要显示的字符串

const char* LETTERS = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
const char* HEX = "0123456789ABCDEF";

然后您可以通过索引这些字符串,对它们的长度取模来轻松访问所需的char,如下所示:

char c;
const int LETTERS_LEN = strlen(LETTERS);
for (int i = 0; i < N; i++) {
    c = LETTERS[i % LETTERS_LEN];
    // place c in your triangle
}

i % LETTERS_LEN使i定期从0LETTERS_LEN - 1取值,这正是您所需要的(如果我正确理解了您的示例)。

另一种解决方案是使用'A'ASCII码为65的事实,您可以执行c = 65 + i % 26,但我编写的解决方案用途更广泛-您可以定义所需的任何字符集。 / p>

注意:我已经有一段时间没有使用纯C了,我可能把初始化部分弄错了。如果遇到编译错误,只需使用#define LETTERS "ABC..."

答案 1 :(得分:0)

由于这是一项家庭作业,因此我不会为您编写完整的程序。听起来好像您降低了三角形的绘制范围,而您仅需要有关如何使用不同字符的帮助。我可能会做的是创建一个字符数组:

char symbols[] = "0123456789ABCDEF";

然后创建一个从0开始的索引指针:

int index = 0;

然后,当您使用symbols[index]绘制符号时,只需递增index并检查以确保其长度不超过长度即可。如果是,则将index重设为0