C程序设计经典程序举例
C程序经典算法50例

C程序经典算法50例1.二分查找算法:在有序数组中查找指定元素。
2.冒泡排序算法:通过不断比较相邻元素并交换位置,将较大的元素向后冒泡。
3.快速排序算法:通过选择一个基准元素,将数组分割为左右两部分,并递归地对两部分进行快速排序。
4.插入排序算法:将数组划分为已排序和未排序两部分,每次从未排序中选择一个元素插入到已排序的合适位置。
5.选择排序算法:遍历数组,每次选择最小元素并放置在已排序部分的末尾。
6.希尔排序算法:将数组按照一定间隔进行分组并分别进行插入排序,然后逐步减小间隔并重复这个过程。
7.归并排序算法:将数组递归地划分为两部分,然后将两个有序的部分进行合并。
8.桶排序算法:将元素根据特定的映射函数映射到不同的桶中,然后对每个桶分别进行排序。
9.计数排序算法:统计每个元素的出现次数,然后根据计数进行排序。
10.基数排序算法:从低位到高位依次对元素进行排序。
11.斐波那契数列算法:计算斐波那契数列的第n项。
12.阶乘算法:计算给定数字的阶乘。
13.排列问题算法:生成给定数组的全排列。
14.组合问题算法:生成给定数组的所有组合。
15.最大连续子序列和算法:找出给定数组中和最大的连续子序列。
16.最长递增子序列算法:找出给定数组中的最长递增子序列。
17.最长公共子序列算法:找出两个给定字符串的最长公共子序列。
18.最短路径算法:计算给定有向图的最短路径。
19.最小生成树算法:构建给定连通图的最小生成树。
20.汉诺塔算法:将n个圆盘从一个柱子移动到另一个柱子的问题。
21.BFS算法:广度优先算法,用于图的遍历和查找最短路径。
22.DFS算法:深度优先算法,用于图的遍历和查找连通分量。
23.KMP算法:字符串匹配算法,用于查找一个字符串是否在另一个字符串中出现。
24.贪心算法:每次都选择当前情况下最优的方案,适用于求解一些最优化问题。
25.动态规划算法:将一个大问题划分为多个子问题,并通过子问题的解求解整个问题,适用于求解一些最优化问题。
C语言程序设计经典10例

C语言程序设计经典10例程序1题目:输入三个整数x,y,z,请把这三个数由小到大输出。
1.程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小。
2.程序源代码:代码如下:#include <stdio.h>int main(){int x,y,z,t;scanf("%d%d%d",&x,&y,&z);if (x>y){t=x;x=y;y=t;} /*交换x,y的值*/if(x>z){t=z;z=x;x=t;} /*交换x,z的值*/if(y>z){t=y;y=z;z=t;} /*交换z,y的值*/printf("small to big: %d %d %d\n",x,y,z);return 0;}程序2题目:用号输出字母C的图案。
1.程序分析:可先用’'号在纸上写出字母C,再分行输出。
2.程序源代码:代码如下:#include <stdio.h>int main(){printf("Hello C-world!\n");printf(" ****\n");printf(" *\n");printf(" * \n");printf(" ****\n");return 0;}程序3题目:输出特殊图案,请在c环境中运行,看一看,Very Beautiful!1.程序分析:字符共有256个。
不同字符,图形不一样。
2.程序源代码:代码如下:#include <stdio.h>int main(){char a=176,b=219;printf("%c%c%c%c%c\n",b,a,a,a,b);printf("%c%c%c%c%c\n",a,b,a,b,a);printf("%c%c%c%c%c\n",a,a,b,a,a);printf("%c%c%c%c%c\n",a,b,a,b,a);printf("%c%c%c%c%c\n",b,a,a,a,b);return 0;}程序4题目:输出9*9口诀。
C语言程序设计100个简单的经典例子

