![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言案例源码
小林C语言
提供C语言/C++学习路线、C语言/C++基础知识、C语言/C++代码练习、C语言/C++视频教程、C#技术进阶,帮助读者快速入门C语言!
展开
-
C语言 | 希尔排序
例100:C语言实现希尔排序。解题思路:希尔排序是插入排序的一种又称缩小增量排序,是直接插入排序算法的一种更高效的改进版本,希尔排序是非稳定排序算法。希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。C语言源代码演示:#include<stdio.h>//头文件int main()//主函数{ void shsort(int s[],int n); //函数声明 i原创 2021-03-09 09:24:20 · 1333 阅读 · 4 评论 -
C语言 | 直接插入排序
例99:C语言实现直接插入排序 。解题思路:直接插入排序是一种最简单的排序方法,其基本操作是将一条记录插入到已排好的有序表中,从而得到一个新的、记录数量增1的有序表。C语言源代码演示:#include<stdio.h>//头文件 int main()//主函数 { void insort(int post[],int n);//函数声明 int array[11],i;//定义整型变量和数组 printf("请输入10个数据:\n");//提示语句 for(i=1原创 2021-03-08 14:30:54 · 1532 阅读 · 5 评论 -
C语言 | 奖金发放问题
例98:C语言实现发放奖金,根据利润提成,从键盘输入当月利润,求应发放奖金总数。解题思路:利润低于或等于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%提成。C语言源代码演示:#include<stdio.原创 2021-03-07 14:15:15 · 4426 阅读 · 6 评论 -
C语言 | 学习使用算术运算符
例96:学习C语言算术运算符。解题思路:算术运算符按操作数个数可分为一元运算符和二元运算符。一元运算符的优先级一般高于二元运算符。一元运算符:+(正号)、-(负号)、++(增1)、–(减1)。二元运算符:+(求和)、-(求差)、*(求积)、/(求商)、%(求余)。C语言源代码演示:#include <stdio.h>//头文件 int main()//主函数 { int i,j,k;//定义整型变量 float num1,num2;//定义浮点型变量 i = 22;//原创 2021-03-07 14:13:54 · 288 阅读 · 3 评论 -
C语言 | 求奇偶数个数
例96:C语言编程求奇偶数的个数。解题思路:奇数是指指不能被2整除的整数;偶数是能够被2所整除的整数。C语言源代码演示:#include<stdio.h>//头文件 int main()//主函数 { int i,n,m; //定义整型变量 int odd_Number=0,even_Number=0; //同上且赋初值 printf("请输入要判断几个数:"); scanf("%d",&n);//输入整数的个数 printf("输入这几个数:");原创 2021-03-07 14:12:16 · 7697 阅读 · 2 评论 -
C语言 | 学习使用逻辑运算符
例95:学习C语言逻辑运算符。解题思路:C语言的运算符主要用于构成表达式,同一个符号在不同的表达式中,其作用并不一致。C语言源代码演示:#include <stdio.h> //头文件 #include <math.h>int main()//主函数 { int x = 25, y = 25 , z = 30;//定义整型变量且赋初值 float f = 25.095, h = 25.095;//定义浮点型变量且赋初值 printf("**********原创 2021-03-03 13:23:50 · 288 阅读 · 1 评论 -
C语言 | 学习使用递增运算符
例94:灵活使用C语言递增运算符。解题思路:自增运算符 ++ 使操作数的值加1,其操作数必须为可变左值(可简单地理解为变量)。对于自增就是加1这一点,读者应该不会有什么疑问。难点在于:++ 可以置于操作数前面,也可以放在后面,如:++i;i++ ;++i表示,i自增1后再参与其它运算;而i++ 则是i参与运算后,i的值再自增1。自减运算符–与之类似。C语言源代码演示:#include <stdio.h>//头文件 int main()//主函数 { int i=5,j;//定义整型原创 2021-03-03 13:22:46 · 1356 阅读 · 0 评论 -
C语言 | 学习使用按位取反-
例93:学习C语言使用按位取反~。解题思路:正数取反是先将初始数值转换成二进制数(6==》00000110),再对二进制数的每一位取反:即将0变为1、将1变为0。(00000110==》11111001),得到的是最终结果的补码,要转换为最终结果的原码则需再次取补码,就能得到计算结果;负数取反是先将初始数值转换成二进制数(以-6为例,10000110),再取得二进制数的补码,之后对补码的每一位取反:即将0变为1、将1变为0。得到的是最终结果的补码,要转换为最终结果的原码则需再次取补码,就能得到计算结果。原创 2021-03-03 13:21:46 · 979 阅读 · 0 评论 -
C语言 | 学习使用异或^
例92:学习C语言按位异或^ 。解题思路:按位与&、按位或|、按位异或,与1进行位与&运算,值保持不变;与0进行位与&运算,值清0;按位与&常用于将整型变量中某些位清0,而其他位保持不变。与1进行位或|运算,值置1;与0进行位或|运算,值保持不变;按位或|常用于将整型变量中某些位置1,而其他位保持不变。与1进行位异或运算,值取反;与0进行位异或运算,值保持不变;按位异或常用于将整型变量中某些位取反,而其他位保持不变。C语言源代码演示:#include<stdio.原创 2021-03-03 13:19:37 · 2391 阅读 · 5 评论 -
2021-03-03
例91:学习使用C语言按位与 & 。解题思路:计算两个数x,y相与的结果。代码写作x&y,先将x与y分别写成二进制bit形式。例如计算10&30,10二进制为1010,30为11110,然后从低位开始,每个bit分别作与运算。其中bit的与运算,除了1&1=1外,其余组合结果均为0,故10&30=01010,即1010。比如:a=077==00111111,b=a&3==00111111&00000011==00000011==3。b&原创 2021-03-03 13:18:19 · 229 阅读 · 0 评论 -
C语言 | #define命令
例90:学习C语言宏#define命令。解题思路:C语言中,可以用 #define 定义一个标识符来表示一个常量。其特点是:定义的标识符不占内存,只是一个临时的符号,预编译后这个符号就不存在了;预编译又叫预处理,预编译不是编译,而是编译前的处理,这个操作是在正式编译之前由系统自动完成的。C语言源代码演示:#include<stdio.h>//头文件 #define TRUE 1//宏变量 #define SQUARE(x) (x)*(x)//宏定义求平方函数 int main()/原创 2021-02-24 19:22:00 · 443 阅读 · 2 评论 -
C语言 | register定义变量
例89:学习C语言register定义变量的用法。解题思路:register这个关键字请求编译器尽可能的将变量存在CPU内部寄存器中,而不是通过内存寻址访问,以提高效率。注意是尽可能,不是绝对。因为,如果定义了很多register变量,可能会超过CPU的寄存器个数,超过容量。C语言源代码演示:#include<stdio.h>//头文件 int main()//主函数 { register int i;//定义寄存器变量 int temp=0;//定义整型变量 for(原创 2021-02-23 08:50:14 · 1896 阅读 · 1 评论 -
C语言 | auto定义变量
例88:学习使用C语言auto定义变量的用法。解题思路:auto自动存储类型,一般我们很少在程序中显示申明变量为auto类型。因为代码块中的变量缺省情况下就是这种类型,这种类型的变量存放于堆栈中,也就是说只有程序执行这些代码块时这种自动变量才会被创建,代码块执行结束后自动变量便被释放。C语言源代码演示:#include<stdio.h>//头文件 int main()//主函数 { int i,num;//定义整型变量 num=2;//赋初值 for (i=0;i<原创 2021-02-22 09:00:28 · 3333 阅读 · 4 评论 -
C语言 | static静态变量
例87:学习C语言static定义静态变量的用法。解题思路:在C语言中,static 不仅可以用来修饰变量,还可以用来修饰函数,使用 static 修饰的变量,称为静态变量。静态变量的存储方式与全局变量一样,都是静态存储方式。C语言源代码演示:#include<stdio.h>//头文件 int main()//主函数 { void varfunc(); //函数声明 int i;//定义整型变量 for(i=0;i<3;i++)//3次循环 { v原创 2021-02-19 09:15:38 · 1207 阅读 · 2 评论 -
C语言 | 判断是否为回文数
例86:一个五位数,C语言编程判断它是不是回文数。解题思路:回文数是指个位与万位相同,十位与千位相同,即比如5555是回文数。 读者逐个分析即可,比较个位数与万位数,十位数与千位数,读者看着道题的时候,逐个分析即可,比较个位数与万位数,十位数与千位数。C语言源代码演示:#include <stdio.h>//头文件 int main()//主函数 { long individual;//个位 long ten; //十 long thousand;//千 long te原创 2021-02-18 19:47:51 · 3868 阅读 · 7 评论 -
C语言 | 求a+aa+...+aa..a的值
例85:求sum=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制。解题思路:关键是计算出每一项的值。C语言源代码演示:#include<stdio.h>//头文件 int main()//主函数 { int a,number,count=1;//定义整型变量 long int sum=0,temp=0;//定义长整型变量 printf("请输入a 和 number:");原创 2021-02-17 20:14:47 · 4041 阅读 · 7 评论 -
C语言 | 是否可以构成三角形
例84:给定平面上任意三个点的坐标(x1,y1)、(x2,y2)、(x3,y3),检验它们能否构成三角形。解体思路:构成三角形的要求是,两边之和大于第三条边,读者根据这个准则判定即可。C语言源代码演示:#include <stdio.h>//头文件 #include <math.h>//为了引用sqrt函数 int main()//主函数 { double x1,y1,x2,y2,x3,y3;//定义变量 float side_Length1,side_Len原创 2021-02-16 19:43:25 · 2726 阅读 · 3 评论 -
C语言 | 选择排序
例83:C语言用选择排序对10个数进行排序。解题思路:选择排序是指第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾,,直到全部待排序的数据元素的个数为零。C语言源代码演示:#include<stdio.h>//头文件 int main()//主函数 { int i,j,temp,array[11];//定义变量 printf("请输入10个数:\n");//提示语句原创 2021-02-15 19:34:12 · 14665 阅读 · 4 评论 -
C语言 | 用指向指针的指针对5个字符串排序输出
例81:C语言实现用指向指针的指针的方法对5个字符串排序并输出。解题思路:读者看着道题的时候,首先要知道什么时指针,指向指针的指针应该怎么用,一般在开发中不这样用,读者要看明白,这个很锻炼思维的。C语言源代码演示:#include<stdio.h>//头文件 #include<string.h> #define LINEMAX 20 //定义字符串的最大长度 int main(){ void sort(char **point);//函数声明 int i;//原创 2021-02-11 12:07:40 · 4458 阅读 · 2 评论 -
C语言 | n个整数,前面各数顺序向后移动m,后m个变成最前面m个
例80:C语言编写一个函数new,对n个字符开辟连续的存储空间此函数应该返回一个指针(地址),指向字符串开始的空间。new(number)表示分配number个字节的内存空间。解题思路:new函数的作用是分配n个连续字符的存储空间,为此,应先开辟一个足够大的连续存储区。C语言源代码演示:#include<stdio.h>//头文件 #define NEWSIZE 1000//宏定义char newbuf[NEWSIZE];//定义字符数组 char *newp=newbuf;ch原创 2021-02-11 12:06:01 · 2631 阅读 · 4 评论 -
C语言 | 输出月份的英文
例79:C语言编写一个程序,输入月份号,输出该月的英文月名。例如,输入「3」,则输出「March」,要求用指针数组处理。解题思路:读者看着道题的时候,需要注意一点,数组是从0开始往依次加的。C语言源代码演示:#include<stdio.h>//头文件 int main()//主函数 { char *month_name[13]={"illegal month","January","February", "March","April","May","June","July",原创 2021-02-09 11:27:35 · 5005 阅读 · 1 评论 -
C语言 | 求字符串的长度
例78:C语言写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度,要求用指针。解题思路:求字符串的长度,还要求用指针,读者首先应该想一下不用指针是否可以,求字符串的长度需要判断字符串的结束标志。C语言源代码演示:#include<stdio.h>//头文件 int main()//主函数 { int sum_Length(char *point);//函数声明 int len;//定义整型变量 char str[20];//定义字符数组 pr原创 2021-02-08 15:33:25 · 6841 阅读 · 5 评论 -
C语言 | n个人围成一圈,顺序排号
例77:n个人围成一圈,C语言进行顺序排号,要求用指针。解题思路:从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的使原来第几号的那位。C语言源代码演示:#include<stdio.h>//头文件 int main()//主函数 { int i,k,n,m;//定义整型变量 int num[50];//定义整型数组 int *p;//定义指针变量 printf("输入n=");//提示语句 scanf("%d",&n);//键盘输原创 2021-02-06 14:14:35 · 8072 阅读 · 6 评论 -
C语言 | 对n个字符开辟连续的存储空间
例76:有n个整数,使前面各数顺序向后移动m个位置,最后m个数变成最前面m个数,C语言写一函数实现以上功能,在主函数中输入n个整数和输出调整后的n个数,要求用指针。解题思路:读者看着道题的时候,首先要明白题意,要用函数和指针来做,读者如果嫌麻烦的话可以先不用指针,函数也可以先不抽取出来,就在主函数中写,然后按照题意修改下自己的代码。C语言源代码演示:#include<stdio.h>//头文件 int main()//主函数 { void move(int [20],int n,i原创 2021-02-04 11:36:29 · 3151 阅读 · 3 评论 -
C语言 | 指针由小到大输出3个整数
例75:C语言输入3个整数,按由小到大的顺序输出。(要求用指针处理)解题思路:读者要明白指针该怎么用,看着道题的时候,应该首先想到的是不用指针怎么交换,想明白这个思路,加上指针处理就好了。C语言源代码演示:#include<stdio.h>//头文件 int main()//主函数 { void swap(int *p1,int *p2); //函数声明 int n1,n2,n3;//定义整型变量 int *p1,*p2,*p3;//定义指针变量 printf("原创 2021-02-03 23:42:05 · 5882 阅读 · 4 评论 -
C语言 | 计算某日是该年的第几天
例74:给出年月日,C语言编程计算该日是该年的第几天。解题思路:主函数接受从键盘输入的日期,并调用sum_day和leap函数计算天数,sum_day计算输入日期的天数。leap函数返回是否是闰年的信息。此题关键就是两部分,一是判断是否是闰年,如果是闰年的话需要加1,然后就是计算这个月之前的天数,读者根据这两个大方面思考即可。C语言源代码演示:#include<stdio.h>//头文件 int main()//主函数 { int sum_day(int month,int day原创 2021-02-03 23:40:48 · 7495 阅读 · 3 评论 -
C语言 | 递归将一个整数n转换成字符串
例73:C语言用递归方法将一个整数n转换成字符串。例如,输入483,应输出字符串“483”,n的位数不确定i,可以是任意位数的整数。解题思路:如果是负数,要把它转换为正数,同时为地输出一个“-”号。convert函数只处理正数。字符‘0’的ASCII代码是48,3+48=51,51是字符‘3’的代码,因此putchar(n%10+‘0’)输出字符‘3’。32在ASCII代码中代表空格,以使两个字符之间空格隔开。源代码演示:#include<stdio.h>//头文件 int main()原创 2021-02-01 22:06:05 · 26993 阅读 · 10 评论 -
C语言 | 用递归求n阶勒让德多项式
例72:C语言编程用递归方法求n阶勒让德多项式。解题思路:勒让德多项式是描述矩形表面和口径的另外一组多项式集合,它的优点是具有正交性。由于存在正交性条件,高阶项系数趋于零,并且增加和删除一个项对其他项没有影响。勒让德方程的解可写成标准的幂级数形式。当方程满足 |x| < 1 时,可得到有界解(即解级数收敛)。并且当n 为非负整数,即n = 0, 1, 2,... 时,在x = ± 1 点亦有有界解。这种情况下,随n 值变化方程的解相应变化,构成一组由正交多项式组成的多项式序列,这组多项式称原创 2021-01-29 10:35:40 · 11258 阅读 · 5 评论 -
C语言 | 输出4个数字字符,每个数字空一格
例71:C语言编写一个函数,输入一个4位数字,要求输出这4个数字字符,但每两个数字间空一个空格。如输入1990,应输出“1 9 9 0”。解题思路:注意需要用到string.h库函数,读者看着道题的时候,应该很容易看出来,就是在数字之间插入一个空格就好了。源代码演示:#include<stdio.h>//头文件 #include<string.h> //导入库函数 int main()//主函数 { void insert(char str[]);//函数声明 c原创 2021-01-28 11:36:04 · 7015 阅读 · 1 评论 -
C语言 | 将字符串中的元音字母复制到另一个字符串中
例70:C语言写一个函数,将一个字符串中的元音字母复制到另一字符串,然后输出。解析:if语句判断一下每一个字母是否符合元音字母,读者看着道题的时候,需要注意一点的是如果用scanf函数是否可以,思考为什么要用gets函数?源代码演示:#include<stdio.h>//头文件 int main()//主函数 { void copy(char s[],char c[]); //函数声明 char str[80],character[80]; //定义字符数组 print原创 2021-01-27 11:21:52 · 9951 阅读 · 3 评论 -
C语言 | 复制字符串 不用strcpy
例69:C语言编写一个程序,将字符数组str2中的全部字符复制到字符数组str1中,要求不使用strcpy函数。解析:复制时「\0」也要复制过去,「\0」后面的字符不复制 。源代码演示:#include<stdio.h>//头文件 #include<string.h>//引入求字符串长度的库函数 int main()//主函数 { char str1[80],str2[80];//定义字符数组 int i;//定义整型变量 printf("输入要复制的字符原创 2021-01-27 11:20:38 · 7756 阅读 · 8 评论 -
C语言 | 比较字符串s1 s2,不用strcmp
例68:C语言编一个程序,将两个字符串s1和s2比较,若s1>s2,输出一个正数;若s1=s2,输出0,否则输出负数要求不要用strcmp函数。解析:两个字符串用gets函数读入。输出的正数或负数的绝对值应是相比较的两个字符串相应字符的ASCII码的差值。源代码演示:#include<stdio.h>//头文件 int main()//主函数 { int i,result;//定义整型变量 char s1[100],s2[100];//定义字符数组 printf(原创 2021-01-25 10:49:01 · 3053 阅读 · 2 评论 -
C语言 | 将两个字符串连接起来,不用stract
例67:C语言编写一个程序,将两个字符串连接起来,不要用strcat函数。解题思路:首先要有两个键盘录入,实现录入字符串1和字符串2,然后实现拼接,读者看这道例题的时候,可以先想想要是用strcat函数应该怎么写代码,然后可以查看查看strcat的源码,看看底层是怎么写的。源代码演示:#include<stdio.h>//头文件 int main()//主函数 { char str1[80],str2[40];//定义字符数组 int i=0,j=0;//定义整型变量且赋初值原创 2021-01-23 23:02:20 · 48434 阅读 · 10 评论 -
C语言 | 将密码译回原文,并输出密码和原文
例66:有一行电文,已按下面规律译成密码:A->Z a->z;B->Y b->y;即第1个字母变成第26个字母,第i个字母变成第(26-i+1)个字母,非字母字符不变。要求C语言编程将密码译回原文,并输出密码和原文。解析: 可以定义一个数组ch,在其中存放电文。如果字符ch[j]是大写字母,则它是26个字母中的第(ch[j]-64)个大写字母,由于此密码的规律是对称转换,即第1个字母转换为最后一个字母,最后一个转换为第1个字母,因此从原文译为密码和从密码译为原文,都是同一个公式。原创 2021-01-21 15:58:04 · 2660 阅读 · 2 评论 -
C语言 | 统计文章中的字符
例65:有一篇文章,共有3行文字,每行有80个字符。C语言编程实现分别统计出其中英文大写字母、小写字母、数字、空格以及其他字符的个数解题思路:数组text的行号为02,但在提示用户输入各行数据时,小林这里要求读者输入第1行、第2行、第3行,而不是第0行,第1行,第2行,这完全是照顾读者的习惯。为此,在程序第6行中输出行数时用i+1,而不用i。这样并不影响程序对数组的处理,程序其他地方数组的第1个下标值仍然是02。源代码演示:#include<stdio.h>//头文件 int main(原创 2021-01-20 20:52:04 · 1200 阅读 · 2 评论 -
C语言 | 找出二维数组中的鞍点
例64:C语言实现找出一个二维数组中的鞍点,即该位置上的元素在该行上最大、在该列上最小。也可能没有鞍点。解析:读者看着道题的时候,首先要了解什么是鞍点,先找出一行中值最大的元素,然后检查它是否为该列中最小值,如果是,则是鞍点,输出该鞍点;如果不是,则再找下一行的最大数…如果每一行的最大数都不是鞍点,则此数组无鞍点。源代码演示:#include<stdio.h>//头文件 #define N 3 //宏定义 #define M 4 //宏定义 int main()//主函数 {原创 2021-01-19 09:09:31 · 10507 阅读 · 10 评论 -
C语言 | 输出魔方矩阵
例63:C语言实现输出“魔方阵”。所谓魔方阵是指它的每一行,每一列和对角线之和均相等。解题思路:魔方阵中各数的排列规律,魔方阵的阶数应该为奇数。将1放在第1行中间一列从2开始直到n*n止各数依次按下:每一个数存放的行比前一个数的行数减1,列数加1.如果上一数的行为为1,则下一个数的行数为n当上一个数的列数为n时,下一个数的列数应为1,行数减1按上面的规则确定的位置上已有数,或上一个数是第1行第n列时,则把下一个数放在上一个数的下面源代码演示:#include<stdio.h>//原创 2021-01-18 09:48:50 · 8511 阅读 · 8 评论 -
C语言 | 将一个数按大小顺序插入数组中
例62:有一个已经排好序的数组,要求C语言实现输入一个数后,按原来排序的规律将它插入数组中。解题思路:假设数组a有n个元素,而且已按升序排列,在插入一个数时按以下方法处理:如果插入的数num比a数组最后一个数大,则将插入的数放在a数组末尾。如果插入的数num不比a数组最后一个数大,则将它依次和a[0]a[n-1]比较,直到出现a[i]>num为止,这时表示a[0]a[i-1]各元素的值比num小,a[i]~a[n-1]各元素的值比num大。源代码演示:#include<stdio.h&原创 2021-01-17 15:43:47 · 6679 阅读 · 4 评论 -
C语言 | 求一个3*3矩阵对角线元素之和
例61:C语言求3*3的整型矩阵对角线元素之和 。解题思路:程序中用的数整型数组,运行结果是正确的。如果用的是实型数组,只须将程序第4行的int改为double即可,要求输入数据时可输入单精度或双精度的数,求3*3对角线元素之和,就是求每一行对应行数的那一个数字之和。源代码演示:#include<stdio.h>//头文件 int main()//主函数 { int array[3][3],sum=0;//定义二维数组和变量 int i,j;//定义整型变量,主要用于for循原创 2021-01-14 19:44:08 · 43956 阅读 · 17 评论 -
C语言 | 选择法对10个数排序
例60:C语言实现用选择法对10个整数排序。解析:选择排序思路如下,设有10个元素a[1]a[10],将a[1]与a[2]a[10],若a[1]比a[2]~a[10]都小,则不进行交换,即无任何操作。若a[2]a[10]中有一个以上比a[1]小,则将其中最大的一个,与a[1]交换,此时a[1]中存放了10个中最小的数。依次类推,共进行9轮比较,a[1]a[10]就已按由小到大的顺序存放了。整体代码逻辑为了让读者更加清晰,小林这里分为四部分:第一部分 键盘输入10个数:for(i=1;i<=1原创 2021-01-13 20:28:10 · 33143 阅读 · 5 评论