我试图使用2d字符数组作为形状的表格,我在尝试绘制三角形时遇到了麻烦。给定三角形顶部的位置及其高度,我的函数应该通过改变我已经分配给它的元素来绘制一个25行,80列字符数组中的三角形。 '这是我到目前为止所做的:
int i, j;
for(i=0; i<height; i++){
for(j=-i; j<=i; j++){
screen[x+i][y+j]=ch;
}
}
screen是我的2d char数组的名称。
例如,对于高度为3的三角形,它应该是这样的: *
***
*****
但由于某些原因它似乎无法运作,我无法理解为什么。
我为没有澄清我的代码所做的事情而道歉。 我有以下功能来打印我的2d数组:
void PrintScreen(){
int i, j;
for(i=0; i<SCREEN_HEIGHT; i++)
{
for(j=0; j<SCREEN_WIDTH; j++)
{
printf("%c", screen[i][j]);
}
printf("\n");
}
} // end-PrintScreen
我弄清楚我做错了什么。由于我犯了一个错误,我以前看不到任何我运行程序的东西。如果其他人需要有关同一问题的帮助,上面的代码应该可以正常工作。
答案 0 :(得分:2)
从你的片段中缩小的这个极简主义的例子对我有用:
#include <stdio.h>
#define SCREEN_HEIGHT 25
#define SCREEN_WIDTH 80
char screen[SCREEN_HEIGHT][SCREEN_WIDTH];
int main(int argc, char* argv[])
{
int height = 10;
int x = 1, y = 10;
int i, j;
for(i=0; i<height; i++){
for(j=-i; j<=i; j++){
screen[x+i][y+j]='*';
}
}
for(i=0; i<SCREEN_HEIGHT; i++) {
for(j=0; j<SCREEN_WIDTH; j++) {
printf("%c", screen[i][j]==0 ? ' ' : '*');
}
printf("\n");
}
}
但你的x和y轴看起来是相反的。 X通常是左右和Y - 上下。