『壹』 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;
}
運行結果: