IE盒子

搜索
查看: 89|回复: 1

C语言200个经典的程序代码(1-20)

[复制链接]

2

主题

8

帖子

14

积分

新手上路

Rank: 1

积分
14
发表于 2023-3-10 19:55:16 | 显示全部楼层 |阅读模式
目录
01.第一个c程序
02.运行多个源文件
03.求整数之积
04.比较实数大小
05.字符的输出
06.显示变量所占字节数
07.自增自减运算
08.数列求和
09.乘法口诀表
10.猜数字游戏
11.模拟ATM(自动柜员机)界面
12.用一维数组统计学生成绩
13.用二维数组实现矩阵转置
14.求解二维数组的最大最小元素
15.利用数组求前n个质数
16.编制万年历
17.对数组元素排序
18.任意进制数的转换
19.判断回文数
20.求数组前n元素之和
<hr/>01.第一个c程序

代码:

#include <stdio.h>                                /* 包含标准输入输出头文件 */
main()                                                /* 主函数 */
{
                printf("Hello World!\n");        /* 打印输出信息 */
}02.运行多个源文件

代码1:

#include "print.h"

int main(void){
        printHello();
        return 0;
}

代码2:
#include "print.h"

void printHello()
{
        printf("hello word!\n");
}03.求整数之积

代码:

/* Input two numbers, output the product */
#include <stdio.h>
main()
{
                int x,y,m;                                /* 定义整型变量x,y,m */
                printf("Please input x and y\n");        /* 输出提示信息 */
                scanf("%d%d",&x,&y);                        /* 读入两个乘数,赋给x,y变量 */
                m=x*y;                                        /* 计算两个乘数的积,赋给变量m */
                printf("%d * %d = %d\n",x,y,m);                /* 输出结果 */
}04.比较实数大小

代码:

/* 输入两个浮点数,输出它们中的大数 */
#include <stdio.h>
main()
{
        float x,y,c;                                /* 变量定义 */
        printf("Please input x and y:\n");        /* 提示用户输入数据 */
        scanf("%f%f",&x,&y);
        c=x>y?x:y;                                /* 计算c=max(x,y) */
        printf("MAX of (%f,%f) is %f",x,y,c);        /* 输出c */
}05.字符的输出

代码:

#include <stdio.h>
main()
{
        char ch,nch;        /* */
        int count;        /* */
        int k;                /* */

        printf("Please input a string with a # in the end.\n");
        scanf("%c",&ch);        /* */
        while(ch != '#')        /* */
        {
                if(ch >= '0' && ch <= '9')
                {
                        /* */
                        count = ch-'0'+1;        /* */
                        scanf("%c",&nch);        /* */
                        for(k=0;k<count;k++)        /* */
                                printf("%c",nch);
                }
                else
                        printf("%c",ch);        /* */
                printf(" ");                        /* */
                scanf("%c",&ch);                /* */
        }
        printf("#\n");                                /* */
}06.显示变量所占字节数

代码:

/* 输出不同类型所占的字节数*/
#include <stdio.h>
void main()
{
    /* sizeof()是保留字,它的作用是求某类型或某变量类型的字节数, */
    /* 括号中可以是类型保留字或变量。*/
    /*int型在不同的机器,不同的编译器中的字节数不一样,*/
    /*一般来说在TC2.0编译器中字节数为2,在VC编译器中字节数为4 */
    printf("The bytes of the variables are:\n");
    printf("int:%d bytes\n",sizeof(int));
    /* char型的字节数为1 */
    printf("char:%d byte\n",sizeof(char));
    /* short型的字节数为2 */
    printf("short:%d bytes\n",sizeof(short));
    /* long型的字节数为4 */
    printf("long:%d bytes\n",sizeof(long));
    /* float型的字节数为4 */
    printf("float:%d bytes\n",sizeof(float));
    /* double型的字节数为8 */
    printf("double:%d bytes\n",sizeof(double));
    /* long double型的字节数为8或10或12 */
    printf("long double:%d bytes\n",sizeof(long double));
    getchar();

}07.自增自减运算

代码:

#include <stdio.h>
main()
{
        int a = 5, b, c, i = 10;
        b = a++;
        c = ++b;

        printf("a = %d, b = %d, c = %d\n", a, b, c);
        printf("i,i++,i++ = %d,%d,%d\n", i, i++, i++);
        printf("%d\n", ++i);
        printf("%d\n", --i);
        printf("%d\n", i++);
        printf("%d\n", i--);
        printf("%d\n", -i++);
        printf("%d\n", -i--);
        getchar();
}08.数列求和

代码:

