本文目录一览:
- 1、c语言小数点和填充空格字符?
- 2、C语言 给一个圆形填充颜色
- 3、C语言填充程序
- 4、C语言数组填充
- 5、C语言实现多边形填充
- 6、C语言画图画出图形后如何填充颜色?
c语言小数点和填充空格字符?
这个很容易实现,可以根据输入的宽度和小数位数来构造printf的格式串,代码如下:
#include "stdio.h"
int main()
{
float x; // 输入数字
int a; // 宽度
int b; // 小数点位数
char fmt[10]; // 输出格式字符串
printf("输入数字:");
scanf("%f", x);
printf("输入填充空间:");
scanf("%d", a);
printf("输入小数点位数:");
scanf("%d", b);
sprintf(fmt, "%s%d%s%d%s", "%", a, ".", b, "f"); // 拼接输出格式字符串为 “%a.bf” 样式
printf(fmt, x); // 按 “%a.bf” 样式输出 x
return 0;
}
注:a输入0时相当于输出格式为 “%.bf”,vs2019下测试通过
C语言 给一个圆形填充颜色
第一floodfill第三个颜色参数一定要和被填充图画时的颜色一样.
第二,X,Y 一定要在被填充的图形内,边界上也是不行的,那样填充的是图形外的部分,如你上题,因是圆形,可改为
setcolor(1);
circle(200,200,100);
floodfill(200,200,1);
但如是长方形或正方形就一定要在边界之内,就是多一个像素都行
C语言填充程序
#includestdio.h
void main()
{
int m,n,k;
while(scanf("%d%d",m,n),m0||n0)
{};
for(k = m;n%k!=0||m%k!=0;k--);
{};
printf("%d\n",k);
}
}
k =m或=n应该没差别
m*n0 ?2个都是负的怎么办
while(scanf("%d%d",m,n),m0||n0)判断的是最后一个表达式的值,要2个数都大于0,都大于0就会进入循环,反写,都大于0才会跳出
C语言数组填充
#include stdio.h
int main(void){
int Formart_data[256]={0},i,j,k,m;
for(i=0;i16;i++)
for(k=i3,m=i,j=0;ji;j++,m=1)
if(m1)
Formart_data[k+j]=255;
for(k=0,i=0;i128;i++)//Look at...
printf(++k%8 ? "0x%02X " : "0x%02X\n",Formart_data[i]);
return 0;
}
C语言实现多边形填充
楼主问的是图形学算法。。1楼给出的是??
有以前写了一个多边形种子填充算法用的是贝塞尔方法你拿去看下把。。
1 用Bresenham直线与圆组成的扇形
void CFill4Dlg::Bresenham(int x0,int y0,int x1,int y1,int color)
{
int x,y,dx,dy,e;
dx=y1-x0;
dy=y1-y0;
e=-dx;
x=x0;
y=y0;
CClientDC dc(this);
for(x=x0;xx1;x++)
{
dc.SetPixel(x,(int)(y+0.5),color);
e=e+2*dy;
if(e=0)
{
y++;
e=e-2*dx;
}
}
}
void CFill4Dlg::CirclePoints(int x,int y,int m,int n,int color)
{
CClientDC dc(this);
dc.SetPixel(x+m_cx,y+m_cy,color);
dc.SetPixel(y+m_cx,x+m_cy,color);
dc.SetPixel(-x+m_cx,y+m_cy,color);
dc.SetPixel(y+m_cx,-x+m_cy,color);
dc.SetPixel(x+m_cx,-y+m_cy,color);
dc.SetPixel(-y+m_cx,x+m_cy,color);
dc.SetPixel(-x+m_cx,-y+m_cy,color);
dc.SetPixel(-y+m_cx,-x+m_cy,color);
}
void CFill4Dlg::MidPointCircle(int r,int m,int n,int color)
{
int x,y;
float d;
x=0;
y=r;
d=float(1.25-r);
CirclePoints(x,y,m,n,color);
while(x=y)
{
if(d0)
d+=2*x+3;
else
{
d+=2*(x-y)+5;
y--;
}
x++;
CirclePoints(x,y,m,n,color);
}
}
2 填充:
种子设定 filled_color=getpixel(m_zx,m_zy);
typedef struct
{//记录种子点
int x;
int y;
}seed;
seed * seed_p;
#define STACKTOTAL 3000
void stack_init();
void setstackempty();
void stackpush(seed pt);
seed stackpop();
bool isstackempty();
int stack_number;
填充:
void CFill4Dlg::FloodFill4(int x,int y,int oldcolor,int newcolor)
{
CClientDC dc(this);
if((int)dc.GetPixel(x,y)==oldcolor)
{
drawpixel(x,y,newcolor);
FloodFill4(x,y+1,oldcolor,newcolor);
FloodFill4(x,y-1,oldcolor,newcolor);
FloodFill4(x-1,y,oldcolor,newcolor);
FloodFill4(x+1,y,oldcolor,newcolor);
}
}
void CFill4Dlg::drawpixel(int x, int y, int color)
{
CClientDC dc(this);
dc.SetPixel(x,y,color);
}
C语言画图画出图形后如何填充颜色?
#includegraphics.h
#includestdlib.h
main( )
{
int gd=DETECT,gm;
int z,*w,i;
initgraph(gd,gm,"");
setbkcolor(GREEN);
setcolor(RED);
circle(200,200,50);
setcolor(RED);
circle(200,200,30);
setfillstyle(1,YELLOW);
floodfill(200,160,RED);
getch( );
closegraph( );
}
setfillstyle是填充,里面1的填充模式,YELLOW是颜色
floodfill(x,y,z) x,y分别是x坐标,y坐标,只需要在填充的闭合图形里面的任意一点即可,z是最边间曲线的颜色。