c語言曲線圖
1. c語言程序設計問題,大神進,高分懸賞。。。。初等函數曲線圖形的簡易繪制
可以做一個二維[整形或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");
}
2. 用c語言寫程序,此程序能畫出來函數y=2x+5的曲線圖形。
此題把數學問題轉化為用C語言描述即可,很多畫圖問題可以使用這種方法。
假設屏幕左上角為坐標軸原點
#include<stdio.h>
#defineMAX30//選定曲線要顯示的范圍,因為一次函數是一條直線,所以它的顯示範圍無窮
intmain()
{
intx,y;
for(y=30;y>=0;y--)
{
for(x=0;x<MAX;x++)
{
if(y==2*x+5)
{
printf("*");
}
else
{
printf("");//空格,不滿足y=2x+5的點
}
}
printf("
");//x軸已經到顯示範圍,所以需要換行。
}
return0;
}
3. c語言編程繪制曲線
TC下調試通過
/*******************************************************
*Author :Wacs5
*Date :20090105(YYYY-MM-DD)
*Function :畫簡易的曲線圖 *********************************************************/
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <math.h>
#include <Graphics.h>
#define n 8
int main()
{
int i,j;
float data[]={7,3,12,6,9,5,8,11};
char str[40];
int gdrive=DETECT,gmode,errorcode;
int maxx,maxy;
int perx,pery;
int x0,x1,y0,y1;
int coloraxis=2,colorline=3;
float mindata,maxdata,ndata;
initgraph(&gdrive,&gmode,""); /*初始化設備*/
if ((errorcode=graphresult())!=grOk) /*查錯*/
{
printf("Graphics error:%s\nPress any key to exit:",grapherrormsg(errorcode));
getch();
exit(1);
}
maxx=getmaxx();
maxy=getmaxy();
mindata=maxdata=data[0];
for (i=1;i<n;i++)
{
if (mindata>data[i])
mindata=data[i];
if (maxdata<data[i])
maxdata=data[i];
}
mindata=floor(mindata);
maxdata=ceil(maxdata);
perx=maxx/(n+4);
pery=maxy/(maxdata-mindata+4);
x0=2*perx;
y0=maxy-2*pery;
x1=maxx-2*perx;
y1=2*pery;
setcolor(coloraxis);
line(x0,y0,x1,y0);
line(x0,y0,x0,y1);
line(x1,y0,x1-4,y0+3);
line(x1,y0,x1-4,y0-3);
line(x0,y1,x0+3,y1+4);
line(x0,y1,x0-3,y1+4);
settextjustify(CENTER_TEXT,TOP_TEXT);
for (i=0;i<n;i+=n/3)
{
j=x0+i*perx;
line(j,y0,j,y0+2); /*刻度線*/
sprintf(str,"%d",i);
outtextxy(j,y0+4,str);
}
settextjustify(RIGHT_TEXT,CENTER_TEXT);
for (i=(maxdata-mindata)/3;i<=maxdata-mindata;i+=(maxdata-mindata)/3)
{
j=y0-i*pery;
line(x0,j,x0-2,j); /*刻度線*/
sprintf(str,"%d",(int)mindata+i);
outtextxy(x0-4,j,str);
}
setcolor(colorline);
x1=x0+perx;
y1=y0-(data[0]-mindata)*pery;
circle(x1,y1,2);
moveto(x1,y1);
i=1;
do
{
x1+=perx;
y1=y0-(data[i]-mindata)*pery;
lineto(x1,y1);
circle(x1,y1,2);
moveto(x1,y1);
i++;
}while(i<n);
getch();
closegraph();
return 0;
}
求採納為滿意回答。
4. 怎樣用c語言畫函數曲線圖
/*請不要看完了就走人*/
/*幫幫忙,採納我的答案!*/
#include<stdio.h>
#include<math.h>
main(){
double
y;
int
x,m,i;
printf("y=sin(x)
[0<x<2*pi]\n");
for(y=1;y>=-1;y-=0.1){
if(y>=0){
m=asin(y)*10;
for(x=1;x<m;x++)printf("
");
printf("*",m);
for(;x<31-m;x++)printf("
");
printf("*\n");}
else{
m=-1*asin(y)*10;
for(i=0;i<32;i++)printf("
");
for(x=1;x<m;x++)printf("
");
printf("*",m);
for(;x<31-m;x++)printf("
");
printf("*\n",m);
}
}
}
5. 採用c語言繪制任意函數曲線(雙曲線,二次函數,一次函數)怎麼做
在c的標准庫中有graphic.h頭文件,實現了很多畫圖函數 比如 lineto, moveto, arc,(函數名可能記錯,好久沒用了-.-!)
直線:起點加終點就行。
二次曲線,比如拋物線,那就以定長拆分成小直線。雙曲線同理。
拋物線,和雙曲線用定長拆分,估計很難計算。要是精度要求不高就根據情況改成定x,或者定y偏移的拆分,要是精度要求高那就去找直線擬合曲線的演算法或者雙圓弧擬合曲線的演算法。
6. 大大們,跪求怎麼用C語言畫曲線圖啊例如畫傳遞函數G(jk)=(j5k+2)/[jk(0.1jk+1)(jk+1)]
TC 下可以用 graphic.h 里的函數。
VC 下。。還是用 C++ 的 GUI 要省事些。
事實上,最省事的方法是直接用 matlab、excel、vb 等。
7. c語言畫曲線
#include <stdio.h>
#include "genlib.h"
#include "graphics.h"
main()
{
InitGraphics();
MovePen(1.5,1.0);
DrawArc(0.5,90.180);
}
這個是c語言的畫圓弧的代碼,不過我在vc ,tc上運行的話,它都是說沒這個"genlib.h"頭文件的,所以機子上到現在還是沒運行成功,這個是有本書上的原代碼,那個叫《c語言的科學和藝術》,不妨去看看!
8. C語言編程 繪制曲線,會的來
TC下調試通過
/*******************************************************
*Author :Wacs5
*Date :20090105(YYYY-MM-DD)
*Function :畫簡易的曲線圖 *********************************************************/
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <math.h>
#include <Graphics.h>
#define n 8
int main()
{
int i,j;
float data[]={7,3,12,6,9,5,8,11};
char str[40];
int gdrive=DETECT,gmode,errorcode;
int maxx,maxy;
int perx,pery;
int x0,x1,y0,y1;
int coloraxis=2,colorline=3;
float mindata,maxdata,ndata;
initgraph(&gdrive,&gmode,""); /*初始化設備*/
if ((errorcode=graphresult())!=grOk) /*查錯*/
{
printf("Graphics error:%s\nPress any key to exit:",grapherrormsg(errorcode));
getch();
exit(1);
}
maxx=getmaxx();
maxy=getmaxy();
mindata=maxdata=data[0];
for (i=1;i<n;i++)
{
if (mindata>data[i])
mindata=data[i];
if (maxdata<data[i])
maxdata=data[i];
}
mindata=floor(mindata);
maxdata=ceil(maxdata);
perx=maxx/(n+4);
pery=maxy/(maxdata-mindata+4);
x0=2*perx;
y0=maxy-2*pery;
x1=maxx-2*perx;
y1=2*pery;
setcolor(coloraxis);
line(x0,y0,x1,y0);
line(x0,y0,x0,y1);
line(x1,y0,x1-4,y0+3);
line(x1,y0,x1-4,y0-3);
line(x0,y1,x0+3,y1+4);
line(x0,y1,x0-3,y1+4);
settextjustify(CENTER_TEXT,TOP_TEXT);
for (i=0;i<n;i+=n/3)
{
j=x0+i*perx;
line(j,y0,j,y0+2); /*刻度線*/
sprintf(str,"%d",i);
outtextxy(j,y0+4,str);
}
settextjustify(RIGHT_TEXT,CENTER_TEXT);
for (i=(maxdata-mindata)/3;i<=maxdata-mindata;i+=(maxdata-mindata)/3)
{
j=y0-i*pery;
line(x0,j,x0-2,j); /*刻度線*/
sprintf(str,"%d",(int)mindata+i);
outtextxy(x0-4,j,str);
}
setcolor(colorline);
x1=x0+perx;
y1=y0-(data[0]-mindata)*pery;
circle(x1,y1,2);
moveto(x1,y1);
i=1;
do
{
x1+=perx;
y1=y0-(data[i]-mindata)*pery;
lineto(x1,y1);
circle(x1,y1,2);
moveto(x1,y1);
i++;
}while(i<n);
getch();
closegraph();
return 0;
}
9. 怎麼用c語言畫實時曲線
樓主您好,你這個分值已經吸引了我
在下不才,也是自己寫過一些c語言畫圖模式下的程序。所以我認為我在這一方面具有一定的權威.
(文本模式下)
我對於您的問題理解的不是很透徹,但是看字面意思來說,您是想當前坐標賦值給變數,我假設變數為(x、y)分別為x軸、y軸坐標變數。則將坐標賦值,為x=getx();y=gety();
(畫圖模式下)
在這里,我一般是直接對寄存器進行中斷取得
滑鼠
的值。在對他進行操作。
c語言只有以上2種模式,通過你的提問,我覺得你問的是文本模式下的。如果你覺得我回答不夠詳細,可以直接加QQ:942690451
詢問。
另外,虛機團上產品團購,超級便宜