C语言必会100题(13)。打印出杨辉三角形/学习putpixel画点/画椭圆ellipse/利用ellipse and rectangle 画图/一个最优美的图案
特此鸣谢:鱼C_小甲鱼(B站up主)不二如是(鱼C论坛大佬)
题目来源:https://fishc.com.cn
注:这些题在网上都可以搜到,题下面的代码大多是流传下来的答案(我重新排了一下版,增加了可读性),部分是本人经过深思熟虑后编写的。
61,打印出杨辉三角形
- 题目:打印出杨辉三角形(要求打印出10行如下图)
1, 1 2, 1 1 3, 1 2 1 4, 1 3 3 1 5, 1 4 6 4 1 6, 1 5 10 10 5 1 7, 1 6 15 20 15 6 1 8, 1 7 21 35 35 21 7 1 9, 1 8 28 56 70 56 28 8 1 10 1 9 36 84 126 126 84 36 9 1
- 程序源代码:
#include <stdio.h> int main() { int i, j; int a[10][10]; for (i = 0; i < 10; i++){ a[i][0] = 1; a[i][i] = 1; } for (i = 2; i < 10; i++) { for(j = 1; j < i; j++) { a[i][j] = a[i - 1][j - 1] + a[i - 1][j]; } } for (i = 0; i < 10; i++) { for(j = 0; j <= i; j++) { printf("%d ", a[i][j]); if (i == j) { printf("\n"); } } } return 0; }
62,学习putpixel画点
- 题目:学习putpixel画点
- 程序源代码:
//VC6.0中是不能运行的,要在Turbo2.0/3.0中 // 我用的是codeblocks也不能使用,没有graphics文件,网上有教如何安装的,但是我不敢弄 #include "stdio.h" #include "graphics.h" int main() { int i,j,driver=VGA,mode=VGAHI; initgraph(&driver,&mode,""); setbkcolor(YELLOW); for(i=50;i<=230;i+=20) for(j=50;j<=230;j++) putpixel(i,j,1); for(j=50;j<=230;j+=20) for(i=50;i<=230;i++) putpixel(i,j,1); }
63,画椭圆ellipse
- 题目:画椭圆ellipse
- 程序源代码:
//VC6.0中是不能运行的,要在Turbo2.0/3.0中 // 我用的是codeblocks也不能使用,没有graphics文件,网上有教如何安装的,但是我不敢弄 #include "stdio.h" #include "graphics.h" #include "conio.h" int main() { int x=360,y=160,driver=VGA,mode=VGAHI; int num=20,i; int top,bottom; initgraph(&driver,&mode,""); top=y-30; bottom=y-30; for(i=0;i<num;i++) { ellipse(250,250,0,360,top,bottom); top-=5; bottom+=5; } getch(); }
64,利用ellipse and rectangle 画图
- 题目:利用ellipse and rectangle 画图
- 程序源代码
//VC6.0中是不能运行的,要在Turbo2.0/3.0中 // 我用的是codeblocks也不能使用,没有graphics文件,网上有教如何安装的,但是我不敢弄 #include "stdio.h" #include "graphics.h" #include "conio.h" int main() { int driver=VGA,mode=VGAHI; int i,num=15,top=50; int left=20,right=50; initgraph(&driver,&mode,""); for(i=0;i<num;i++) { ellipse(250,250,0,360,right,left); ellipse(250,250,0,360,20,top); rectangle(20-2*i,20-2*i,10*(i+2),10*(i+2)); right+=5; left+=5; top+=10; } getch(); }
65,一个最优美的图案
- 题目:一个最优美的图案
- 程序源代码:
//VC6.0中是不能运行的,要在Turbo2.0/3.0中 // 我用的是codeblocks也不能使用,没有graphics文件,网上有教如何安装的,但是我不敢弄 #include "graphics.h" #include "math.h" #include "dos.h" #include "conio.h" #include "stdlib.h" #include "stdio.h" #include "stdarg.h" #define MAXPTS 15 #define PI 3.1415926 struct PTS { int x,y; }; double AspectRatio=0.85; void LineToDemo(void) { struct viewporttype vp; struct PTS points[MAXPTS]; int i, j, h, w, xcenter, ycenter; int radius, angle, step; double rads; printf(" MoveTo / LineTo Demonstration" ); getviewsettings( &vp ); h = vp.bottom - vp.top; w = vp.right - vp.left; xcenter = w / 2; /* Determine the center of circle */ ycenter = h / 2; radius = (h - 30) / (AspectRatio * 2); step = 360 / MAXPTS; /* Determine # of increments */ angle = 0; /* Begin at zero degrees */ for( i=0 ; i<MAXPTS ; ++i ){ /* Determine circle intercepts */ rads = (double)angle * PI / 180.0; /* Convert angle to radians */ points[i].x = xcenter + (int)( cos(rads) * radius ); points[i].y = ycenter - (int)( sin(rads) * radius * AspectRatio ); angle += step; /* Move to next increment */ } circle( xcenter, ycenter, radius ); /* Draw bounding circle */ for( i=0 ; i<MAXPTS ; ++i ){ /* Draw the cords to the circle */ for( j=i ; j<MAXPTS ; ++j ){ /* For each remaining intersect */ moveto(points[i].x, points[i].y); /* Move to beginning of cord */ lineto(points[j].x, points[j].y); /* Draw the cord */ } } } int main() {int driver,mode; driver=CGA;mode=CGAC0; initgraph(&driver,&mode,""); setcolor(3); setbkcolor(GREEN); LineToDemo();}