#include <stdio.h>
main()
{
        int i,j,n;
        long sum=0,temp=0;

        printf("Please input a number to n:\n");
        scanf("%d",&n);
        if(n<1)
        {
                printf("The n must no less than 1!\n");
                return;
        }

        for(i=1;i<=n;i++)
        {
                temp=0;
                for(j=1;j<=i;j++)
                        temp+=j;
                sum+=temp;
        }
        printf("The sum of the sequence(%d) is %d\n",n,sum);
        getchar();
        getchar();
}09.乘法口诀表

代码:

#include <stdio.h>
#include <conio.h>
void main(void)
{
        int i,j,x,y;
        clrscr();
        printf("\n\n  * * * 乘法口诀表 * * * \n\n");
        x=9;
        y=5;
        for(i=1;i<=9;i++)
        {
                gotoxy(x,y);
                printf("%2d ",i);
                x+=3;
        }
        x=7;
        y=6;
        for(i=1;i<=9;i++)
        {
                gotoxy(x,y);
                printf("%2d ",i);
                y++;
        }
        x=9;
        y= 6;
        for(i=1;i<=9;i++)
        {
                for(j=1;j<=9;j++)
                {
                        gotoxy(x,y);
                        printf("%2d ",i*j);
                        y++;
                }
                y-=9;
                x+=3;
        }
        printf("\n\n");
}10.猜数字游戏

代码:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>//time系统时间头文件
void menu()//创建游戏菜单
{
        printf("**************\n");
        printf("****1.play****\n");
        printf("****0.exit****\n");
        printf("**************\n");
}
void playgame()
{
        int magic = rand() % 100 + 1;//随机一个1-100的整数
        int guess;
        int counter = 0;//计数器,初始为0
        while (1)
        {
                do {
                        printf("请猜一个数字:");//提示用户进行猜数字游戏,输入一个整数
                        scanf("%d", &guess);
                        counter++;
                        if (guess > magic)//根据比较结果,提示用户高了,低了,或是猜对了.
                                printf("太大了!\n");
                        else if (guess < magic)
                                printf("太小了!\n");
                        else
                                printf("right!\n");
                } while (guess != magic);
                printf("您一共猜了%d次,你真是太棒了!\n", counter);
        }
}
int main()
{
        int input = 0;
        srand((unsigned int)time(0));//time(0)得到的是时间戳,对应头文件#include <time.h>
        do {
                menu();
                scanf("%d", &input);
                switch (input)
                {
                case 1:
                        playgame();
                        break;
                case 0:
                        exit(0);
                        break;
                default:
                        printf("输入错误!\n");
                }
        } while (input);
        return 0;
}11.模拟ATM(自动柜员机)界面

代码:

#include <stdio.h>

void main()
{
        int Password=0,Number=0,price=58,i=0;

        while( Password != 1234 )
        {
                if( i >= 3 )
                        return;
                i++;
                puts("Please input Password: ");
                scanf("%d",&Password);
        }

        i=0;
        while( Number!=price )
        {
                do{
                        puts("Please input a number between 1 and 100: ");
                        scanf("%d",&Number);
                        printf("Your input number is %d\n",Number);
                }while( !(Number>=1 && Number<=100) );
                if( Number >= 90 )
                {
                        printf("Too Bigger! Press any key to try again!\n");
                }
                else if( Number >= 70 && Number < 90 )
                {
                        printf("Bigger!\n");
                }
                else if( Number >= 1 && Number <= 30 )
                {
                        printf("Too Small! Press any key to try again!\n");
                }
                else if( Number > 30 && Number <= 50 )
                {
                        printf("Small! Press any key to try again!\n");
                }
                else
                {
                        if( Number == price )
                        {
                                printf("OK! You are right! Bye Bye!\n");
                        }
                        else if( Number < price )
                        {
                                printf("Sorry,Only a little smaller! Press any key to try again!\n");

                        }
                        else if( Number > price )
                                printf(" Sorry, Only a little bigger! Press any key to try again!\n");
                }
                getch();
        }
}12.用一维数组统计学生成绩

代码:

