#include?stdio.h
創(chuàng)新互聯(lián)建站網(wǎng)站建設(shè)公司,提供成都網(wǎng)站設(shè)計、網(wǎng)站制作,網(wǎng)頁設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);可快速的進(jìn)行網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,是專業(yè)的做網(wǎng)站團(tuán)隊,希望更多企業(yè)前來合作!
int?IsCircle(int?n)????//判斷n是不是循環(huán)數(shù)
{
int?cir[6],cirtemp[6];???//本題中輸入最大為6位數(shù)
int?i=0,j,k=0,count=0;
while(n0)????????//把n的每一位一次放入數(shù)字cirtemp中(反序)
{
count++;?????//計數(shù)
cirtemp[i++]=n%10;
n=n/10;
}
for(i=0;icount;i++)???//把順序還原回來(直接用反序也可以,只是還原回看后面的代碼會好理解些)
cir[i]=cirtemp[count-i-1];
for(i=0;icount;i++)???//是幾位數(shù)總共就要循環(huán)幾次
{
j=cir[k];?????//向前右j步??????
k=(k+j)%count;????//走完后的下標(biāo)
}
if(k==0)???????//循環(huán)完剛好回到第一個數(shù),這個數(shù)是循環(huán)數(shù)
return?1;
else
return?0;
}
int?main()
{
int?n,i=0;
printf("請輸入一個數(shù)(9<這個數(shù)<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;
}
嚴(yán)格來說我這個程序還不嚴(yán)謹(jǐn),IsCircle中判斷k是否遍歷了0,1,2,……count這些自然數(shù)來判斷是否是循環(huán)數(shù)更準(zhǔn)確,畢竟可能會有巧合使得循環(huán)完后回到了第一個數(shù)(下標(biāo)k=0)但是卻在中途有一個數(shù)沒有作為起點和終點(只是覺得有可能,具體是否可能需要證明)。
其實也不難把k的每一個值都加起來如果=1+2+3+……+count,且最后k=0就可以了
還有就是輸入的時候最好判斷一下輸入是否規(guī)范? 9<數(shù)<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(); // 按任意鍵繼續(xù)
closegraph(); // 關(guān)閉圖形界面
}
好了 下面程序即可運行
#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);//如果它們是相離或相切關(guān)系(沒有公共部分),則返回這兩個圓的面積之和,否則返回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));
}
}
//--------------------------------------------------------------
/*注意!線上面的內(nèi)容是不能夠更改的*/
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)//如果它們是相離或相切關(guān)系(沒有公共部分),則返回這兩個圓的面積之和,否則返回0。
{
if(Distance(c1.p,c2.p)=(c1.radius+c2.radius)){
return GetArea(c1)+GetArea(c2);
}
else return 0;
}
circle函數(shù)是TURBO C提供的圖形接口,用來畫圓。不屬于標(biāo)準(zhǔn)庫函數(shù),不具備可移植性。
函數(shù)名:circle
功 能: 在給定半徑以(x, y)為圓心畫圓
用 法:void far circle(int x, int y, int radius)
隨時間變化,可以用cleardevice函數(shù)清除屏幕,不斷畫半徑不同的圓。看起來就像是一個隨時間變化的圓形。
函數(shù)名: 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(幀緩沖)。
幀的最低數(shù)量為24(人肉眼可見)(低于24則感覺到畫面不流暢)。
顯卡與幀的關(guān)系:由cpu調(diào)節(jié)其數(shù)據(jù)傳輸速率來輸出其三基色的配比。
三基色:RGB(紅綠藍(lán))。
在沒有桌面和圖形文件的系統(tǒng)界面,可以通過C語言的編程來實現(xiàn)在黑色背景上畫圖!
用下面的代碼,在需要的地方(有注釋)適當(dāng)修改,就能畫出自己喜歡的圖形!
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");