18 Classic C Programs You Must Memorize

1、/*Output the 9*9 multiplication table. There are 9 rows and 9 columns, with i controlling the rows and j controlling the columns.*/

#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 means left-aligned, occupying 3 spaces*/

}

printf(“\n”);/*Line break after each row*/

}

}

2、/*Classical problem: There is a pair of rabbits, starting from the third month after birth, each month they produce a pair of rabbits. The young rabbits, after reaching the third month, also produce a pair of rabbits each month. If the rabbits do not die, how many rabbits are there in total each month? The pattern of rabbits is the sequence 1,1,2,3,5,8,13,21….*/

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; /*Assign the sum of the first two months to the third month*/

f2=f1+f2; /*Assign the sum of the first two months to the third month*/

}

}

3、/*Determine how many prime numbers are there between 101 and 200, and output all prime numbers and their count.*/

Program analysis: The method for determining prime numbers: divide a number by all integers from 2 to sqrt(this number). If it can be divided evenly,

then this number is not prime, otherwise it is prime.*/

#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 prime*/

{printf(“%-4d”,m);h++;

if(h%10==0)

printf(“\n”);

}

leap=1;

}

printf(“\nThe total is %d”,h);

}

4、/*A number is called a “perfect number” if it is equal to the sum of its factors. For example, 6=1+2+3. Write a program

to find all perfect numbers within 1000.*/

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 perfect number: “,j);

for(i=0;i<n;i++)

printf(“%d,”,k[i]);

printf(“%d\n”,k[n]);

}

}

}

5、/*The function of the following program is to rotate a 4×4 array counterclockwise by 90 degrees and output it. The original array data is randomly input, and the new array is output in a 4-row 4-column format,

please complete the program in the blank space.*/

main()

{ int a[4][4],b[4][4],i,j; /*a stores the original array data, b stores the rotated array data*/

printf(“input 16 numbers: “);

/*Input a set of data into array a, then rotate 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”);

}

}

6、/*Programming to print a right-angled Yanghui triangle*/

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 in 4 courses through the keyboard,

and calculate the average score for each student and the average score for each course.

All scores should be placed in a 4-row 5-column array, with space between the data of the same person, and different people separated by a newline

The last column and last row respectively store each student’s average score, each course’s average score, and the class’s total average score.*/

#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、/*Complete the program to reverse the input string output,

for example, input windows outputs 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);

}

Using pointers:

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 character 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 function sort(int *x,int n) to sort the n data in the x array from largest to smallest.

n and array elements are input in the main function. Display the results on the screen and output to the 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);

}

11、Given that the elements in array a are arranged in ascending order, the function of the following program is to insert a number into array a, so that the elements in array a remain in ascending order after insertion.*/

main()

{ int a[10]={0,12,17,20,25,28,30}; /*a[0] is a working unit, storing data from a[1] onwards*/

int x , i, j=6; /*j is the number of elements*/

printf(“Enter a number: “);

scanf(“%d”,&x);

a[0]=x;

i=j; /*Start from the last unit*/

while(a[i]>x)

{ a[i+1]=a[i]; i–; } /*Move numbers larger than x back one position*/

a[++i]=x;

j++; /*The total number of elements increases after inserting x*/

for(i=1;i<=j;i++) printf(“%8d”,a[i]);

printf(“\n”);

}

12、/*Write a function replace(char *s,char c1,char c2) to replace all characters c1 in the string pointed to by s with c2. The string, character c1 and c2 are all input in the main function, and display the original string and the replaced string 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、/*In a substring s1, find a substring s2, if it exists, return the starting position of the substring in the main string,

if it does not exist, return -1.*/

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、/*Use pointer variables to output the elements of the structure array.*/

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”);

/*Use pointer variables to output the elements of the structure array.*/

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 array subscript method to output the student number and age of the structure array.*/

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 the node members */

b.num=1002; b.name=”liuxing”; b.age=19;

c.num=1003; c.name=”huangke”; c.age=18;

head=&a; /* Create the linked list, a is the head node */

a.next=&b;

b.next=&c;

c.next=NULL;

p=head; /* Output the linked list */

do{

printf(“%5d,%s,%3d\n”,p->num,p->name,p->age);

p=p->next;

}while(p!=NULL);

}

16、/*Input a string and determine whether it is a palindrome. A palindrome string is a string that reads the same from left to right and from right to left.*/

#include <stdio.h>

#include <string.h>

#include<string.h>

main()

{ char s[100];

int i,j,n;

printf(“Enter a 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 is a palindrome\n”);

else printf(“It is not a palindrome\n”);

}

17、/*Bubble sort, sorting from smallest to largest, output the result to the screen and the 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);

}

18、Write a function countpi to calculate the approximate value of π using the formula, when a certain term’s value is less than 10-5, it is considered to meet the accuracy requirement. Please complete the function. Display the result on the screen and output to the 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);

}

Source: EDN Electronic Technology Design

Leave a Comment