C语言
好雨知时节呀
热爱分享,热爱生活
展开
-
打印100 ~ 200之间的素数
素数为被1和其本身整除的数字,称为素数。简单的实现(当然还有别的方法可以完成)源代码:#include <stdio.h>#include <stdlib.h>int main(){ int i = 0, j = 0; for (i = 100; i < 201; i++){ for (j = 2; j < i; j++){ ...原创 2018-12-02 23:04:55 · 326 阅读 · 0 评论 -
5位运动员参加了10米台跳水比赛用C语言预测结果
题目描述:5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果A选手说:B第二,我第三;B选手说:我第二,E第四;C选手说:我第一,D第二;D选手说:C最后,我第三;E选手说:我第四,A第一;比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。#include <stdio.h>int main(){ for (int A = 1; A <= 5; ...原创 2019-05-24 15:07:29 · 242 阅读 · 0 评论 -
C语言实现大小写字母转换
#include <stdio.h>#include <string.h>int main(){ char ch = 0; //ch = getchar(); while ((ch=getchar()) != EOF){ if ((ch>='a') && (ch<='z')){ //ch = ch - 32; ch =...原创 2019-05-20 10:30:36 · 9457 阅读 · 1 评论 -
冒泡排序(C语言)
冒泡排序:算法思想: 以升序为例,将相邻的俩个数进行比较,如果左边数字大于右边数字,那么将这俩个数字进行交换;(降序则相反,如果左边数字小于右边数字则交换),一直到俩俩相邻的数字左边都小于右边为止(降序则相反)。以升序为例:代码实现:#include <stdio.h>//打印数组void PrintArr(int arr[], int size) { for (int...原创 2019-05-07 16:44:27 · 223 阅读 · 0 评论 -
C语言模拟实现输入密码
C语言对于实现字符验证,没有提供真正的验证函数,那么我们可以借用 strcmp() 函数,实现字符的比较,C语言对字符的比较叫做“字典序”。#include <stdio.h>#include <string.h>int main(){ int i = 0; char pwd[10] = { 0 }; printf("请输入保险箱密码:"); while (i...原创 2019-05-20 09:41:07 · 2018 阅读 · 0 评论 -
求Sn=a+aa+aaa+aaaa+aaaaa前五项的和
#include <stdio.h>int main(){ int sum = 0; int n; printf("请输入一位数字:"); scanf("%d", &n); int tmp = 0; for (int i = 0; i < 5; i++){ tmp = tmp * 10 + n; sum += tmp; } printf("Sn...原创 2019-05-20 09:02:00 · 75 阅读 · 0 评论 -
C语言求所有的“水仙花数”
#include <stdio.h>int main(){ int a, b, c, d; //声明各个位数的值 int sum = 0, count = 0; for (int i = 0; i <= 10000; i++){ a = i % 10;//求个位数字 b = i / 10 % 10;//求十位数字 c = i / 100 % 10;//求百位...原创 2019-05-20 08:50:37 · 5806 阅读 · 0 评论 -
C语言交换俩个等长数组的内容
实现思想:将等长的数组内容逐个遍历然后交换每个数组内容。#include <stdio.h>int main(){ int arr1[5] = {1, 2, 3, 4, 5}; int arr2[5] = {6, 7, 8, 9, 10}; int len = sizeof(arr1) / sizeof(int); int i; for (i = 0; i < l...原创 2019-05-20 00:00:52 · 242 阅读 · 0 评论 -
求0~100之间9出现的次数
实现的思想:实现将各个位的数字都转换到个位,然后个位对 10 取余;如果余数为 9 则 +1 ; 实现将各个位数换到个位的代码逻辑 tmp = tmp / 10 ;#include <stdio.h>int main(){ int count = 0; for (int i = 0; i <= 100; i++){ int tmp = i; while (tm...原创 2019-05-19 23:56:52 · 462 阅读 · 0 评论 -
日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个 嫌疑犯的一个
题目描述:日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个。以下为4个嫌疑犯的供词。A说:不是我。B说:是C。C说:是D。D说:C在胡说已知3个人说了真话,1个人说的是假话。现在请根据这些信息,写一个程序来确定到底谁是凶手。#include <stdio.h>int main(){ char killer; for (killer = '...原创 2019-05-24 15:08:55 · 291 阅读 · 2 评论 -
在屏幕上打印杨辉三角
#include <stdio.h>#define num 10int main(){ int i = 0, j = 0; int arr[num][num] = { 0 }; //将每行第一个每列最后一个置1 for (i = 0; i < num; i++){ arr[i][0] = 1; arr[i][i] = 1; } //根据杨辉三角规律,算...原创 2019-05-24 15:11:19 · 145 阅读 · 0 评论 -
递归方式实现打印一个整数的每一位
void PrintNum(int n){ if (n > 9) PrintNum(n / 10); cout << n % 10 << ' ';}原创 2019-05-23 19:32:29 · 146 阅读 · 0 评论 -
递归和非递归分别实现求n的阶乘
递归:int Fact(int n){ if (n <= 1) return 1; return n*Fact(n-1);}非递归:int Fact1(int n){ int ret = 1; if (n <= 1) return 1; for (int i = n; i > 1; i--){ ret *= i; } return ret;}...原创 2019-05-23 19:31:09 · 170 阅读 · 0 评论 -
递归和非递归分别实现 strlen
实现思想:strlen 不算 ‘\0’ , 根据这个提示写出递归终止条件,然后实现 strlen实现代码:递归:int Strlen(char *str){ if (*str == '\0') return 0; return Strlen(str + 1) + 1;}非递归:int Strlen1(char *str){ int ret = 0; if (*str ==...原创 2019-05-23 19:29:37 · 148 阅读 · 0 评论 -
编写一个函数 reverse_string(char * string)(递归实现)
实现接口代码://判断字符串第一位是否为 \0 如果不是,将指针加1,指向下一个字母,以此类推,如果下一个是 \0 那么就返回指针所指向的字符void reverse_string(char *string){ if (*string != '\0') reverse_string(string+1); printf("%c", *(string)); }...原创 2019-05-23 19:27:03 · 308 阅读 · 0 评论 -
写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和
源代码:int DigitSum(int n){ if (n < 10) return n; return n % 10 + DigitSum(n / 10);}例如:输入 n 为 1729 则输出为 1 + 7 + 2 + 9 = 19 。原创 2019-05-23 19:25:10 · 229 阅读 · 0 评论 -
编写一个函数实现n^k,使用递归实现
递归:int Power(int n, int k){ if (n == 0) return -1; if (k == 0) return 1; return n*Power(n, k-1);}非递归:int Power1(int n, int k){ int ret = 1; if (n == 0) return -1; if (k == 0) return...原创 2019-05-23 19:23:08 · 128 阅读 · 0 评论 -
递归和非递归分别实现求第n个斐波那契数
递归:int Fib(int n){ if (n == 1 || n == 2) return 1; return Fib(n-1) + Fib(n-2);}非递归:int Fib(int n){ int num1 = 1, num2 = 1, num3 = 0; if (n == 1 || n == 2) //前两项都为1 return 1; for (int i =...原创 2019-05-23 19:18:31 · 122 阅读 · 0 评论 -
C语言中格式化输出 %5.3s 的结果说明
在输出函数中 %s 为字符格式符,那么我们来看看以下的例子:#include <stdio.h>int main(){ printf("%6.5s", "computer"); printf("%5.3s\n", "computer"); printf("%s\n", "computer"); return 0;}输出结果:我们发现, %6.5s 输出为六列,五...原创 2019-05-22 17:07:29 · 8821 阅读 · 1 评论 -
C语言实现1/1-1/2+1/3-...-1/100求和
观察题目要求可以看出,底数为奇数是前面符号为正,偶数是则为负。那么我们可以考虑使用一下方式完成求解。解法一:#include <stdio.h>int main(){ double sum = 0; for (int i = 1; i <= 100; i++){ if (i % 2 == 0){ sum += -1 / (double)i; } el...原创 2019-05-19 23:49:45 · 42253 阅读 · 2 评论 -
C语言打印菱形
实现思想:先要将菱形分为上下两个三角形,接下来通过两个循环分别输出这两部分。首先设置变量line代表上三角行数,通过键盘输入,接着设置三个变量 i, j, k。 i 控制循环次数, j 控制空格数, k 控制“”的个数。在上三角中,循环line次,行数 =i+1,空格数=line-(i+1),“”的个数=2*(i+1)-1;在下三角中,循环line-1次,空格数=i+1,“”的个数=2line-...原创 2019-05-19 23:40:29 · 487 阅读 · 0 评论 -
C语言中break和exit()的区别
C中break和exit()之间有什么区别?1. break 和 exit() 之间的主要区别是:break是一个关键字,它会立即退出条件判断或者循环语句,而exit()标准库函数会在调用时终止程序执行。2. exit()函数的语法void exit(int status);exit(1)表示异常退出 (其实一切非0都是异常退出)exit(0)表示正常退出3. 下表显示了bre...原创 2019-04-25 21:24:27 · 5905 阅读 · 0 评论 -
用扑克牌学习插入排序(C语言)
插入排序:1.直接插入排序是一种最简单的排序方法,它的基本操作就是将一个记录插入到已排序好的有序表中,从而得到一个新的、记录数增1的有序表。直接插入排序算法描述:插入排序的算法其实就和每次摸扑克牌类似的,现在假设你面前有5张依次倒扣的扑克牌,这5张扑克牌分别从左到右分别为{4, 2, 5, 7, 1},但是在摸牌之前你是不知道点数的;现在开始摸牌:1.从左边第一张开始摸牌,摸起来发现点...原创 2019-04-16 20:57:12 · 1076 阅读 · 1 评论 -
C语言实现顺序表
顺序表是什么顺序表是在计算机内存中以数组的形式保存的线性表,是指用一组地址连续的存储单元依次存储数据元素的线性结构。线性表采用顺序存储的方式存储就称之为顺序表,顺序表是将表中的结点依次存放在计算机内存中一组地址连续的存储单元中。线性表采用指针链接的方式存储就称之为链表。顺序表图示顺序表的基本操作线性表的动态分配顺序结构:typedef struct SeqList{ int *arr...原创 2019-04-02 12:25:11 · 3507 阅读 · 0 评论 -
二分查找(C语言while循环实现)
二分查找(折半查找):用于有序序列的高效查找算法实现思路:如上图所示,要在递增排列的一组整数中查找关键字4,则每次折半比较中间值与关键字的大小,从而判断是往左边查找,还是向右边查找。代码实现:(while循环版本)#include <stdio.h>#include <stdlib.h>int BinaryFind(int arr[], int size,...原创 2019-02-14 15:34:16 · 2239 阅读 · 4 评论 -
用C语言实现简单的三子棋小游戏
程序思想:用一个字符数组来定义一个三子棋的棋盘,然后对棋盘进行初始化,初始化为空格;然后布置程序的框架:1.初始化棋盘2.打印出棋盘,第一次显示为空棋盘3.提示玩家落子,并检查游戏是否结束(玩家落子可能导致游戏直接结束)4.让电脑随机落子,并检查游戏是否结束5.循环执行第二步起初程序的框架:#include &lt;stdio.h&gt;#include &lt;stdlib....原创 2018-12-21 21:42:09 · 165 阅读 · 0 评论 -
C语言实现简单的猜数字游戏
#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <time.h>int Menu(){ printf("#######################\n"); printf("#######1.开始游戏######\n"); print...原创 2018-12-07 18:14:30 · 2309 阅读 · 0 评论 -
打印1000年—2000年之间的闰年
为什么会有闰年可以详细的去了解一下,对于这道题的理解也会更透彻一些;了解之后会发现闰年的规律:四年一闰,百年不闰,四百年再闰;源代码:#include <stdio.h>#include <stdlib.h>int main(){ int i = 0; int count = 0; for (i = 1000; i <= 2000; i++) ...原创 2018-12-02 23:11:16 · 581 阅读 · 0 评论 -
乘法口诀表
源代码://环境vs2013#include <stdio.h>#include <stdlib.h>int main(){ int i, j; for (i = 1; i <= 9; i++){ for (j = 1; j <= i; j++){ printf("%d*%d=%2d ", i, j, i*j); } p...原创 2018-12-02 23:06:38 · 122 阅读 · 0 评论 -
C程序查找IP地址,子网掩码和默认网关(C语言有趣的代码)
为什么会有这篇博客?今天在看计算机网络的看到了IP地址,脑瓜子突发奇想用C语言可以查看IP地址吗?C语言怎么查看IP地址呢?打开浏览器开始了搜索,零零碎碎的收集了一个简短的代码,贴出来分享~学以致用,用兴趣学习,嘻嘻嘻~~~一般查看IP地址的方法:(以windows 10为例)1. 用win+R打开命令提示符2. 输入cmd3. 输入ipconfigC语言代...原创 2019-04-26 11:00:57 · 3405 阅读 · 5 评论 -
想知道你写的C语言代码如何运行的吗?看这里!!!
C语言编译链接----幕后小故事我们在计算机中写的.c文件,被称为C语言源代码,这种源代码机器是不认识的,为了让机器认识C语言源代码,那么必须要经过这么几个过程(预处理、编译、汇编、链接、加载),让源代码变为机器语言的目标文件,才可以变为可执行程序。下图为编译过程:预处理器编译器汇编器链接器加载器源代码扩展的源代码汇编源代码目标代码可执行代码可执行文件讲解上图:这里的源代码姑且叫它sam...原创 2019-04-23 11:05:41 · 5371 阅读 · 0 评论 -
Linux中fork()系统调用函数
什么是fork()fork()系统调用用于创建新进程,新创建的进程为子进程,调用fork()并创建新进程的进程是父进程。fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,这俩个进程默认完成同样的功能,但如果初始参数和传入的变量不同,俩个进程也可以完成不同的功能。父子进程运行的时间: 子进程和父进程是同时执行的。但是输出没有固定的顺序,有可能父进程先输出,也有可能子进程先输出...原创 2019-04-25 17:44:34 · 3408 阅读 · 1 评论 -
C语言打印环境变量
1 #include <stdio.h> 2 3 int main(int argc, char *argv[], char *envp[]){ 4 int i; 5 for(i = 0; envp[i] != NULL; i++){ 6 printf("\n%s", envp[i]); 7 } 8 9 ...原创 2019-04-29 23:18:20 · 875 阅读 · 0 评论 -
字节序:大端字节序(Big Endian) & 小端字节序(Little Endian)
一、什么是字节序?多字节数据存储在存储器中的顺序就叫做字节序。字节序又分为俩种,一种叫做小端字节序;另外一种叫做大端字节序。二、大端字节序(Big Endian)& 小端字节序(Little Endian)大端字节序:在大端字节序的机器中,首先会存储多字节数据类型的二进制表示的第一个字节;小端字节序:在小端字节序的机器中,首先会存储多字节数据类型的二进制表示的最后一个字节;我们用...原创 2019-04-29 22:48:58 · 6280 阅读 · 0 评论 -
C语言获取主机名和IP地址
获取主机与IP地址的C语言代码我们将使用以下函数:gethostname():gethostname函数检索本地计算机的标准主机名。gethostbyname():gethostbyname函数从主机数据库中检索与主机名对应的主机信息。inet_ntoa():inet_ntoa函数将(Ipv4)Internet网络地址转换为Internet标准点分十进制格式的ASCII字符串。代码来源于...原创 2019-04-28 17:13:49 · 6542 阅读 · 5 评论 -
Linux下彩色进度条的实现
什么是进度条?进度条即计算机在处理任务时,实时的,以图片形式显示处理任务的速度,完成度,剩余未完成任务量的大小,和可能需要处理时间,一般以长方形条状显示。实现所需要的知识:输出函数、缓冲区、usleep函数以及Linux终端中颜色的显示。什么是缓冲区缓冲区又称为缓存,它是内存空间的一部分。也就是说,在内存空间中预留了一定的存储空间,这些存储空间用来缓冲输入或输出的数据,这部分预留的空...原创 2019-04-23 23:28:38 · 145 阅读 · 3 评论 -
C语言的内存布局(详细分析变量在.bss和DS段的分布)
引言随着深入的学习C语言,这门语言是与内存息息相关的,那么为了更好地认识这门语言,我们就要从内存深入剖析,此篇博客来浅谈一下C语言的内存布局。从内存布局谈起运行中的C语言内存布局上图中显示了,C语言的内存布局,可以看到的区域有,文本段,初始化数据端、未初始化数据段,还有堆与栈。分析各段作用(1) 文本段(.text)文本段,也叫作代码段;是目标文件(二进制文件)...原创 2019-04-28 15:44:33 · 2431 阅读 · 1 评论 -
【面试题】gcc/g++编译器的使用
什么是gcc?gcc命令使用GNU推出的基于C/C++的编译器,是开放源代码领域应用最广泛的编译器,具有功能强大,编译代码支持性能优化等特点。现在很多程序员都应用GCC,怎样才能更好的应用GCC。目前,GCC可以用来编译C/C++、FORTRAN、JAVA、OBJC、ADA等语言的程序,可根据需要选择安装支持的语言。gcc的使用:语法gcc [选项] [参数]选项-o:指定生...原创 2019-04-23 20:35:28 · 1108 阅读 · 0 评论 -
内存对齐?看这一篇就够了
什么是字节对齐?字节(Byte)是计算机信息技术用于计量存储容量和传输容量的一种计量单位,一个字节等于8位二进制数,在UTF-8编码中,一个英文字符等于一个字节。字节按照一定规则在空间上排列就是字节对齐。C / C ++中的每种数据类型都有对齐要求(事实上它是由处理器架构强制实现的,而不是由语言强制实施)。处理器将具有与数据总线大小相同的处理字长。在32位机器上 ,处理字大小为4个字节。为什么...原创 2019-04-23 17:49:57 · 888 阅读 · 1 评论 -
C/C++ 转义字符与运算符优先级表
转义字符表:运算符优先级表:(数字越小,优先级越高)原创 2019-06-20 12:55:47 · 493 阅读 · 0 评论