在二维字符数组中绘制三角形
Drawing a triangle in a 2-dimensional char array
我正在尝试使用 2d 字符数组作为形状的 table,但我在尝试绘制三角形时遇到了问题。给定三角形顶部的位置及其高度,我的函数应该通过更改我已经分配给 ' ' initially.This 的元素在 25 行 80 列的字符数组中绘制一个三角形是我目前所拥有的:
int i, j;
for(i=0; i<height; i++){
for(j=-i; j<=i; j++){
screen[x+i][y+j]=ch;
}
}
screen 是我的二维字符数组的名称。
例如,高度为 3 的三角形应该是这样的:
*
***
*****
但由于某些原因它似乎不起作用,我不明白为什么。
对于没有按原样阐明我的代码的作用,我深表歉意。
我有以下功能来打印我的二维数组:
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
我发现我做错了什么。由于我犯了一个错误,我之前运行该程序时看不到任何内容。如果其他人需要帮助解决同样的问题,上面的代码应该可以正常工作。
这个从您的代码片段中浓缩而来的极简示例对我有用:
#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 从上到下。
我正在尝试使用 2d 字符数组作为形状的 table,但我在尝试绘制三角形时遇到了问题。给定三角形顶部的位置及其高度,我的函数应该通过更改我已经分配给 ' ' initially.This 的元素在 25 行 80 列的字符数组中绘制一个三角形是我目前所拥有的:
int i, j;
for(i=0; i<height; i++){
for(j=-i; j<=i; j++){
screen[x+i][y+j]=ch;
}
}
screen 是我的二维字符数组的名称。
例如,高度为 3 的三角形应该是这样的:
*
***
*****
但由于某些原因它似乎不起作用,我不明白为什么。
对于没有按原样阐明我的代码的作用,我深表歉意。 我有以下功能来打印我的二维数组:
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
我发现我做错了什么。由于我犯了一个错误,我之前运行该程序时看不到任何内容。如果其他人需要帮助解决同样的问题,上面的代码应该可以正常工作。
这个从您的代码片段中浓缩而来的极简示例对我有用:
#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 从上到下。