#include <stdio.h>
void main()
{
        char SelectKey,CreditMoney,DebitMoney;
        while(1)
        {
                do{
                        clrscr();
                        puts("=========================");
                        puts("|  Please select key:   |");
                        puts("|  1. Quary             |");
                        puts("|  2. Credit            |");
                        puts("|  3. Debit             |");
                        puts("|  4. Return            |");
                        puts("=========================");
                        SelectKey = getch();
                }while( SelectKey!='1' && SelectKey!='2' && SelectKey!='3' && SelectKey!='4' );
                switch(SelectKey)
                {
                        case '1':
                                clrscr();
                                puts("================================");
                                puts("|    Your balance is $1000.    |");
                                puts("|  Press any key to return...  |");
                                puts("================================");
                                getch();
                                break;
                        case '2':
                                do{
                                        clrscr();
                                        puts("==================================");
                                        puts("|   Please select Credit money:  |");
                                        puts("|   1. $50                       |");
                                        puts("|   2. $100                      |");
                                        puts("|   3. Return                    |");
                                        puts("==================================");
                                        CreditMoney = getch();
                                }while( CreditMoney!='1' && CreditMoney!='2' && CreditMoney!='3' );
                                switch(CreditMoney)
                                {
                                        case '1':
                                                clrscr();
                                                puts("=========================================");
                                                puts("|  Your Credit money is $50,Thank you!  |");
                                                puts("|         Press any key to return...    |");
                                                puts("=========================================");
                                                getch();
                                                break;
                                        case '2':
                                                clrscr();
                                                puts("==========================================");
                                                puts("|  Your Credit money is $100,Thank you!  |");
                                                puts("|         Press any key to return...     |");
                                                puts("==========================================");
                                                getch();
                                                break;
                                        case '3':
                                                break;
                                }
                                break;
                        case '3':
                                do{
                                        clrscr();
                                        puts("====================================");
                                        puts("|   Please select Debit money:     |");
                                        puts("|   1. $50                         |");
                                        puts("|   2. $100                        |");
                                        puts("|   3. $500                        |");
                                        puts("|   4. $1000                       |");
                                        puts("|   5. Return                      |");
                                        puts("====================================");
                                        DebitMoney = getch();
                                }while(        DebitMoney!='1' && DebitMoney!='2' && DebitMoney!='3' \
                                 && DebitMoney!='4' && DebitMoney!='5' );
                                switch(DebitMoney)
                                {
                                        case '1':
                                                clrscr();
                                                puts("===========================================");
                                                puts("|   Your Debit money is $50,Thank you!    |");
                                                puts("|        Press any key to return...       |");
                                                puts("===========================================");
                                                getch();
                                                break;
                                        case '2':
                                                clrscr();
                                                puts("===========================================");
                                                puts("|   Your Debit money is $100,Thank you!   |");
                                                puts("|        Press any key to return...       |");
                                                puts("===========================================");
                                                getch();
                                                break;
                                        case '3':
                                                clrscr();
                                                puts("===========================================");
                                                puts("|   Your Debit money is $500,Thank you!   |");
                                                puts("|        Press any key to return...       |");
                                                puts("===========================================");
                                                getch();
                                                break;
                                        case '4':
                                                clrscr();
                                                puts("===========================================");
                                                puts("|   Your Debit money is $1000,Thank you!  |");
                                                puts("|        Press any key to return...       |");
                                                puts("===========================================");
                                                getch();
                                                break;
                                        case '5':
                                                break;
                                }
                                break;
                        case '4':
                                clrscr();
                                puts("================================");
                                puts("|   Thank you for your using!  |");
                                puts("|            Good bye!         |");
                                puts("================================");
                                return;
                }
        }
}13.用二维数组实现矩阵转置

代码:

/* 用二维数组实现矩阵的转置 */
#include <stdio.h>
#define ROW 3
#define COL 4
main()
{
        int matrixA[ROW][COL],matrixB[COL][ROW];
        int i,j;

        clrscr();
        printf("Enter elements of the matrixA,");
        printf("%d*%d:\n",ROW,COL);
        for( i=0; i<ROW; i++ )
        {
                for( j=0; j<COL; j++ )
                {
                        scanf("%d",&matrixA[j]);
                }
        }

        for( i=0; i<ROW; i++ )
        {
                for( j=0; j<COL; j++ )
                {
                        matrixB[j] = matrixA[j];
                }
        }

        printf("MatrixB,");
        printf("%d*%d:\n",COL,ROW);
        for( i=0; i<COL; i++ )
        {
                for( j=0; j<ROW; j++ )
                {
                        printf("%8d",matrixB[j]);
                }
                printf("\n");
        }
        printf("\n  Press Any Key to Quit...  \n");
        getch();
}

14.求解二维数组的最大最小元素

代码:

#define MAXN 20
int a[MAXN][MAXN];
main()
{
        int min,        /* 存储最小值 */
            max;        /* 存储最大值 */
        int row,col,n;
        clrscr();
        printf("Please input the order of the matrix:\n");/* 输入方阵的阶次 */
        scanf("%d",&n);
        printf("Please input the elements of the matrix,\n from a[0][0] to a[%d][%d]:\n",n-1,n-1);
        for(row=0;row<n;row++)
                for(col=0;col<n;col++)
                        scanf("%d",&a[row][col]);
        for(min=a[0][0],row=0;row<n;row++)
        {
                /* 从每行选出最大数 */
                for(max=a[row][0],col=1;col<n;col++)/*从row行选出最大数 */
                        if(max<a[row][col])
                                max=a[row][col];
                if(min>max)/* 保存至row行的最小数 */
                        min=max;
        }
        printf("The minimum of maximum number is %d\n",min);
        for(max=a[0][0],row=0;row<n;row++)
        {
                /* 每行选出最小数 */
                for(min=a[row][0],col=1;col<n;col++)/* 从row行选出最小数 */
                        if(min>a[row][col])
                                min=a[row][col];
                if(max<min)/*保存至row行的最大数 */
                        max=min;
        }
        printf("The maximum of minimum numbers is %d\n",max);
        printf("\nPress any key to quit...\n");
        getch();
}
15.利用数组求前n个质数

代码:

#define N 50
main()
{
        int primes[N];
        int pc,m,k;

        clrscr();
        printf("\n The first %d prime numbers are:\n",N);
        primes[0]=2;/*2是第一个质数*/
        pc             =1;/*已有第一个质数*/
        m               =3;/*被测试的数从3开始*/
        while(pc<N)
        {
         /*调整m使它为下一个质数*/
        k=0;
        while(primes[k]*primes[k]<=m)
                if(m%primes[k]==0)
                {/*m是合数*/
                    m+=2;/*让m取下一个奇数*/
                    k=1;/*不必用primes[0]=2去测试m,所以k从一开始*/
                }
                else
                k++;/*继续用下一个质数去测试*/
        primes[pc++]=m;
        m+=2;/*除2外,其余质数均是奇数*/
        }
        /*输出primes[0]至primes[pc-1]*/
        for(k=0;k<pc;k++)
                printf("%4d",primes[k]);
        printf("\n\n Press any key to quit...\n ");
        getch();
}
16.编制万年历

代码:

#include "stdio.h"
long int f(int year,int month)
{/*f(年,月)=年-1,如月<3;否则,f(年,月)=年*/
        if(month<3) return year-1;
        else return year;
}

long int g(int month)
{/*g(月)=月+13,如月<3;否则,g(月)=月+1*/
        if(month<3) return month+13;
        else return month+1;
}

long int n(int year,int month,int day)
{
  /*N=1461*f(年、月)/4+153*g(月)/5+日*/
        return 1461L*f(year,month)/4+153L*g(month)/5+day;
}

int w(int year,int month,int day)
{
  /*w=(N-621049)%7(0<=w<7)*/
        return(int)((n(year,month,day)%7-621049L%7+7)%7);
}

int date[12][6][7];
int day_tbl[ ][12]={{31,28,31,30,31,30,31,31,30,31,30,31},
                    {31,29,31,30,31,30,31,31,30,31,30,31}};
main()
{int sw,leap,i,j,k,wd,day;
int year;/*年*/
char title[]="SUN MON TUE WED THU FRI SAT";
clrscr();
printf("Please input the year whose calendar you want to know: ");/*输入年*/
scanf("%d%*c",&year);/*输入年份值和掠过值后的回车*/
sw=w(year,1,1);
leap=year%4==0&&year%100||year%400==0;/*判闰年*/
for(i=0;i<12;i++)
        for(j=0;j<6;j++)
                for(k=0;k<7;k++)
                        date[j][k]=0;/*日期表置0*/
for(i=0;i<12;i++)/*一年十二个月*/
        for(wd=0,day=1;day<=day_tbl[leap];day++)
        {/*将第i+1月的日期填入日期表*/
         date[wd][sw]=day;
        sw=++sw%7;/*每星期七天,以0至6计数*/
        if(sw==0) wd++;/*日期表每七天一行,星期天开始新的一行*/
        }

        printf("\n|==================The Calendar of Year %d =====================|\n|",year);
for(i=0;i<6;i++)
{/*先测算第i+1月和第i+7月的最大星期数*/
        for(wd=0,k=0;k<7;k++)/*日期表的第六行有日期,则wd!=0*/
                wd+=date[5][k]+date[i+6][5][k];
        wd=wd?6:5;
        printf("%2d  %s  %2d  %s |\n|",i+1,title,i+7,title);
        for(j=0;j<wd;j++)
        {
                printf("   ");/*输出四个空白符*/
                /*左栏为第i+1月,右栏为第i+7月*/
                for(k=0;k<7;k++)
                        if(date[j][k])
                                printf("%4d",date[j][k]);
                        else printf("    ");
                printf("     ");/*输出十个空白符*/
                for(k=0;k<7;k++)
                        if(date[i+6][j][k])
                                printf("%4d",date[i+6][j][k]);
                        else printf("    ");
                printf(" |\n|");
        }
        /*scanf("%*c");/*键入回车输出下一个月的日历*/

}
puts("=================================================================|");
puts("\n Press any key to quit...");
getch();
}
17.对数组元素排序