经典C语言程序设计100例1.数字排列2.奖金分配问题3.已知条件求解整数4.输入日期判断第几天5.输入整数进行排序6.用*号显示字母C的图案7.显示特殊图案8.打印九九口诀9.输出国际象棋棋盘10.打印楼梯并按条件打印笑脸11.经典兔子问题12.判断素数13.水仙花数问题14.正整数分解质因数15.学习成绩划分16.正整数求其最大公约数和最小公倍数17.统计英文字母/空格/数字个数18.求s=a+aa+aaa+aa...a的值19.求解"完数"20.球体自由落下物理问题21.猴子吃桃问题22.乒乓球比赛抽签问题23.打印菱形图案24.分数数列求和25.求1+2!+3!+...+20!的和26.利用递归方法求5!27.将输入字符以相反顺序打印28.岁数问题29.求解正整数位数30.判断回文数31.星期几猜测游戏32.改变文本颜色33.学习gotoxy()与clrscr()函数34.练习函数调用35.设置文本颜色36.求100之内的素数37.对10个数进行排序38.求3*3矩阵对角线元素之和39.数字插入数组重新排序40.将一个数组逆序输出41.static定义静态变量用法42.使用auto定义变量用法43.使用static的另一用法44.使用external的用法45.使用register定义变量方法46.宏#define命令练习(1)47.宏#define命令练习(2)48.宏#define命令练习(3)49.#if #ifdef和#ifndef的综合应用50.#include 的应用练习51.学习使用按位与 &52.学习使用按位或 |53.学习使用按位异或 ^54.取一个整数从右端开始的4~7位。
55.学习使用按位取反~56.用circle画圆形57.学用line画直线58.用rectangle画方形59.画图综合例子160.画图综合例子261.打印杨辉三角形62.学习putpixel画点63.画椭圆ellipse64.利用ellipse and rectangle画图65.画个最优美的图案66.输入3个数字按大小顺序输出67.输入数组交换元素重新输出68.多个整数后移位置问题69.圆圈报数问题70.计算一个字符串长度71.编写输入/输出函数72.创建链表73.反向输出链表74.连接两个链表75.算一道简单题目76.调用函数求1/2+1/4+...+1/n77.填空练习(指向指针的指针)78.找到年龄最大的人79.字符串排序80.海滩猴子分桃81.已知公式条件求数字82.八进制转换为十进制83.求0-7所能组成的奇数个数84.由两个素数之和表示的偶数85.判断一个素数能被几个9整除86.两个字符串连接程序87.结构体变量传递88.读取数字的整数值并打印出该值个数的*89.数据加密90.专升本一题91.时间函数举例192.时间函数举例293.时间函数举例394.一个猜数游戏95.家庭财务管理小程序96.计算字符串中子串出现的次数97.输入字符并保存到磁盘98.字符串转换成大写字母并输出保存99.文件操作应用1100.文件操作应用2--------------------------------------------------------------------------------c语言经典100题【实用】【程序1】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。
200个经典C语言程序

void main()
{
int i,x,y,last=1; /*变量last保存求X的Y次方过程中的部分乘积的后三位*/
printf("Input X and Y(X**Y):");
scanf("%d**%d",&x,&y);
sum=0; /*将求累加和变量的初值置为0*/
for(i=1;i<=10;i++)
{
printf("Input number %d=",i);
scanf("%d",&integer); /*输入评委的评分*/
2.绘制余弦曲线和直线
在屏幕上显示0~360度的cos(x)曲线与直线f(x)=45*(y-1)+31的迭加图形。其中cos(x)图形用“*”表示,f(x)用“+”表示,在两个图形相交的点上则用f(x)图形的符号。
*问题分析与算法设计
本题可以在上题的基础上进行修改。图形迭加的关键是要在分别计算出同一行中两个图形的列方向点坐标后,正确判断相互的位置关系。为此,可以先判断图形的交点,再分别控制打印两个不同的图形。
printf("*\n"); /*圆的右侧*/
}
}
--------------------------------------------------------------------------------
4.歌星大奖赛
--------------------------------------------------------------------------------
C语言程序设计50例(经典收藏)

