C language must recite 18 classic programs (including free source code)

Posted by unknown101 on Mon, 13 Dec 2021 04:37:38 +0100

1, C language must recite 18 classic programs

The thousands or even tens of thousands of lines of C language program code you see are written with some basic statements and keywords. But their logic functions are different. How to quickly get started with C language code? It is recommended to read and write more. The following is a small compilation of C language, which must recite 18 classic programs.

2, C language must recite 18 classic programs

C language source code, WeChat, the official account: C and C plus reply: "source code" can be obtained.

1. Output 9 * 9 Dharma formula. There are 9 rows and 9 columns in total, i control row and j control column.

#include "stdio.h"
main()
{int i,j,result;
 for (i=1;i<10;i++)
   { for(j=1;j<10;j++)
       {
          result=i*j;
          printf("%d*%d=%-3d",i,j,result);/*-3d Indicates left alignment, accounting for 3 digits*/
       }
      printf("\n");/*Wrap after each line*/
   }
}

2. The function of the following program is to put a 4 × The array of 4 is output after rotating 90 degrees counterclockwise. The data of the original array is required to be input randomly. The new array is output in the form of 4 rows and 4 columns. Please improve the program in the blank space.

#include <stdio.h>
main()
{  int  a[4][4],b[4][4],i,j;       /*a Store the original array data and b store the rotated array data*/
   printf("input 16 numbers: ");
/*Input a set of data and store it in array a, and then rotate it and store it in array b*/
   for(i=0;i<4;i++)
       for(j=0;j<4;j++)
       {  scanf("%d",&a[i][j]);
          b[3-j][i]=a[i][j];
        }
   printf("array b:\n");
   for(i=0;i<4;i++)
      {  for(j=0;j<4;j++)
         printf("%6d",b[i][j]);
         printf("\n");
       }
}

3. Classical problem

There is a pair of rabbits. They give birth to a pair of rabbits every month from the third month after birth. When the little rabbits grow to the third month, they give birth to another pair of rabbits every month. If the rabbits do not die, what is the total number of rabbits every month?
The rule of rabbits is sequence 1,1,2,3,5,8,13,21

#include <stdio.h>
main()
{
long f1,f2;
int i;
f1=f2=1;
for(i=1;i<=20;i++)
  { printf("%12ld %12ld",f1,f2);
     if(i%2==0) printf("\n");/*Control output, four per line*/
     f1=f1+f2; /*The first two months add up to the third month*/
     f2=f1+f2; /*The first two months add up to the third month*/
   }
}

4. Judge how many primes there are between 101-200, and output all primes and the number of primes.

Program analysis: method of judging prime numbers: use a number to remove 2 to sqrt (this number) respectively. If it can be divided, it indicates that this number is not a prime number, on the contrary, it is a prime number.

#include "math.h"
main()
{
  int m,i,k,h=0,leap=1;
  printf("\n");
  for(m=101;m<=200;m++)
   { k=sqrt(m+1);
     for(i=2;i<=k;i++)
       if(m%i==0)
          {leap=0;break;}
       if(leap)    /*After the inner loop ends, if leap is still 1, then m is a prime number*/ 
          {printf("%-4d",m);h++;
           if(h%10==0)
               printf("\n");
          }
     leap=1;
   }
  printf("\nThe total is %d",h);
}

5. If a number is exactly equal to the sum of its factors, it is called "perfect".

For example, 6 = 1 + 2 + 3 Program to find all completions within 1000.

#include <stdio.h>
main()
{
  static int k[10];
  int i,j,n,s;
  for(j=2;j<1000;j++)
    {
     n=-1;
     s=j;
     for(i=1;i<j;i++)
       {if((j%i)==0)
          {  n++;
             s=s-i;
             k[n]=i;
          }
       }
  if(s==0)
   {printf("%d is a wanshu:  ",j);
    for(i=0;i<n;i++)
        printf("%d,",k[i]);
    printf("%d\n",k[n]);
   }
}
}

Operation results

6. Programming and printing right angle Yanghui triangle

#include <stdio.h>
main()
{int i,j,a[6][6];
 for(i=0;i<=5;i++)
  {a[i][i]=1;a[i][0]=1;}
 for(i=2;i<=5;i++)
    for(j=1;j<=i-1;j++)
     a[i][j]=a[i-1][j]+a[i-1][j-1];
 for(i=0;i<=5;i++)
    {for(j=0;j<=i;j++)
        printf("%4d",a[i][j]);
     printf("\n");}
}

7. Input the scores of 3 students and 4 courses through the keyboard to calculate the average score of each student and the average score of each course respectively.

All scores are required to be put into an array of 4 rows and 5 columns. When entering, use spaces between the data of the same person and press enter for different people. The last column and last row respectively put the average score of each student, the average score of each course and the total average score of the class.

