‘壹’ c语言编程:怎么让编写的程序理解用户给出的函数解析式,并绘制出相应的函数图像
挺有意思的问题,简单谈一下看法
将你的需求分成两部分,一是让程序自行解析用户输入的函数解析式,二是绘制函数图像。
首先,关于第一个功能,最直接的思路就是字符串解析,按照数学知识定义不同的运算符号,按照使用习惯定义常用的变量和常量的符号字母,然后据此规则解析输入的字符串,再根据解析结果确定函数中基本运算的次数及运算顺序,最后将整个操作流程以一定形式存储起来即可。
例如,对于y=log(x^2+x),包含三次基本运算,第一步是x^2,第二步是上一步的结果+x,第三步是上一步的结果求对数。注意到log有定义域的限制,这也是要在程序中实现的。
然后,对于第二个功能,根据给定函数绘制图像并不难,对于一元和二元函数来说很容易实现,难点在于多元函数应如何绘制直观易懂的函数图像?不过这一点超出编程语言的范畴了,而且二元函数可以满足大部分应用场景了。
绘制函数图像的程序只需在定义域上按指定的步长求出不同自变量对应的函数值,然后将点连成线,即可绘制出函数图像。例如对于logx,定义域为x>0。假设步长为0.1,则可求出0.1,0.2,0.3,...,99.9,100.0的函数值,然后绘制出点,再连点成线,即可得到函数图像。
另外,这里还有很多细节没有讨论,例如输入数据是字符串还是图像;是否可以用其他方法解析输入,例如神经网络。这些就很复杂了,不再深入。
回答中可能有考虑不周的地方,希望上述内容对你有参考意义
‘贰’ 求大神帮忙用C语言编程,编写输出Y=X*X的抛物线图像,要求程序能输出图像,如果会编的直接再加分。C语言
#include"宴桐圆graphics.h"
#include"stdio.h"
main()
{
int graphdriver,graphmode;
int y,x,i;
graphdriver=DETECT;
initgraph(&graphdriver,&graphmode,"");
cleardevice();
setcolor(12);
line(100,200,500,200); /*x轴轮团*/
line(300,400,300,400); /*y轴*/
for(i=-150;i<150;i++)
{
x=i;
y=x*x;
putpixel(300+x, 200-y/150, 5); /晌塌*画曲线*/
}
getch();
closegraph();
}
‘叁’ 如何在linux下编写C语言图像程序
1.进入字符界面
2.创建文件夹用于存放源文件
mkdir helloworld //创建文件夹命令
cd helloworld //进入新建的文件夹,这里应该说目录比较好,windows用习惯了
vim main.c //打开vim并创建main.c文件
//按 i 键进入编辑状态,以下是程序
#include
int main()
{
printf("Hello world!/n");
return 0;
}
按Esc进入命令模式,按 ZZ 保存退出
gcc main.c //编译
./a.out //运行,默认情况生成a.out可执行文件
虽然本程序很简单,但包含了在Linux上编程的基本思想,当看到熟悉的结果时,还是小得意了一下。
嘻嘻……
‘肆’ 怎么用c语言画函数图像
我画了半个正弦函数,其余的你可以照着画,欢迎讨论,
#include "stdio.h"
#include "conio.h"
#include "math.h"
#include "graphics.h"
void main()
{
int driver,mode,i;
driver=DETECT;
mode=0;
initgraph(&driver,&mode,"");
setcolor(15);
for(i=0;i<360;i++)
line(i,200*sin(i*3.14/360),i+1,200*sin((i+1)*3.14/360));
getch();
restorecrtmode();
}
‘伍’ 如何用c语言编写图形
标准的C是没有图形库的 图形库都是第3方的扩展的 比如 TC2.0 的graphics.h等等
用C写一般的Win32应用程序一般都是 VC6.0 (API 或者 MFC 就是你所说的能有按键那些的程序), 所以它要很好的C基础甚至C++基础才能学好 , 现在不要烦那个 黑不隆冬的dos界面 ,它是你学Win32应用程序的基础.所以我非常建议你认真把C读好,它的功能真的很强,一般高级语言能写的东西,他一般也是行的.
‘陆’ C语言如何画图
framebuffer(帧缓冲)。
帧的最低数量为24(人肉眼可见)(低于24则感觉到画面不流畅)。
显卡与帧的关系:由cpu调节其数据传输速率来输出其三基色的配比。
三基色:RGB(红绿蓝)。
在没有桌面和图形文件的系统界面,可以通过C语言的编程来实现在黑色背景上画图!
用下面的代码,在需要的地方(有注释)适当修改,就能画出自己喜欢的图形!
PS:同样要编译运行后才能出效果。
#include <stdio.h>
#include <sys/mman.h>
#include <fcntl.h>
#include <linux/fb.h>
#include <stdlib.h>
#define RGB888(r,g,b) ((r & 0xff) <<16 | (g & 0xff) << 8 | (b & 0xff))
#define RGB565(r,g,b) ((r & 0x1f) <<11 | (g & 0x3f) << 5 | (b & 0x1f))
int main()
{
int fd = open("/dev/fb0", O_RDWR);
if(fd < 0){
perror("open err. ");
exit(EXIT_FAILURE);
printf("xres: %d ", info.xres);
printf("yres: %d ", info.yres);
printf("bits_per_pixel: %d ", info.bits_per_pixel);
size_t len = info.xres*info.yres*info.bits_per_pixel >> 3;
unsigned long* addr = NULL;
addr = mmap(NULL, len, PROT_WRITE|PROT_READ, MAP_SHARED, fd, 0);
if(addr == (void*)-1){
perror("mmap err. ");
‘柒’ 用C语言编写灰度图像直方图变换增强
参考一下这个程序:
#define IMAGEWIDTH 80
#define IMAGEHEIGHT 80
void Histogram(unsigned char *pImage,int nWidth,int nHeight,float fHisto[256]);
void Enhance(unsigned char *pImage,unsigned char *pImage1,int nWidth,int nHeight,float fHisto[256],float fHisto1[256]);
unsigned char dbImage[IMAGEWIDTH*IMAGEHEIGHT];
unsigned char dbTargetImage[IMAGEWIDTH*IMAGEHEIGHT];
float fHistogram[256],fHistogram1[256];
unsigned char lut[256];
/* 直方图统计程序 */
int main()
{
... //准备一幅灰度图片到dbImage
Histogram(dbImage,IMAGEWIDTH,IMAGEHEIGHT,fHistogram); //做直方图统计
Enhance(dbImage,dbTargetImage,IMAGEWIDTH,IMAGEHEIGHT,fHistogram,fHistogram1); //直方图增强输出到dbTargetImage
...//完成后显示
}
void Histogram(unsigned char *pImage,int nWidth,int nHeight,float fHisto[256])
{
int i,j;
unsigned int uWork;
unsigned char *pWork;
for ( i=0;i<256;i++ ) fHisto[i]=0.0f;
pWork=pImage;
for ( i=0;i<nHeight;i++ )
{
for ( j=0;j<nWidth;j++,pWork++ )
{
uWork=(unsigned int)(*pWork);
fHisto[uWork]++;
}
}
uWork=nWidth*nHeight;
for ( i=0;i<256;i++ )
{
fHisto[i]/=uWork;
fHisto[i]*=100;
}
}
void Enhance(unsigned char *pImage,unsigned char *pImage1,int nWidth,int nHeight,float fHisto[256],float fHisto1[256])
{
int i,j;
unsigned int uWork;
unsigned char *pWork,*pWork1;
for ( i=0;i<256;i++ )
fHisto1[i]=fHisto[i]/100;
for ( i=1;i<256;i++ )
fHisto1[i]+=fHisto1[i-1];
for ( i=0;i<256;i++ )
lut[i]=fHisto1[i]*256;
for ( i=0;i<256;i++ )
if ( lut[i]>=256 )
lut[i]=255;
pWork=pImage; pWork1=pImage1;
for ( i=0;i<nHeight;i++ )
for ( j=0;j<nWidth;j++,pWork++,pWork1++ )
(*pWork1)=lut[(*pWork)];
}
‘捌’ 怎样用C语言编写个爱心图象
创建一个心形图案需要的最长字符串,充分利用printf函数输出字符串的丰富控制功能,按心形图案每行所需长度和位置,对所创建的字符串进行截断并在所需位置上输出,最后在屏幕上形成由字符组成的心形图案。
//#include"stdafx.h"//Ifthevc++6.0,withthisline.
#include"stdio.h"
intmain(void){
chara[]="IloveyouIloveyouIloveyouIl";
printf(" ");
printf("%*.*s ",58,21,"_*=__=*_");
printf("%*.*s ",61,25,"IloveyouIlove!");
printf("%*.*s ",63,29,"IloveyouIloveyouIlove");
printf("%*.*s ",65,33,a);//在屏幕第65个字符处开始输出字符串a的前33个字符,其他各句意义相同
printf("%*.*s ",66,35,a);
printf("%*.*s ",66,35,a);
printf("%*.*s ",65,33,a);
printf("%*.*s ",64,31,a);
printf("%*.*s ",63,29,a);
printf("%*.*s ",61,25,a);
printf("%*.*s ",59,21,a);
printf("%*.*s ",57,17,a);
printf("%*.*s ",55,13,a);
printf("%*.*s ",53,9,a);
printf("%*.*s ",51,5,a);
printf("%*.*s ",50,3,a);
printf("%*.*s ",49,1,a);
return0;
}
‘玖’ 怎么用C语言编图像
这个你要知道图像的格式,以及图像在内存中是怎么存储的,先把图像数据读出来,然后再处理。建差铅绝议你可以先看看BMP图像的读取,在网上找找这方面的资料。用C读取和写入BMP格式的图像,相虚姿信你就明白怎么回事了。
另外还有用MFC也可以做图像处理,不过我没做过,我说的是纯C的方式激如。
‘拾’ c语言题 编写程序输出下面图像(要求用嵌套的循环语句实现)。 1 21 321 4321 54321
#include"stdio.h"毁肆信
int雹友main(intargv,char*argc[]){
inti,j;
for(i=0;i<5;i++){
for(j=5-i;j>0;printf(""),j--);
for(j=i+1;j>纤轮0;printf("%d",j--));
printf(" ");
}
return0;
}
运行结果: