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语言必背18个经典程序aaaaaaaaaaa 2

C语言必背18个经典程序--- 此是按照二级试卷的格式描述的,期末考试要求按教科书上的格式,当然可以自己修改成更简练的源程序1、/*输出9*9口诀。
共9行9列,i控制行,j控制列。
*/#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表示左对齐,占3位*/}printf("\n");/*每一行后换行*/}}2、/*古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?兔子的规律为数列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");/*控制输出,每行四个*/f1=f1+f2; /*前两个月加起来赋值给第三个月*/f2=f1+f2; /*前两个月加起来赋值给第四个月*/}}3、/*判断101-200之间有多少个素数,并输出所有素数及素数的个数。
程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。
*/#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) /*内循环结束后,leap依然为1,则m是素数*/{printf("%-4d",m);h++;if(h%10==0)printf("\n");}leap=1;}printf("\nThe total is %d",h);}4、/*一个数如果恰好等于它的因子之和,这个数就称为“完数”。
C语言8个经典程序

1.对10个数排序2.求100-200之间的素数3.求n!的函数,递归4.定义一函数,功能为求一维数组的最大值。
5.对输入的两个整数按大小顺序输出#include <stdio.h>void main(){void swap(int *p1,int *p2);int a,b;int *pointer_1,*pointer_2;scanf(″%d,%d″,&a,&b);pointer_1=&a;pointer_2 =&b;if(a<b)swap(pointer_1,pointer_2 );printf(″\n%d,%d\n″,a,b);}void swap(int *p1,int *p2){int temp;temp=*p1;*p1=*p2;*p2=temp;}6. 将数组a中n个整数按相反顺序存放。
#include <stdio.h>vo id main(){void inv(int x[],int n);int i,a[10]={3,7,9,11,0,6,7,5,4,2};printf(″The original array:\n″);for(i=0;i<10;i++)printf (″%d,″,a[i]);printf(″\n″);inv (a,10);printf(″The array has been in verted:\n″);for(i=0;i<10;i++)printf (″%d,″,a[i]);printf (″\n″);}void inv(int x[],int n)/*形参x是数组名*/{int temp,i,j,m=(n-1)/2;for(i=0;i<=m;i++){j=n-1-i;temp=x[i];x[i]=x[j];x[j]=temp;}return;}7. 将字符串a复制为字符串b#include <stdio.h>void main(){char a[ ]=″Iam a boy.″,b[20];int i;for(i=0;*(a+i)!=′\0′;i++)*(b+i)=*(a+i);*(b+i)=′\0′;printf(″string a is :%s\n″,a);printf(″string b is:″);for(i=0;b[i]!=′\0′;i++)printf(″%c″,b[i]);printf(″\n″);}8.求最小公倍数和最大公约数的函数。
c语言案例100例

c语言案例100例C语言是一种广泛应用于系统软件开发和嵌入式系统编程的高级编程语言。
它以其简洁、高效和可移植性而闻名,因此被广泛用于各种应用领域。
本文将为您介绍100个C语言案例,旨在帮助您更好地理解和运用C语言。
案例一:Hello World```c#include <stdio.h>int main() {printf("Hello, World!");return 0;}```这是C语言中最简单的程序,它会输出"Hello, World!"。
案例二:求和```c#include <stdio.h>int main() {int num1, num2, sum;printf("请输入两个整数:");scanf("%d %d", &num1, &num2);sum = num1 + num2;printf("两个整数的和为:%d", sum);return 0;}```这个程序会要求用户输入两个整数,然后计算并输出它们的和。
案例三:判断奇偶数```c#include <stdio.h>int main() {int num;printf("请输入一个整数:");scanf("%d", &num);if (num % 2 == 0) {printf("%d是偶数", num);} else {printf("%d是奇数", num);}return 0;}```这个程序会要求用户输入一个整数,然后判断它是奇数还是偶数,并输出相应的结果。
......(继续介绍更多的案例)通过以上100个C语言案例,您可以系统地学习和掌握C语言的各个方面。
每个案例都涉及不同的主题,从简单的Hello World程序到复杂的数据结构和算法,涵盖了C语言中的各种常见用法和技巧。
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语言初学者经典代码(5条)

C语言初学者经典代码(5条)1.打印“Hello, world!”#include <stdio.h>int main() {printf("Hello, world!");return 0;}这段代码使用了C标准库中的printf()函数,它能够在控制台中打印文本信息。
在main()函数中调用该函数,并传入字符串“Hello, world!”作为参数。
程序运行后,在控制台中就能看到输出的文本信息。
2.计算两个数的和并输出结果:#include <stdio.h>int main() {int a = 5, b = 2;int sum = a + b;printf("The sum of %d and %d is %d", a, b, sum);return 0;}这段代码定义了两个整型变量a和b,并将它们的值分别设置为5和2。
然后将它们相加得到和并赋值给整型变量sum。
最后通过printf()函数输出结果文本信息。
其中%d是占位符,表示输出一个整型变量的值。
3.判断一个数是否为偶数:#include <stdio.h>int main() {int num = 4;if (num % 2 == 0) {printf("%d is an even number.", num);} else {printf("%d is an odd number.", num);}return 0;}这段代码定义了一个整型变量num,并将它的初始值设置为4。
然后使用if语句判断num是否为偶数。
如果是,就输出相应的文本信息;如果不是,也输出相应的文本信息。
在if语句中,%d同样表示输出一个整型变量的值。
%s表示输出一个字符串的值。
4.输出乘法表:#include <stdio.h>int main() {for (int i = 1; i <= 9; ++i) {for (int j = 1; j <= i; ++j) {printf("%d*%d=%d ", j, i, i*j);}printf("\n");}return 0;}这段代码使用了两个嵌套的for循环,分别控制行和列的输出。
C语言程序设计经典100例(全)

103f程序1】【题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。
组成所有的排列后再去掉不满足条件的排列。
2.程序源代码: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);}}==============================================================【程序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.程序源代码: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);}==============================================================【程序3】题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。
100个经典C语言程序

100个经典C语言程序1.绘制余弦曲线:在屏幕上用“*”显示0~360度的余弦函数cos(x)曲线分析:在余弦曲线在0~360度的区间内,一行中要显示两个点,为了同时得到余弦函数cos(x)图形在一行上的两个点,考虑利用cos(x)的左右对称性。
将屏幕的行方向定义为x,列方向定义为y,则0~180度的图形与180~360度的图形是左右对称的,若定义图形总宽度为62列,计算出x行0~180度时y点的坐标m,则同一行与之对称的180~360度的y点坐标就是62-m。
程序中利用反余弦函数acos计算坐标(x,y)的对应关系。
#include<stdio.h>#include<math.h>void main( ){ double y; int x, m;for(y=1;y>=-1;y-=0.1) //y为列方向,值从1到-1,步长为0.1{ m=acos(y)*10; //计算出y对应的弧度m,乘以10为图形放大倍数for(x=1; x<m; x++) printf(" ");printf("*"); //控制打印左侧的* 号for( ; x<62-m; x++) printf(" ");printf("*\n"); //控制打印同一行中对称的右侧*号}}2.绘制余弦曲线和直线:在屏幕上显示0~360度的cos(x)曲线与直线f(x)=45*(y-1)+31的迭加图形。
其中cos(x)图形用“*”表示,f(x)用“+”表示,两个图形相交的点上用“+”。
分析:图形迭加的关键是在分别计算出同一行中两个图形的列方向点坐标后,正确判断相互的位置关系。
可以先判断图形的交点,再分别控制打印两个不同的图形。
#include<stdio.h>#include<math.h>void main( ){ double y; int x, m, n, yy;for (yy=0; yy<=20; yy++) //对于第一个y坐标进行计算并在一行中打印图形 { y=0.1*yy; //y:屏幕行方向坐标m=acos(1-y)*10; //m: cos(x)曲线上y点对应的屏幕列坐标n=45*(y-1)+31; //n: 直线上y点对应的列坐标for(x=0;x<=62;x++) //x: 屏幕列方向坐标if(x==m&&x==n) printf("+"); //直线与cos(x)相交时打印“+”else if(x==n) printf("+"); //打印不相交时的直线图形else if (x==m|| x==62-m) printf("*"); //打印不相交时的cos(x)图形else printf(" "); //其它情况打印空格printf("\n");}}3.绘制圆:在屏幕上用“*”画一个空心的圆分析:打印圆可利用图形的左右对称性。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
习题参考答案:第一章:1.2.请参考书中的安装和配置过程第二章:1.使用vim编辑一个文件,内容如下:int main(){printf(“hello,vim\n”);return 0;}然后保存文件到/root/chap2_1.c操作步骤:(1)打开命令行窗口;(2)执行vi /root/chap2_1.c,回车;(3)输入‘i’,进入插入模式;(4)输入题目中的代码;(5)按‘ESC’键,进入普通模式;(6)输入‘:w’,保存文件;(7)输入‘:q’,退出vim编辑器。
2.使用gedit打开第1题中保存的文件/root/chap2_1.c文件,然后替换“printf”为“sprint”。
替换成功后,保存文件到/root/chap2_2.c操作步骤:(1)单击“主菜单”|“附件”|“文本编辑器”命令,打开gedit;(2)点击菜单“文件”->“打开”,打开文件对话框,选择/root/chap2_1.c文件,点击“打开”;(3)点击工具栏“替换”按钮,出现替换文本对话框;(4)在替换文本对话框输入旧的字符串“printf”,以及将要替换的字符串“sprint”,点击“替换”按钮;(5)替换完毕后,点击菜单“文件”->“另存为”,出现另存为对话框,修改文件名为“chap2_2.c”,点击“保存”按钮。
3.使用vim打开第2题中产生的文件/root/chap2_2.c,然后替换“sprint”为“printf”。
替换成功后,保存文件到/root/chap2_3.c操作步骤:(6)单击“主菜单”|“附件”|“文本编辑器”命令,打开gedit;(7)点击菜单“文件”->“打开”,打开文件对话框,选择/root/chap2_2.c文件,点击“打开”;(8)点击工具栏“替换”按钮,出现替换文本对话框;(9)在替换文本对话框输入旧的字符串“sprintf”,以及将要替换的字符串“print”,点击“替换”按钮;(10)替换完毕后,点击菜单“文件”->“另存为”,出现另存为对话框,修改文件名为“chap2_3.c”,点击“保存”按钮。
第三章:1.在/tmp目录下建立一个cmd_test目录;mkdir –p /tmp/cmd_test2.拷贝/etc/rc.local文件到/tmp/cmd_test目录;cp –av /etc/rc.local /tmp/cmd_test/3.修改/tmp/cmd_test/rc.local文件的权限为:用户可以读写、组用户可以读、其他用户不可以读写;chmod 640 /tmp/cmd_test/rc.local4.使用head命令查看/tmp/cmd_test/rc.local文件的前3行;head –n 3 /tmp/cmd_test/rc.local5.查看find命令的在线帮助。
man find第四章1.编写shell脚本程序实现求1~100相加的和。
#!/bin/shj=0for i in `seq 100`; doj=$(($j+$i))doneecho "Sum of 1 to 100 is: $j"2.编写shell脚本程序,提示用户输入两个数字,在程序中比较这两个数字的大小,并且输出较大者。
#!/bin/sh#input two numbersecho "input a number: "read xecho "input a number: "read yif [ $x -ge $y ]; thenecho "$x"elseecho "$y"fi第五章:1.编写一个C程序,向屏幕输出字符串“Hello,World!”;#include <stdio.h>int main(){printf("Hello,World!\n");return 0;}2.使用gdb调试器调试1题的程序,在main函数设置断点,使用单步跟踪调试;a.使用gcc –g 1.c编译第一题的程序,使输出的a.out执行文件带有调试信息;b.然后使用gdb a.out进入调试环境;c.使用命令b main,在main函数入口加入断点;d.使用run命令开始运行;e.程序运行到main函数后可以使用next单步调试命令调试;f.程序运行结束后,使用quit命令退出gdb调试环境。
调试过程如下:# gdb a.outGNU gdb (Ubuntu/Linaro 7.2-1ubuntu11) 7.2Copyright (C) 2010 Free Software Foundation, Inc.License GPLv3+: GNU GPL version 3 or later </licenses/gpl.html> This is free software: you are free to change and redistribute it.There is NO WARRANTY, to the extent permitted by law. Type "show copying"and "show warranty" for details.This GDB was configured as "x86_64-linux-gnu".For bug reporting instructions, please see:</software/gdb/bugs/>...Reading symbols from /root/test/answer/chap5/a.out...done.(gdb) b mainBreakpoint 1 at 0x4004f8: file 1.c, line 5.(gdb) runStarting program: /root/test/answer/chap5/a.outBreakpoint 1, main () at 1.c:55 printf("Hello,World!\n");(gdb) nHello,World!6 return 0;(gdb) n7 }(gdb) nSingle stepping until exit from function __libc_start_main,which has no line number information.Program exited normally.(gdb) exitUndefined command: "exit". Try "help".(gdb) quit3.编写一个程序,产生一个除0异常。
程序如下:#include <stdio.h>int main(){int a=1/0;return 0;}编译会得到警告:# gcc 3.c3.c: In function `main':3.c:5:10: warning: division by zero执行程序得到异常提示:# ./a.outFloating point exception第六章:1.编写一个简单的C程序,实现在屏幕上打印一行文本,使用注释标注程序的功能。
#include <stdio.h>/* the main routine */int main(){printf("This is a simple text line!\n"); // print to screenreturn 0;}2.编写程序实现读取用户输入的两个数字,比较这两个数字的大小,并输出其大小关系。
#include <stdio.h>int main(){int x,y;printf("Input two numbers: ");scanf("%d,%d", &x, &y);if (x>=y)printf("%d is greater than %d\n", x, y);elseprintf("%d is greater than %d\n", y, x);return 0;}第七章:1.编写程序实现输出九九乘法表(分别使用while和for循环语句实现)。
使用for循环方式:#include <stdio.h>int main(){int major, minor;for ( major=1; major<=9; major++ ){for ( minor=1; minor<=major; minor++ ){printf("%d x %d = %d\t", minor, major, minor*major);}printf("\n");}printf("\n");return 0;}使用while循环方式:#include <stdio.h>int main(){int major, minor;major = 1;while (major<=9){minor = 1;while(minor<=major){printf("%d x %d = %d\t", minor, major, minor*major);minor++;}printf("\n");major++;}return 0;}输出结果:1 x 1 = 11 x2 = 2 2 x 2 = 41 x 3 = 32 x3 = 6 3 x 3 = 91 x 4 = 42 x 4 = 83 x4 = 12 4 x 4 = 161 x 5 = 52 x 5 = 103 x 5 = 154 x5 = 20 5 x 5 = 251 x 6 = 62 x 6 = 123 x 6 = 184 x 6 = 245 x6 = 30 6 x 6 = 361 x 7 = 72 x 7 = 143 x 7 = 214 x 7 = 285 x 7 = 356 x7 = 42 7 x 7 = 491 x 8 = 82 x 8 = 163 x 8 = 24 4 x 8 = 325 x 8 = 406 x 8 = 487 x8 = 56 8 x 8 = 641 x 9 = 92 x 9 = 183 x 9 = 274 x 9 = 365 x 9 = 456 x 9 = 547 x 9 = 638 x9 = 72 9 x 9 = 812.使用if语句实现三个数字的排序(用户从键盘随机输入三个数字)。