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)

  1. 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
  1. 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.

  1. 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

  1. 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

  1. 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.

  1. 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.

  1. 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.

  1. 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.

  1. Program analysis: use pointer method. Compare them one by one.
  2. 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.

  1. 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.
  2. 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

  1. Program analysis: array storage is continuous, the location in memory is continuous, move only need to swap positions on the line.
  2. 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.

  1. Program analysis: through the topic to get the report is 3 to exit, the program is good design logic.
  2. 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.

  1. Program analysis: the end of the string identifier is ‘\0’, just need to check whether the loop reaches ‘\0’ to get the string length.
  2. 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