C语⾔程序设计50例(经典收藏)本篇⽂章是对C语⾔程序设计的50个⼩案例进⾏了详细的分析介绍,需要的朋友参考下【程序1】题⽬:有1、2、3、4个数字,能组成多少个互不相同且⽆重复数字的三位数?都是多少?1.程序分析:可填在百位、⼗位、个位的数字都是1、2、3、4。
组成所有的排列后再去 掉不满⾜条件的排列。
2.程序源代码:复制代码代码如下:#include "stdio.h"#include "conio.h"main(){int i,j,k;printf("\n");for(i=1;i<5;i++) /*以下为三重循环*/for(j=1;j<5;j++)for (k=1;k<5;k++){if (i!=k&&i!=j&&j!=k) /*确保i、j、k三位互不相同*/printf("%d,%d,%d\n",i,j,k);}getch();}==============================================================【程序2】题⽬:企业发放的奖⾦根据利润提成。
利润(I)低于或等于10万元时,奖⾦可提10%;利润⾼ 于10万元,低于20万元时,低于10万元的部分按10%提成,⾼于10万元的部分,可可提 成7.5%;20万到40万之间时,⾼于20万元的部分,可提成5%;40万到60万之间时⾼于 40万元的部分,可提成3%;60万到100万之间时,⾼于60万元的部分,可提成1.5%,⾼于 100万元时,超过100万元的部分按1%提成,从键盘输⼊当⽉利润I,求应发放奖⾦总数?1.程序分析:请利⽤数轴来分界,定位。
注意定义时需把奖⾦定义成长整型。
2.程序源代码:复制代码代码如下:#include "stdio.h"#include "conio.h"main(){long int i;int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;scanf("%ld",&i);bonus1=100000*0. 1;bonus2=bonus1+100000*0.75;bonus4=bonus2+200000*0.5;bonus6=bonus4+200000*0.3;bonus10=bonus6+400000*0.15;if(i<=100000)bonus=i*0.1;else if(i<=200000)bonus=bonus1+(i-100000)*0.075;else if(i<=400000)bonus=bonus2+(i-200000)*0.05;else if(i<=600000)bonus=bonus4+(i-400000)*0.03;else if(i<=1000000)bonus=bonus6+(i-600000)*0.015;elsebonus=bonus10+(i-1000000)*0.01;printf("bonus=%d",bonus);getch();}==============================================================【程序3】题⽬:⼀个整数,它加上100后是⼀个完全平⽅数,再加上168⼜是⼀个完全平⽅数,请问该数是多少?1.程序分析:在10万以内判断,先将该数加上100后再开⽅,再将该数加上268后再开⽅,如果开⽅后 的结果满⾜如下条件,即是结果。
经典C语言程序设计100例C-90-100