代码:

rest(int a[], int n)
{
        int i,low,high,t;

        for(i=0,low=0,high=n-1;i<=high;)
        {
                if(a>0)
                {
                        /*a与a[high]交换,随之high减1*/
                        t=a;
                        a=a[high];
                        a[high]=t;
                        high--;
                }
                else if(a==0)
                        i++; /* 掠过该元素 */
                else
                {
                        /*a与a[low]交换,随之low增1, i增1*/
                        t=a;
                        a=a[low];
                        a[low]=t;
                        low++;
                        i++;
                }
        }
}
int s[]={8,4,0,-1,6,0,-5};
main()
{
        int i;
        clrscr();
        printf("\n The arry before rest is:\n");
        for(i=0;i<sizeof(s)/sizeof(s[0]);i++)
                printf("%4d",s);
        rest(s,sizeof(s)/sizeof(s[0]));
        printf("\n The arry after rest is:\n");
        for(i=0;i<sizeof(s)/sizeof(s[0]);i++)
                printf("%4d",s);
        printf("\n Press any key to quit...\n");
        getch();
}
18.任意进制数的转换

代码:

/* 函数trans将无符号整数n翻译成d(2<=d<=16)进制表示的字符串s */
#define M sizeof(unsigned int)*8
int trans(unsigned n, int d, char s[])
{
        static char digits[] ="0123456789ABCDEF"; /* 十六进制数字的字符 */
        char buf[M+1];
        int j, i = M;
        if(d<2||d>16)
        {
                s[0]='\0';        /* 不合理的进制,置s为空字符串 */
                return 0;        /* 不合理的进制,函数返回0 */
        }
        buf='\0';
        do
        {
                buf[--i]=digits[n%d];        /*译出最低位,对应字符存入对应工作数组中*/
                n/=d;
        }while(n);
        /* 将译出在工作数组中的字符串复制到s */
        for(j=0;(s[j]=buf)!='\0';j++,i++);
                /* 其中控制条件可简写成s[j]=buf */
        return j;
}
/* 主函数用于测试函数 trans() */
main()
{
        unsigned int num = 253;
        int scale[]={2,3,10,16,1};
        char str[33];
        int i;
        clrscr();
        for(i=0;i<sizeof(scale)/sizeof(scale[0]);i++)
        {
                if(trans(num,scale,str))
                        printf("%5d = %s(%d)\n",num,str,scale);
                else
                        printf("%5d => (%d) Error! \n",num,scale);
        }
        printf("\n Press any key to quit...\n");
        getch();
}
19.判断回文数

代码:

/* 函数circle用于判断正整数n的d进制数表示形式是否是回文数 */
int circle(int n, int d)
{
        int s=0,m=n;
        while(m)
        {
                s=s*d+m%d;
                m/=d;
        }
        return s==n;
}
/* main函数用于测试circle函数 */
int num[]={232,27,851};
int scale[]={2,10,16};
main()
{
        int i,j;
        clrscr();
        for(i=0;i<sizeof(num)/sizeof(num[0]);i++)
                for(j=0;j<sizeof(scale)/sizeof(scale[0]);j++)
                        if(circle(num,scale[j]))
                                printf("%d -> (%d) is a Circle Number!\n",num,scale[j]);
                        else
                                printf("%d -> (%d) is not a Circle Number!\n",num,scale[j]);
        printf("\n Press any key to quit...\n");
        getch();
}
       
20.求数组前n元素之和

代码:

int a[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
main()
{
        int i;
        clrscr();
        printf("\n The arry is:\n");
        for(i=0;i<sizeof(a)/sizeof(a[0]);i++)
                printf(" %d ",a);
        printf("\n SUM of the arry is: %d\n",sum(a,sizeof(a)/sizeof(a[0])));
        printf("\n Press any key to quit...\n");
        getch();
}
sum(int a[],int n)
{
        if(n<=0)
                return 0;
        return a[n-1]+sum(a,n-1);
}更多精彩请看下集~
回复

使用道具 举报

1

主题

5

帖子

10

积分

新手上路

Rank: 1

积分
10
发表于 2025-3-19 12:12:02 | 显示全部楼层
顶顶更健康
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表