/*****------ad.c-------******输入要求:输入二进制字符串,如1110011。* 尽量小于10,不然后面的图形无法显示***************************/#include<stdio.h>#include<graphics.h>#include<conio.h>#include<math.h>char str_num[100];void initgraphics(){ int gd=DETECT; int gm; initgraph(&gd,&gm,"d:\\language\\tc20\\bgi"); return;}void graph_xy(int len){ setfillstyle(SOLID_FILL,BLUE); bar(0,20+len,635,220+len); setcolor(WHITE); line(100,30+len,100,200+len); outtextxy(95,30+len,"\/"); outtextxy(100,30+len,"\\y"); outtextxy(90,130+len,"0"); line(25,125+len,600,125+len); outtextxy(600,120+len,"\\"); outtextxy(593,125+len,"x\/"); setcolor(RED); outtextxy(200,30,"manchester graph"); outtextxy(200,270,"sine graph"); return;}void manchester_graph(int len,int y1,int y2,int count,int flag){ setcolor(WHITE); if(flag==1) outtextxy(len+10,60,"1"); else outtextxy(len+10,60,"0"); setcolor(WHITE); line(0+len,y1,25+len,y1); line(25+len,y1,25+len,y2); line(25+len,y2,50+len,y2); if(str_num[count]==str_num[count-1]) { setcolor(WHITE); line(0+len,y1,len,y2); }}void sine_graph(int len,int k,int flag){ double i; setcolor(WHITE); if(flag==1) outtextxy(len+10,300,"1"); else outtextxy(len+10,300,"0"); for(i=0;i<50;i+=0.001) putpixel(i+len,(200+k*sin(6.28*i/50))+150,WHITE); return;}int main(void){ int count=0; int length=50; int flag=0; initgraphics(); graph_xy(0); graph_xy(240); printf("input your b_str_num(strlen<=10):"); gets(str_num); while(str_num[count]!='\0') { switch(str_num[count]) { case '0': flag=0; manchester_graph(length,100,75,count,flag); sine_graph(length,10,flag); length=length+50; break; case '1': flag=1; manchester_graph(length,75,100,count,flag); sine_graph(length,50,flag); length=length+50; break; default: cleardevice(); outtextxy(200,200,"input error number!"); getch(); closegraph(); exit(8); } ++count; } getch(); closegraph(); return 0;}http://www.programfan.com/blog/article.asp?id=36

评论