It is the 25th day of my participation in the August Text Challenge.More challenges in August
[Procedure 61]
Title: Print out Yang Hui triangle (10 lines are required as shown below)
- Program analysis:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
Copy the code
- Program source code:
#include "stdio.h"
#include "conio.h"
main()
{
int i,j;
int a[10] [10];
printf("\n");
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("%5d",a[i][j]);
printf("\n");
}
getch(a); }Copy the code
[Procedure 62]
Learn putPixel to draw points.
- Program analysis:
Putpixel: Draw a pixel at the specified position
void far putpixel (int x, int y, int pixelcolor);
Copy the code
Where (x,y) is the coordinate and pixelcolor is the color of the pixel. 2. Program source code:
#include "stdio.h"
#include "conio.h"
#include "graphics.h"
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);
getch(a); }Copy the code
[Procedure 63]
Title: Draw ellipse ellipse
- Program analysis:
Ellipse () draws an ellipse arc function
Function ellipse() draws an ellipse using the current drawing color.
Usage: This function is called as
void ellipse(int x,int y,int startangle,int endangle,
int xradius,int yradius);
Copy the code
Description: Parameters x,y are the center coordinates of the ellipse, startAngle and endAngle are the given starting and ending angles, xradius and yradius are the X-axis radius and Y-axis radius of the ellipse, if startAngle is 0 and EndAngle is 360 degrees, then a complete ellipse is drawn. Unlike arc() and Circle (), the ellipse() function does not automatically adjust the aspect ratio of the screen. If a proportional radius is required rather than a specific pixel distance, the y axis distance must be adjusted to yradius*aspectratio(y axis radius multiplied by aspectratio). The corresponding header file for this function is graphics.h return value: none
- Program source code:
#include "stdio.h"
#include "graphics.h"
#include "conio.h"
main()
{
int x=260,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(x,250.0.360,top,bottom);
top-=5;
bottom+=5;
}
getch(a); }Copy the code
【 Procedure 64】
Draw a picture using ellipse and Rectangle.
- Program analysis:
Rectangle is a function that draws a Rectangle, the outline of which can be drawn with the current brush and filled with the current brush. Function:
Function prototype:
BOOL Rectangle(HDC hdc, int nLeftRect, int nTopRect, int nRightRect, int nBottomRect);Copy the code
Parameter: HDC: device environment handle. NLeftRect: Specifies the logical X-coordinate of the top left corner of the rectangle. NTopRect: Specifies the logical y-coordinate of the top left corner of the rectangle. NRightRect: Specifies the logical X coordinate of the bottom right corner of the rectangle. NBottomRect: Specifies the logical y-coordinate at the bottom right corner of the rectangle. Return value: Non-zero if the function call is successful, 0 otherwise. Windows NT: For more error information, call the GetLastError function. Note: This function does not use and change the current position. Quick check: Windows NT: 3.1 and later; Windows: 95 or later; Windows CE: 1.0 and later; Header file: wingdi.h; Library file: gdi32.lib.
- Program source code:
#include "stdio.h"
#include "graphics.h"
#include "conio.h"
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(202 -*i,202 -*i,10*(i+2),10*(i+2));
right+=5;
left+=5;
top+=10;
}
getch(a); }Copy the code
[Procedure 65]
Title: A most beautiful design.
- Program analysis:
Getviewsetting returns information about the current viewport. So MoveTo is a function that draws lines, MoveTo is a function that moves to a certain coordinate, and LineTo is a function that moves from the current coordinate to the current coordinate. These two functions add up to draw a line. 2. Program source code:
#include "graphics.h"
#include "math.h"
#include "dos.h"
#include "conio.h"
#include "stdlib.h"
#include "stdio.h"
#include "stdarg.h"
#define MAXPTS 15
#define3.1415926 PI?
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 */}}}main()
{
intdriver,mode; driver=CGA; mode=CGAC0;initgraph(&driver,&mode,"");
setcolor(3);
setbkcolor(GREEN);
LineToDemo(a);getch(a); }Copy the code
[Procedure 66]
Input 3 numbers a, B, and C in order of size.
- Program analysis: use pointer method. Compare them one by one.
- Program source code:
/*pointer*/
#include "stdio.h"
#include "conio.h"
main()
{
int n1,n2,n3;
int *pointer1,*pointer2,*pointer3;
printf("please input 3 number:n1,n2,n3:");
scanf("%d,%d,%d",&n1,&n2,&n3);
pointer1=&n1;
pointer2=&n2;
pointer3=&n3;
if(n1>n2) swap(pointer1,pointer2);
if(n1>n3) swap(pointer1,pointer3);
if(n2>n3) swap(pointer2,pointer3);
printf("the sorted numbers are:%d,%d,%d\n",n1,n2,n3);
getch(a); }swap(p1,p2)
int *p1,*p2;
{
int p;
p=*p1;
*p1=*p2;
*p2=p;
}
Copy the code
[Procedure 67]
Title: Input array, swap the largest with the first element, swap the smallest with the last element, output array.
- Program analysis: the array is contiguous in memory, you can loop through the array data, find the largest element and the smallest element, remember the subscript, and then swap places.
- Program source code:
#include "stdio.h"
#include "conio.h"
main()
{
int number[10];
input(number);
max_min(number);
output(number);
getch(a); }input(number)
int number[10];
{
int i;
for(i=0; i<9; i++)scanf("%d,",&number[i]);
scanf("%d",&number[9]);
}
max_min(array)
int array[10];
{
int *max,*min,k,l;
int *p,*arr_end;
arr_end=array+10;
max=min=array;
for(p=array+1; p<arr_end; p++)if(*p>*max) max=p;
else if(*p<*min) min=p;
k=*max;
l=*min;
*p=array[0]; array[0]=l; l=*p; *p=array[9]; array[9]=k; k=*p;return;
}
output(array)
int array[10];
{
int *p;
for(p=array; p<array+9; p++)printf("%d,",*p);
printf("%d\n",array[9]);
}
Copy the code
[Procedure 68]
There are n integers, so that the preceding numbers move backward by m, and the last m number becomes the first m number
- Program analysis: array storage is continuous, the location in memory is continuous, move only need to swap positions on the line.
- Program source code:
#include "stdio.h"
#include "conio.h"
main()
{
int number[20],n,m,i;
printf("the total numbers is:");
scanf("%d",&n);
printf("back m:");
scanf("%d",&m);
for(i=0; i<n- 1; i++)scanf("%d,",&number[i]);
scanf("%d",&number[n- 1]);
move(number,n,m);
for(i=0; i<n- 1; i++)printf("%d,",number[i]);
printf("%d",number[n- 1]);
getch(a); }move(array,n,m)
int n,m,array[20];
{
int *p,array_end;
array_end=*(array+n- 1);
for(p=array+n- 1; p>array; p--) *p=*(p- 1);
*array=array_end;
m--;
if(m>0)
move(array,n,m);
}
Copy the code
[Procedure 69]
Title: There are n people in a circle, and they are numbered in order. Count off from the first person (counting from 1 to 3). If the person reporting for 3 leaves the circle, ask who was left last.
- Program analysis: through the topic to get the report is 3 to exit, the program is good design logic.
- Program source code:
#include "stdio.h"
#include "conio.h"
#define nmax 50
main()
{
int i,k,m,n,num[nmax],*p;
printf("please input the total of numbers:");
scanf("%d",&n);
p=num;
for(i=0; i<n; i++) *(p+i)=i+1;
i=0;
k=0;
m=0;
while(m<n- 1)
{
if(*(p+i)! =0) k++;
if(k==3)
{
*(p+i)=0;
k=0;
m++;
}
i++;
if(i==n) i=0;
}
while(*p==0) p++;
printf("%d is left\n",*p);
getch(a); }Copy the code
[Procedure 70]
Write a function to find the length of a string, enter the string in the main function, and print its length.
- Program analysis: the end of the string identifier is ‘\0’, just need to check whether the loop reaches ‘\0’ to get the string length.
- Program source code:
#include "stdio.h"
#include "conio.h"
main()
{
int len;
char *str[20];
printf("please input a string:\n");
scanf("%s",str);
len=length(str);
printf("the string has %d characters.",len);
getch(a); }length(p)
char *p;
{
int n;
n=0;
while(*p! ='\ 0')
{
n++;
p++;
}
return n;
}
Copy the code