#include stdio.h
创新互联建站网站建设公司,提供成都网站设计、网站制作,网页设计,建网站,PHP网站建设等专业做网站服务;可快速的进行网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,是专业的做网站团队,希望更多企业前来合作!
int IsCircle(int n) //判断n是不是循环数
{
int cir[6],cirtemp[6]; //本题中输入最大为6位数
int i=0,j,k=0,count=0;
while(n0) //把n的每一位一次放入数字cirtemp中(反序)
{
count++; //计数
cirtemp[i++]=n%10;
n=n/10;
}
for(i=0;icount;i++) //把顺序还原回来(直接用反序也可以,只是还原回看后面的代码会好理解些)
cir[i]=cirtemp[count-i-1];
for(i=0;icount;i++) //是几位数总共就要循环几次
{
j=cir[k]; //向前右j步
k=(k+j)%count; //走完后的下标
}
if(k==0) //循环完刚好回到第一个数,这个数是循环数
return 1;
else
return 0;
}
int main()
{
int n,i=0;
printf("请输入一个数(9<这个数<999589):\n"); //按题意这行可以删去
scanf("%d",n);
while(1)
{
if(IsCircle(n+i)==1)
{
printf("%d\n",n+i);
break;
}
else if(IsCircle(n-i)==1)
{
printf("%d\n",n-i);
break;
}
i++;
}
return 0;
}
严格来说我这个程序还不严谨,IsCircle中判断k是否遍历了0,1,2,……count这些自然数来判断是否是循环数更准确,毕竟可能会有巧合使得循环完后回到了第一个数(下标k=0)但是却在中途有一个数没有作为起点和终点(只是觉得有可能,具体是否可能需要证明)。
其实也不难把k的每一个值都加起来如果=1+2+3+……+count,且最后k=0就可以了
还有就是输入的时候最好判断一下输入是否规范 9<数<999589
#includestdio.h
#define PI 3.14159
double circle(double r0);
main()
{double r,circle1;br/printf("输入圆的半径\n");br/scanf("%lf",r);br/ circle1=circle(r);br/ printf("园的周长为%lf",circle1);br/}
double circle(double r0)
{double num;br/num=2*PI*r0;br/return num;}
graphics.h 是 tc 下的,vc 下你安装了 easyx 也就有了,然后画圆这样:
#include graphics.h // 引用图形库
#include conio.h
void main()
{
initgraph(640, 480); // 初始化图形窗口
circle(100, 100, 60); // 画圆,圆心(100, 100),半径 60
getch(); // 按任意键继续
closegraph(); // 关闭图形界面
}
好了 下面程序即可运行
#include math.h
#includestdio.h
typedef struct point
{
double x;
double y;
}Point;
typedef struct circle
{
Point p;
double radius;
}Circle;
double Distance(Point p1,Point p2);//得到两点间的距离
double GetCircum(Circle c);//得到圆c周长
double GetArea(Circle c);//得到圆c面积
double Function(Circle c1,Circle c2);//如果它们是相离或相切关系(没有公共部分),则返回这两个圆的面积之和,否则返回0。
void main()
{
Point p1,p2;
Circle c1,c2;
int i;
for(i=1;i=10;i++)
{
c1.radius=i;
c2.radius=5;
p1.x=i; p1.y=i;
p2.x=18;p2.y=18;
c1.p=p1;c2.p=p2;
printf("%.2f,%.2f\n",GetCircum(c1)+GetCircum(c2),Function(c1,c2));
}
}
//--------------------------------------------------------------
/*注意!线上面的内容是不能够更改的*/
double Distance(Point p1,Point p2)//得到两点间的距离
{
return sqrt((p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y));
}
double GetCircum(Circle c)//得到圆c周长
{
return 2*3.14*c.radius;
}
double GetArea(Circle c)//得到圆c面积
{
return 3.14*c.radius*c.radius ;
}
double Function(Circle c1,Circle c2)//如果它们是相离或相切关系(没有公共部分),则返回这两个圆的面积之和,否则返回0。
{
if(Distance(c1.p,c2.p)=(c1.radius+c2.radius)){
return GetArea(c1)+GetArea(c2);
}
else return 0;
}
circle函数是TURBO C提供的图形接口,用来画圆。不属于标准库函数,不具备可移植性。
函数名:circle
功 能: 在给定半径以(x, y)为圆心画圆
用 法:void far circle(int x, int y, int radius)
随时间变化,可以用cleardevice函数清除屏幕,不断画半径不同的圆。看起来就像是一个随时间变化的圆形。
函数名: cleardevice
功 能: 清除图形屏幕
用 法: void far cleardevice(void);
例程:
#include graphics.h
#include stdlib.h
#include stdio.h
#include conio.h
int main(void)
{
/* request auto detection */
int gdriver = DETECT, gmode, errorcode;
int midx, midy;
int radius = 100;
/* initialize graphics and local variables */
initgraph(gdriver, gmode, "");
/* read result of initialization */
errorcode = graphresult();
if (errorcode != grOk) /* an error occurred */
{
printf("Graphics error: %s\n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1); /* terminate with an error code */
}
midx = getmaxx() / 2;
midy = getmaxy() / 2;
setcolor(getmaxcolor());
for(i=0;i1000000;i++) if(i%50000==0){
cleardevice();/* clean the screen */
circle(midx, midy, radius--);/* draw the circle */
}
getch();
closegraph();
return 0;
}
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. \n");
exit(EXIT_FAILURE);
printf("xres: %d\n", info.xres);
printf("yres: %d\n", info.yres);
printf("bits_per_pixel: %d\n", 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. \n");