问题是非常基本的,但是我需要学习它才能通过我在大学中的第一次编程考试,因此,对我们的帮助非常感谢。 到目前为止,我只能做由星组成的,由金字塔组成的法线金字塔式三角形,高度取决于输入,这表明我的知识有多么有限。
我需要学习的是如何使用for循环来制作包含与星形不同字符的三角形,例如:
n = 7
ABCDEFG
HIJKLM
NOPQR
STUV
WXY
ZA
B
或使用十六进制
0
12
345
6789
ABCDE
F01234
56789AB
我们将不胜感激任何其他帮助,但是仅凭代码就可以了,因为我需要弄清楚如何用重复的字母或其他符号代替星号。
谢谢!
答案 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
定期从0
到LETTERS_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
。