main()
{ time_t start,end;
int i;
start=time(NULL);
for(i=0;i<3000;i++)
{ printf("\1\1\1\1\1\1\1\1\1\1\n");}
end=time(NULL);
printf("\1: The different is %6.3f\n",difftime(end,start));
pp: clrscr();
sum=0.0;
gotoxy(1,1);printf("|---------------------------------------------------------------------------|");
gotoxy(1,2);printf("| money management system(C1.0) 2000.03 |");
gotoxy(1,23);printf("|---------------------------------------------------------------------------|");
gotoxy(1,24);printf("| |");
gotoxy(1,25);printf("|---------------------------------------------------------------------------|");
gotoxy(1,12);printf("| cost: ---------- | |");
c语言18个经典程序

c语言18个经典程序1. Hello, World! - 这是经典的C语言第一个程序,用于输出"Hello, World!"。
2. 求两个整数的和 - 用户输入两个整数,程序将计算并输出它们的和。
3. 判断一个数是奇数还是偶数 - 用户输入一个整数,程序将判断并输出该数是奇数还是偶数。
4. 求一个数的平方 - 用户输入一个数,程序将计算并输出该数的平方。
5. 求两个数的最大公约数 - 用户输入两个整数,程序将计算并输出它们的最大公约数。
6. 判断一个数是否为质数 - 用户输入一个正整数,程序将判断并输出该数是否为质数。
7. 求一个数的阶乘 - 用户输入一个正整数,程序将计算并输出该数的阶乘。
8. 生成斐波那契数列 - 用户输入一个正整数n,程序将生成并输出前n个斐波那契数。
9. 判断一个数是否为完全数 - 用户输入一个正整数,程序将判断并输出该数是否为完全数。
10. 判断一个字符串是否为回文字符串 - 用户输入一个字符串,程序将判断并输出该字符串是否为回文字符串。
11. 求一个数的倒数 - 用户输入一个非零实数,程序将计算并输出该数的倒数。
12. 求两个数的最小公倍数 - 用户输入两个正整数,程序将计算并输出它们的最小公倍数。
13. 判断一个年份是否为闰年 - 用户输入一个年份,程序将判断并输出该年份是否为闰年。
14. 生成九九乘法表 - 程序将生成并输出九九乘法表。
15. 判断一个数是否为负数、零或正数 - 用户输入一个实数,程序将判断并输出该数是负数、零还是正数。
16. 判断一个数是否为偶数的平方 - 用户输入一个整数,程序将判断并输出该数是否为偶数的平方。
17. 判断一个数是否为回文数 - 用户输入一个正整数,程序将判断并输出该数是否为回文数。
18. 判断一个字符串是否为回文句子 - 用户输入一个句子,程序将判断并输出该句子是否为回文句子。
这些经典的C语言程序涵盖了基本的输入输出、数学运算、条件判断、循环、字符串处理等方面的知识点。
C程序设计经典程序举例

C程序设计经典程序举例1、判断素数(循环、利用算法减少运算次数)例:1159:质因数分解正整数n是两个不同质数的乘积,试求出其中较大的。
#include<stdio.h>#include<math.h>int main(){long long n,big;int small;int root,i,j;scanf("%lld",&n);for(small=2;small<=(int)sqrt(n);){//素数判断过程,从最小素数开始root=(int)sqrt(small);for(i=2;i<=root+1;i++){if(small%i==0)break;}if(i<=root){if(small==2)small++;else small+=2;//只判断2和奇数,减少运算次数continue;}if(n%small==0){big=n/small;root=(int)sqrt(big);for(i=2;i<=root+1;i++){if(big%i==0)break;}if(i<=root){if(small==2)small++;else small+=2;continue;}else{break;//得到最大质因数,跳出循环}}}printf("%d %lld",small,big);return 0;}2、递归与回溯算法(解决尝试性问题,每一级都对下一级有影响)例:1085:0/1迷宫问题给定一个由0(表示墙壁)和1(表示道路)的迷宫,请你判断进入迷宫后,仅通过横向和纵向的行走是否能从迷宫中走出来,即能否从坐标(1,1)走到(n,m)。
#include<stdio.h>#include<stdlib.h>int starti,startj;int endi,endj;//定义迷宫起止点int success=0;//用于判断是否成功通路int main(){int visit(int i,int j,int maze[][10]);int i,j;int n,m;int maze[10][10];scanf("%d %d",&n,&m);for(i=1;i<=n;i++)for(j=1;j<=m;j++){scanf("%d",&maze[i][j]);}starti=1,startj=1,endi=n,endj=m;if(visit(starti,startj,maze)==0){printf("NO");}else{printf("YES");}return 0;}int visit(int i,int j,int maze[][10]){maze[i][j]=-1;//安全性判断已经经过的路if(i==endi&&j==endj){success=1;//成功到达终点}//进行四个方向的尝试if(success!=1&&maze[i][j+1]==1){visit(i,j+1,maze);}if(success!=1&&maze[i+1][j]==1){visit(i+1,j,maze);}if(success!=1&&maze[i-1][j]==1){visit(i-1,j,maze);}if(success!=1&&maze[i][j-1]==1){visit(i,j-1,maze);}maze[i][j]=0;//尝试失败返回0,尝试成功返回1return success;}例:全排列问题输入一个正整数n,按字典序打印其全排列#include<stdio.h>int used[16]={0};//是否使用判断int result[16]={0};//打印结果void proc(int step,int n){//按步进行数组赋值int i;if(step>n){for(i=1;i<=n;i++){printf("%d ",result[i]);}printf("\n");}else{for(i=1;i<=n;i++){if(used[i]==0){result[step]=i;used[i]=1;proc(step+1,n);used[i]=0;//回溯}}}}int main(){int n;scanf("%d",&n);proc(1,n);return 0;}例:二分查找#include <stdio.h>int bisearch( int ary[], int left, int right, int num ){printf("search %d from %d to %d\n", num, left, right );int mid;//设置二分点进行比较if(left>right)return -1;//未找到需查找的点mid=(left+right)/2;if(ary[mid]==num)return mid;else//与二分点进行大小比较后进入递归if(ary[mid]>num)bisearch(ary, left, mid-1, num);elseif(ary[mid]<num)bisearch(ary, mid+1,right,num);}int main(){int n, array[10000], i, num;scanf("%d", &n);scanf("%d", &num);for (i=0;i<n; i ++ ){scanf("%d",&array[i]);}//数组需有序,若无序数组先进行排序printf( "%d",bisearch(array,0,n-1,num));return 0;}3、排序问题冒泡排序快排函数4、字符串处理例:判断回文#include<stdio.h>#include<string.h>#include<stdlib.h>int main(){char *s=(char*)malloc(sizeof(char)*256);char change[256]="\0";gets(s);int len=strlen(s);int i;for(i=0;i<len;i++){change[len-1-i]=*(s+i);}if(strcmp(change,s)==0){printf("是");}else{printf("否");}return 0;}例:将原字符串中的字符串1替换为字符串2,替换后新出现的字符串不包括在内,仅保留子函数。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C程序设计经典程序举例1、判断素数(循环、利用算法减少运算次数)例:1159:质因数分解正整数n是两个不同质数的乘积,试求出其中较大的。
#include<stdio.h>#include<math.h>int main(){long long n,big;int small;int root,i,j;scanf("%lld",&n);for(small=2;small<=(int)sqrt(n);){//素数判断过程,从最小素数开始root=(int)sqrt(small);for(i=2;i<=root+1;i++){if(small%i==0)break;}if(i<=root)if(small==2)small++;else small+=2;//只判断2和奇数,减少运算次数 continue;}if(n%small==0){big=n/small;root=(int)sqrt(big);for(i=2;i<=root+1;i++){if(big%i==0)break;}if(i<=root){if(small==2)small++;else small+=2;continue;}else{break;//得到最大质因数,跳出循环 }}printf("%d %lld",small,big);return 0;}2、递归与回溯算法(解决尝试性问题,每一级都对下一级有影响)例:1085:0/1迷宫问题给定一个由0(表示墙壁)和1(表示道路)的迷宫,请你判断进入迷宫后,仅通过横向和纵向的行走是否能从迷宫中走出来,即能否从坐标(1,1)走到(n,m)。
#include<stdio.h>#include<stdlib.h>int starti,startj;int endi,endj;//定义迷宫起止点int success=0;//用于判断是否成功通路int main(){int visit(int i,int j,int maze[][10]); int i,j;int n,m;int maze[10][10];scanf("%d %d",&n,&m);for(i=1;i<=n;i++)for(j=1;j<=m;j++){scanf("%d",&maze[i][j]);}starti=1,startj=1,endi=n,endj=m;if(visit(starti,startj,maze)==0){printf("NO");}else{printf("YES");}return 0;}int visit(int i,int j,int maze[][10]){maze[i][j]=-1;//安全性判断已经经过的路if(i==endi&&j==endj){success=1;//成功到达终点}//进行四个方向的尝试if(success!=1&&maze[i][j+1]==1) {visit(i,j+1,maze);}if(success!=1&&maze[i+1][j]==1) {visit(i+1,j,maze);}if(success!=1&&maze[i-1][j]==1) {visit(i-1,j,maze);}if(success!=1&&maze[i][j-1]==1) {visit(i,j-1,maze);}maze[i][j]=0;//尝试失败返回0,尝试成功返回1return success;}例:全排列问题输入一个正整数n,按字典序打印其全排列#include<stdio.h>int used[16]={0};//是否使用判断int result[16]={0};//打印结果void proc(int step,int n){//按步进行数组赋值int i;if(step>n){for(i=1;i<=n;i++){printf("%d ",result[i]);}printf("\n");}else{for(i=1;i<=n;i++){if(used[i]==0){result[step]=i;used[i]=1;proc(step+1,n);used[i]=0;//回溯}}}}int main(){int n;scanf("%d",&n);proc(1,n);return 0;}例:二分查找#include <stdio.h>int bisearch( int ary[], int left, int right, int num ){printf("search %d from %d to %d\n", num, left, right ); int mid;//设置二分点进行比较if(left>right)return -1;//未找到需查找的点mid=(left+right)/2;if(ary[mid]==num)return mid;else//与二分点进行大小比较后进入递归if(ary[mid]>num)bisearch(ary, left, mid-1, num);elseif(ary[mid]<num)bisearch(ary, mid+1,right,num);}int main(){int n, array[10000], i, num;scanf("%d", &n);scanf("%d", &num);for (i=0;i<n; i ++ ){scanf("%d",&array[i]);}//数组需有序,若无序数组先进行排序printf( "%d",bisearch(array,0,n-1,num)); return 0;}3、排序问题冒泡排序快排函数4、字符串处理例:判断回文#include<stdio.h>#include<string.h>#include<stdlib.h>int main(){char *s=(char*)malloc(sizeof(char)*256);char change[256]="\0";gets(s);int len=strlen(s);int i;for(i=0;i<len;i++){change[len-1-i]=*(s+i);}if(strcmp(change,s)==0){printf("是");}else{printf("否");}return 0;}例:将原字符串中的字符串1替换为字符串2,替换后新出现的字符串不包括在内,仅保留子函数。
char* replace(char *stence,char pstr1[],char pstr2[]){if(strcmp(stence,pstr1)==0){return pstr2;}//如果原字符串与字符串1相同直接替换elseif(strstr(stence,pstr1)==NULL){return stence;}//找不到字符串1else{char *find=stence;char final[400]="\0";while(strlen(find)>strlen(pstr1)&&find!=NULL) //循环在剩余字符串中能寻找到字符串1时继续进行{char change[400]="\0";char *use=find;find=strstr(find,pstr1);//寻找字符串1for(int i=0;i<(find-use);i++){change[i]=*(use+i);}find=find+strlen(pstr1);//直接跳过字符串1strcat(final,change);//将出现字符串1之前的部分粘到最终字符串中strcat(final,pstr2);//粘贴字符串2到最终字符串if(strstr(find,pstr1)==NULL)//剩余字符串中搜索不到字符串1{break;}}if(strcmp(find,pstr1)!=0)//剩余的不是字符串1,直接粘贴到最终字符串中,如果是,直接返回{strcat(final,find);}return final;}}。