C语言程序设计问题,大神进,高分悬赏。。。。初等函数曲线图形的简易绘制 150
初等函数曲线图形的简易绘制:设屏幕显示文本是25行,80列,可以用“+”和“——〉”号画坐标系,用“*”号画曲线上的点,给出初等函数,例如cos(x),ex,x3-3x+...
初等函数曲线图形的简易绘制:设屏幕显示文本是25行,80列,可以用“+”和“——〉”号画坐标系,用“*”号画曲线上的点,给出初等函数,例如cos(x),ex,x3-3x+1,等等,还要给出x的一个估计的范围,程序就画出这个初等函数的简易图形。
提示:按照屏幕行列数,例如25行84列,可以让屏幕对应一个25*84的矩阵,函数图形的计算结果先存入矩阵,再打印出来。//按25行80列可用安排。
别只有代码,大概写一下思路,谢谢了,大一的程序设计。 展开
提示:按照屏幕行列数,例如25行84列,可以让屏幕对应一个25*84的矩阵,函数图形的计算结果先存入矩阵,再打印出来。//按25行80列可用安排。
别只有代码,大概写一下思路,谢谢了,大一的程序设计。 展开
展开全部
可以做一个二维[整形或char类型]数组,行列分别是屏幕的行列数,然后,通过计算在修改对应位置元素的值就可以,然后将数组元素打印出来(这里以char类型为例):
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#define ROW 25
#define COL 84
char table[ROW][COL];
void initTable()
{
for(int i = 0; i < ROW; i++)
{
for(int j = 0; j < COL; j++)
{
table[i][j] = ' ';
}
}
}
int main(int argc, char*argv[])
{
// 这里以求cos(x) 为例
// 因为行列数为整形,所以这里对所求结果向下取整
// 这里以第20行为横坐标位置
// 先绘制x,y坐标
for(int row = 0; row < ROW; row++)
{
table[row][0] = '|';
}
table[20][0] = '+';
for(int col = 1; col < COL; col++)
{
table[20][col] = '-';
}
table[0][0] = '^';
table[20][COL - 1] = '>';
// 这里随x计算cos的值,并将对应的坐标处的字符替换为'*';
for(int x = 0; x < COL - 1; x++)
{
table[5 * ((int)(cos(x)))][x] = '*';
}
// 接下来就是逐行输出了
for(int i = 0; i < ROW; i++)
{
for(int j = 0; j < COL; j++)
{
printf("%c", table[i][j]);
}
}
system("pause");
}
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#define ROW 25
#define COL 84
char table[ROW][COL];
void initTable()
{
for(int i = 0; i < ROW; i++)
{
for(int j = 0; j < COL; j++)
{
table[i][j] = ' ';
}
}
}
int main(int argc, char*argv[])
{
// 这里以求cos(x) 为例
// 因为行列数为整形,所以这里对所求结果向下取整
// 这里以第20行为横坐标位置
// 先绘制x,y坐标
for(int row = 0; row < ROW; row++)
{
table[row][0] = '|';
}
table[20][0] = '+';
for(int col = 1; col < COL; col++)
{
table[20][col] = '-';
}
table[0][0] = '^';
table[20][COL - 1] = '>';
// 这里随x计算cos的值,并将对应的坐标处的字符替换为'*';
for(int x = 0; x < COL - 1; x++)
{
table[5 * ((int)(cos(x)))][x] = '*';
}
// 接下来就是逐行输出了
for(int i = 0; i < ROW; i++)
{
for(int j = 0; j < COL; j++)
{
printf("%c", table[i][j]);
}
}
system("pause");
}
更多追问追答
追问
能不能达到输入一个函数它就能打出图像的效果
追答
你是要做解析吗?如果是,那么对于每一个函数你都要建立一个对应的分支,比如你可以添加一个解析命令的函数:
// 别忘了包含进math.h
// 声明指向函数的指针指针类型,desVal是指向要修改变量的指针,x是x值。
typedef void (*cmd)(doubl x);
// 本函数会返回一个指向依照命令解析出来的函数的指针, command是命令,注意是函数名,不是调用语句,否则会出错。
cmd getCmd(char* command)
{
// 传递过来的字符串分别和各个支持的函数名称做比较,相等返回对应的函数指针。如果没有匹配的函数,则返回NULL。
if(strcmp(command, “sin”) == 0)
return (cmd)sin;
else if(strcmp(command, "cos") == 0)
return (cmd)cos;
else if(strcmp(command, "pow"))
return (cmd)pow;
else
return (cmd)NULL;
}
然后将上次回答的代码中的sin函数换成cmd类型的变量,执行时传入你输入的命令,获取到对应函数的指针,然后后面的代码几乎不用修改,因为函数指针的调用和直接调用函数可以认为是相同的。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询