#include <stdio.h>
#include <stdlib.h>
main()
{ float a[4][5],sum1,sum2;
  int i,j;
  for(i=0;i<3;i++)
    for(j=0;j<4;j++)
      scanf("%f",&a[i][j]);
  for(i=0;i<3;i++)
  { sum1=0;
    for(j=0;j<4;j++)
      sum1+=a[i][j];
      a[i][4]=sum1/4;
  }
  for(j=0;j<5;j++)
  {  sum2=0;
     for(i=0;i<3;i++)
       sum2+=a[i][j];
       a[3][j]=sum2/3;
   }
   for(i=0;i<4;i++)
   {  for(j=0;j<5;j++)
      printf("%6.2f",a[i][j]);
      printf("\n");
   }
}

8. Improve the program to output the input string in reverse order, such as windows and swodniw.

#include <string.h>
main()
{  char  c[200],c1;
   int i,j,k;
   printf("Enter a string: ");
   scanf("%s",c);
   k=strlen(c);
   for (i=0,j=k-1;i<k/2;i++,j--)
     {  c1=c[i];c[i]=c[j];c[j]=c1;  }
   printf("%s\n",c);         
}

Pointer method:

void invert(char *s)
{int i,j,k;
 char t;
 k=strlen(s);
 for(i=0,j=k-1;i<k/2;i++,j--)
 {  t=*(s+i);  *(s+i)=*(s+j);  *(s+j)=t; }
}
main()
{ FILE *fp;
char str[200],*p,i,j;
if((fp=fopen("p9_2.out","w"))==NULL) 
     { printf("cannot open the file\n");
       exit(0);                       
     }
   printf("input str:\n");
gets(str);
   printf("\n%s",str);
fprintf(fp,"%s",str);
invert(str);
    printf("\n%s",str);
fprintf(fp,"\n%s",str);
  fclose(fp);
}

9. The function of the following program is to delete the characters stored in c from the character array s.

#include <stdio.h>
main()
{  char  s[80],c;
   int  j,k;
   printf("\nEnter a string: ");
   gets(s);
   printf("\nEnter a character: ");
   c=getchar( );
   for(j=k=0;s[j]!= '\0';j++)
   if(s[j]!=c)
      s[k++]=s[j];
   s[k]= '\0';
   printf("\n%s",s);
}

10. Write a void sort(int *x,int n) to sort the N data in the X array from large to small. N and array elements are entered in the main function. The results are displayed on the screen and output to a file p9_1.out

#include<stdio.h>
void sort(int *x,int n)
{
int i,j,k,t;
for(i=0;i<n-1;i++)
{
 k=i;
 for(j=i+1;j<n;j++)
   if(x[j]>x[k]) k=j;
   if(k!=i)
   {
    t=x[i];
    x[i]=x[k];
    x[k]=t;
   }
}
}
void main()
{FILE *fp;
     int *p,i,a[10];
     fp=fopen("p9_1.out","w");                       
    p=a;
printf("Input 10 numbers:");
for(i=0;i<10;i++)
  scanf("%d",p++);
p=a;
sort(p,10);
for(;p<a+10;p++)
 {  printf("%d ",*p);
        fprintf(fp,"%d ",*p);  }
        system("pause"); 
    fclose(fp);
}

Output:

11. It is known that the elements in array a have been arranged from small to large. The function of the following program is to insert an input number into array A. after insertion, the elements in array a are still arranged from small to large

main()
    {  int a[10]={0,12,17,20,25,28,30};       /*a[0]As a work unit, store data from a[1]*/
       int  x , i, j=6;                         /*j Is the number of elements*/
       printf("Enter a number: ");  
       scanf("%d",&x);
       a[0]=x;
       i=j;                               /*Start with the last unit*/
       while(a[i]>x)
       {  a[i+1]=a[i]; i--;    }   /*Move the number greater than x back one position*/
       a[++i]=x;
       j++;                       /*After inserting x, the total number of elements increases*/
       for(i=1;i<=j;i++) printf("%8d",a[i]);
       printf("\n");
}

Output:

12. Write the function replace(char *s,char c1,char c2) to replace all characters c1 in the string pointed to by s with c2. The string, characters c1 and c2 are input in the main function. The original string and the replaced string are displayed on the screen and output to the file p10_2.out

#include<stdio.h>
replace(char *s,char c1,char c2)
{ while(*s!='\0')
   {  if (*s==c1)
         *s=c2;
         s++;  
   }
}
main()
{ FILE *fp; 
  char str[100],a,b;
   if((fp=fopen("p10_2.out","w"))==NULL) 
      { printf("cannot open the file\n");
       exit(0);                     }
   printf("Enter a string:\n");
    gets(str);
    printf("Enter a&&b:\n");
    scanf("%c,%c",&a,&b);
printf("%s\n",str);
fprintf(fp,"%s\n",str);
replace(str,a,b);
printf("The new string is----%s\n",str);
fprintf(fp,"The new string is----%s\n",str);
fclose(fp);
}

13. Find a substring s2 in a string s1, and if it exists, return the starting position of the substring in the main string
If it does not exist, - 1 is returned.

main()
{char s1[6]="thisis";char s2[5]="is";
printf("%d\n",search(s1,s2));
system("pause");
}
int search(char s1[],char s2[])
{int i=0,j,len=strlen(s2);
while(s1[i]){
 for(j=0;j<len;j++)
 if(s1[i+j]!=s2[j]) break;
 if(j>=len)return i;
 else i++;
 }
return -1;
}

14. Output structure array elements with pointer variables.

struct student
{
 int num;
 char *name;
char sex;
int age;
}stu[5]={{1001,"lihua",'F',18},{1002,"liuxing",'M',19},{1003,"huangke",'F',19},{1004,"fengshou",'F',19},{1005,"Wangming",'M',18}};
main()
{int i;
struct student *ps;
printf("Num \tName\t\t\tSex\tAge\t\n");    
/*Output structure array elements with pointer variables.*/
for(ps=stu;ps<stu+5;ps++)
printf("%d\t%-10s\t\t%c\t%d\t\n",ps->num,ps->name,ps->sex,ps->age);
/*Use the array subscript method to output the student number and age of the array elements of the structure.*/
for(i=0;i<5;i++)
printf("%d\t%d\t\n",stu[i].num,stu[i].age);
}

15. Create a simple linked list with three nodes:

#define NULL 0
struct student
{ 
int num;
char *name;
int age ;
struct student *next;
};
void main()
{
struct student a,b,c,*head,*p;
a.num=1001; a.name="lihua"; a.age=18;  /*  Assign values to node members  */
b.num=1002; b.name="liuxing"; b.age=19;
c.num=1003; c.name="huangke"; c.age=18;
head=&a;                           /*  Establish a linked list with a as the head node  */
a.next=&b;
b.next=&c;
c.next=NULL;
p=head;                            /*  Output linked list  */
do{
printf("%5d,%s,%3d\n",p->num,p->name,p->age);
p=p->next;
}while(p!=NULL);
}

16. Bubble sorting, from small to large, and the sorted results are output to the screen and file myf2 out

#include<stdio.h>
void fun(int a[],int n)
{int i,j,t;
for(i=0;i<=n-1;i++)
  for(j=0;j<i;j++)
    if(a[j]>a[j+1]) {t=a[j];a[j]=a[j+1];a[j+1]=t;}
}
main()
{int a[10]={12,45,7,8,96,4,10,48,2,46},n=10,i;
FILE *f;
if((f=fopen("myf2.out","w"))==NULL)
   printf("open file myf2.out failed!\n");
fun(a,10);
for(i=0;i<10;i++)
   {printf("%4d",a[i]);
    fprintf(f,"%4d",a[i]);
   }
fclose(f);
}

output

17. Enter a string to determine whether it is a palindrome. Palindrome strings are strings that are read from left to right and read exactly the same from right to left.

#include <stdio.h>
#include <string.h>
#include<string.h>
main()
{ char s[100];
  int i,j,n;
  printf("Input string:\n");
  gets(s); 
  n=strlen(s);
  for(i=0,j=n-1;i<j;i++,j--)
    if(s[i]!=s[j])   break;
  if(i>=j) printf("It's a palindrome string\n");
  else     printf("Not a palindrome string\n");
}

18. Write the function countpi and use the formula to calculate the approximate value of π

When the value of a certain item is less than 10-5, it is considered to meet the accuracy requirements. Please improve the function. The results are displayed on the screen and output to a file p7_3.out.

#include<stdio.h>
double countpi(double eps)               /*eps Is the allowable error*/
  {
    int m=1;
     double temp=1.0,s=0;
     while(temp>=eps)
     {  s+=temp;
        temp=temp*m/(2*m+1);
        m++;
     }
     return(2*s);
  }
main()
{FILE *fp;
     double eps=1e-5,pi;
     if((fp=fopen("p7_3.out","w"))==NULL)  
   { printf("cannot open the file\n");
     exit(0);                       
   }
   pi= countpi(eps);
   printf("pi=%lf\n",pi);
fprintf(fp,"pi=%lf\n",pi);
fclose(fp);
}

3, Bloggers have compiled a large number of C language source code into a compressed package

Pay attention to WeChat official account: C and C plus reply: "source code" can be obtained.

 

Topics: C Back-end