![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言
ChengQianO
这个作者很懒,什么都没留下…
展开
-
git的基本使用总结
Git的基本使用本地仓库环境:Centos (windos下安装git后,打开gitbash类似)1.创建本地仓库。在要创建的目录下git init //此时会多出一个文件夹.git2.把文件添加到版本库中git add .git add 具体文件名3.提交到本地仓库 git commit -m "注释"远程仓库1.github上创建仓库2.将本地的ssh添加到githubssh-keygen -t rsa –C “youremail@example.com“ //创建完成原创 2020-12-30 20:42:54 · 174 阅读 · 1 评论 -
快速排序
该程序具有平均运行时间T(n) = O(nlgn), 最差运行时间T(n) = O(n^2);下面给出一个简单的排序实例对以上算法进行简单说明:初始数组为--------------> S: 6,10,13,5,8,3,2,11将第一个元素赋值给v----->v = 6;以v为标准将S进行拆分—>[2,5,3],[6],[8,13,10,11] <---------...原创 2019-03-14 18:22:50 · 113 阅读 · 0 评论 -
大富翁问题
问题描述我们来玩一个大富翁的游戏,在地图上有N个连续的城市,城市对某件商品的售价为[V1,V2,V3…VN],你作为未来的大富翁看到其中的商机,打起了倒卖商品赚取差价的主意。约束条件:你只能顺序从第一个城市出发,不能走回头路,每次只能交易一件商品,再下次买入商品后必须卖掉之前买入的商品,求你能赚取的最大财富。比如:城市商品售价为[1,9,2,3,8],最大财富为(9-1)+(8-2)=14;城...原创 2018-09-26 10:33:16 · 870 阅读 · 1 评论 -
栈帧
1、什么是栈帧esp栈顶 ebp栈底之间的空间被称为栈帧 2、栈帧的过程c代码#include<stdio.h>int Add(int x, int y){ int z = 0; z = x + y; return z;}int main(){ int a = 10; int b = 20; int ret = Add(a,b);原创 2018-01-05 09:55:36 · 351 阅读 · 0 评论 -
杨氏矩阵
有一个二维数组. 数组的每行从左到右是递增的,每列从上到下是递增的. 在这样的数组中查找一个数字是否存在。 时间复杂度小于O(N); 数组: 1 2 3 2 3 4 3 4 5 代码#include<stdio.h>#include<stdlib.h>int found (int arr[][3],int sz,int num){ int i = 0 ;原创 2017-12-18 16:08:48 · 126 阅读 · 0 评论 -
调整数组使奇数全部都位于偶数前面
代码:#include<stdio.h>#include<stdlib.h>void exchange(int arr[],int sz){ int q = 0; int p = sz-1; while(q<p) { if(arr[q]%2 ==1) { q++; } if(原创 2017-12-18 11:48:40 · 130 阅读 · 0 评论 -
字符数组内容逆序输出
有一个字符数组的内容为:”student a am i”,请你将数组的内容改为”i am a student”.主要实现:先把每个单词逆序,在整体逆序输出。 代码:#include<stdio.h>#include<stdlib.h>#include<ctype.h>void reserves(char *start,char *end){ while(start<end)原创 2017-12-18 11:15:17 · 3817 阅读 · 0 评论 -
一组数据中只有一个数字出现了一次。其他所有数字都是成对出现的。找出这个数字。(使用位运算)
代码实现#include<stdio.h>#include<stdlib.h>int main(){ int sz = 0; int i = 0; int j = 0; int var = 0; int arr[] = {2,3,4,5,6,7,8,8,7,6,5,4,3,2,21}; sz = sizeof(arr)/sizeof(arr[0]原创 2017-12-18 09:37:33 · 189 阅读 · 0 评论 -
不使用(a+b)/2这种方式,求两个数的平均值
#include<stdio.h>#include<stdlib.h>int main(){ int a=8; int b=6; int average1 = 0; int average2 = 0; average1 = a+(b-a)/2; average2 = (a&b)+(a^b)>>1; printf(" %d %d\n",av原创 2017-12-17 21:05:28 · 140 阅读 · 0 评论 -
二进制位模式从左到右翻转
例如:在32位机器上25这个值包含下列各位: 00000000000000000000000000011001 翻转后:(2550136832) 代码#include<stdio.h>#include<stdlib.h>unsigned int reverse_bit(unsigned int n){ int value = 0; int i = 0; for原创 2017-12-17 21:04:45 · 320 阅读 · 0 评论 -
宏的使用
1.数字的奇数位和偶数位交换#include<stdio.h>#include<stdlib.h>#define EXCHANGE(x) \ (((((x)&0x55555555))<<1) | ((((x)&0xaaaaaaaa)>>1)))int main(){ int x = 123; printf("%u\n", EXCHANGE(x)); syst原创 2017-12-17 20:23:01 · 121 阅读 · 0 评论 -
杨辉三角
打印杨辉三角代码#include&lt;stdio.h&gt;#include&lt;stdlib.h&gt;int main(){ int a[256][256] = {1}; int n = 0;//行数 int i = 0; int j = 0;//空格数 int z = 0; printf("请输入行数: "); ...原创 2017-12-17 19:27:41 · 164 阅读 · 0 评论 -
谁是凶手
日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯 的一个。以下为4个嫌疑犯的供词。A说:不是我。 B说:是C。 C说:是D。 D说:C在胡说 已知3个人说了真话,1个人说的是假话。 现在请根据这些信息,写一个程序来确定到底谁是凶手。 代码#include<stdio.h>#include<stdlib.h>int main(){ int murde原创 2017-12-12 21:05:27 · 398 阅读 · 0 评论 -
Visual Studio2017(其他版本类似)IDE的基本使用
最近有好多人问我Visual Studio2017怎么使用,我在此从简单的创建项目开始说明一下怎么使用。一.创建工程点开软件后是这个界面点击左上角的 文件-&gt;新建-&gt;项目选择好后点击确定,c和c++的创建流程是一样的,只是在写的时候源文件不同而已。二.程序编写创建好后,查看解决方案资源管理器,没有出现的话依次点击:左上角工具栏中:视图-&gt;解决方案管理器。这时源文...原创 2018-09-26 11:55:22 · 967 阅读 · 1 评论 -
递归实现全排列(dfs)
#include <iostream>int a[3] = { 0,1,2 }, c[3] = { 0 };void dfs(int i){ if (i > 2) { for (int m = 0; m < 3; m++) std::cout << a[m]; std::cout << std::endl; } else...原创 2019-03-01 11:46:40 · 352 阅读 · 0 评论 -
排序
1.插入排序void InsertSort(int *array,int size){ for (int i = 1; i < size; i++) { int key = array[i]; //寻找key的插入位置 int end = i - 1; while(key < array[end]) { array[end + 1] = array[e...原创 2019-05-31 17:47:31 · 239 阅读 · 0 评论 -
C语言总结
c语言是一门静态弱类型的语言,在学习过程中一直没有进行总体性和总结和贯通,为传统已学的知识点和为将来复习便利,现总结c语言整体框架如下:...原创 2019-04-29 22:39:15 · 149 阅读 · 0 评论 -
结构体自定义类型的知识
一、创建结构体1、结构体是是一些值的集合,这些值被称为成员变量。 2、结构体内的成员可以是不同类型的成员变量。 3、创建结构体struct S{ //结构体名称 int a; //内部成员 char b; //内部成员 double c; //内部成员};4、结构体内部成员的访问:(1)结构体变量访问成...原创 2019-04-18 18:35:58 · 393 阅读 · 1 评论 -
简单通讯录编写(对结构体部分知识应用)
#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>#define MAX_PERSON_SIZE 1024typedef void(*Func)();typedef struct PersonInfo{ char name[...原创 2019-04-18 17:04:45 · 237 阅读 · 0 评论 -
String库函数部分实现
1.实现strcpy2.实现strcat3.实现strstr4.实现strchr5.实现strcmp6.实现memcpy7.实现memmove原创 2019-04-15 11:57:41 · 149 阅读 · 0 评论 -
c语言文件操作
本文介绍了c语言的文件操作,重点阐释了各个文件操作函数的作用,总结了日常使用文件操作的方法,加深对文件操作的理解。一、文件1.文件分类文件可以分为为文本文件或者二进制文件。数据在内存中以二进制的形式存储,如果不加转换的输出到外存,就是二进制文件。如果要求在外存上以ASCII码的形式存储,则需要在存储前转换。以ASCII字符的形式存储的文件就是文本文件。2.文件缓冲区ANSIC 标准采用“...原创 2019-04-21 22:34:25 · 219 阅读 · 0 评论 -
动态内存管理
一、内存管理C语言动态内存内存是非常重要的一部分,首先c的内存存储方式如下图:其中,栈的空间是我们经常使用的,但是通常栈的大小只占内存的1%,因此,当我们使用较大的数据量时,栈就不够用了,而堆的空间几乎占据了整个内存,但是使用时需要程序员自己进行手动申请和释放。还有在设置变量时,类如通讯类存储联系人的数量,如果设置成固定长的数组,在联系人存满时就会出现问题,这时如果可以在程序运行过程中进行扩...原创 2019-04-21 16:28:46 · 155 阅读 · 0 评论 -
判断回文数
“回文”是指正读反读都能读通的句子,它是古今中外都有的一种修辞方式和文字游戏,如“我为人人,人人为我”等。在数学中也有这样一类数字有这样的特征,成为回文数(palindrome number)。 设n是一任意自然数。若将n的各位数字反向排列所得自然数n1与n相等,则称n为一回文数。例如,若n...原创 2019-04-12 21:33:49 · 296 阅读 · 0 评论 -
旋转的字符串
简单题目练习主体思路:字符串的循环移动可以理解为冒泡替换,循环左移1次可以是从左向右进行一次冒泡,2次则是进行两次。循环右移1次可以是从右向左进行一次冒泡,2次则是进行两次。期间发现无论左移还是右移产生的结果都是相同的,因此第二题判断可以只循环左移或者右移的结果,然后判断与待判定字符串是否相同。1.实现一个函数,可以左旋字符串中的k个字符。ABCD左旋一个字符得到BCDAABCD左旋两个字...原创 2019-04-08 17:47:35 · 88 阅读 · 1 评论 -
C语言题目练习(一)
1.一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。找出这两个数字,编程实现。#include<stdio.h>void found(int *num, int sz){ int i = 0; int j = 0; for ( i = 0; i <= sz - 1; i++) { for ( j = 0; j <= sz - 1; j++)...原创 2019-04-10 17:10:57 · 134 阅读 · 0 评论 -
递归练习
1.递归和非递归分别实现求第n个斐波那契数。2.编写一个函数实现n^k,使用递归实现 int pow(int n,int k) { if (k == 0) return 1; return n * pow(n, k - 1); }写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和,例如,...原创 2019-04-10 14:47:39 · 94 阅读 · 0 评论 -
跳水逻辑问题
问题:5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果 A选手说:B第二,我第三; B选手说:我第二,E第四; C选手说:我第一,D第二; D选手说:C最后,我第三; E选手说:我第四,A第一; 比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。 代码#include<stdio.h>#include<stdlib.h>int main(){原创 2017-12-12 19:57:31 · 251 阅读 · 0 评论 -
三子棋和扫雷游戏的实现
主函数#include<stdio.h>#include<assert.h>#include<stdlib.h>#include"sanziqi.h"#include"saolei.h"void init(){ printf("******************************************\n"); printf("** 1.三子棋原创 2017-12-10 16:11:29 · 198 阅读 · 0 评论 -
创建一个数组, 实现函数init()初始化数组实现empty()清空数组实现reverse()函数完成数组元素的逆置。
#include<stdio.h>#include<stdlib.h>void init(int arr[],int sz){ int i = 0; for(i = 0;i< sz;i++ ) { arr[i] = i; }}void emept(int arr[],int sz){ int i = 0; for(i =原创 2017-11-27 21:09:03 · 484 阅读 · 0 评论 -
1到 100 的所有整数中出现多少次数字9
先判断个位是否为9,在判断十位为9。#include<stdio.h>#include<stdlib.h>int main(){ int i = 0; int count = 0; for(i = 1;i <= 100;i++) { if(i%10 == 9) { count++; }原创 2017-11-15 15:58:29 · 1024 阅读 · 0 评论 -
计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值。
计算方法以循环为主,需要注意的是精度问题。#include<stdio.h>#include<stdlib.h>int main(){ int i = 0; double sum = 0.0; for(i = 1; i<=100; i++) { if(i%2==0) { sum = sum - (doubl原创 2017-11-15 15:09:56 · 817 阅读 · 0 评论 -
将数组A中的内容和数组B中的内容进行交换。(数组一样大)
方法和交换两个数的值没有什么区别,在外部加入循环即可。#include<stdio.h>#include<stdlib.h>int main(){ int arr[] = {0,1,2,3,4}; int arr1[] = {5,6,7,8,9}; int n = 0; int i=0; printf("arr:"); for(i = 0;i<(原创 2017-11-15 14:20:33 · 249 阅读 · 0 评论 -
求两个数的最大公约数
求公约数有多种方法,在这主要介绍两种方法。1、更相减损之术 以两数中较大的数减去较小的数,获得的差与原先较小的数构成新的一对数,在以大的数减去小的数,依次循环。用同样的方法操作,直至产生一对相等的数为止,该数即为最大公约数。 #include<stdio.h>#include<stdlib.h>int main(){ int n,a,b,c; n=1; printf(原创 2017-10-09 00:08:19 · 403 阅读 · 0 评论 -
将三个数按从大到小输出
简单的排序问题,用经典的冒泡法可以解决,两两比较数把大的数放到前面。#include<stdio.h>#include<stdlib.h>int main(){ int a[3]={0}; int i=0; int j=0; printf("请输入三个整数:"); for(i=0;i<3;i++) { scanf("%d",&a[原创 2017-10-07 16:54:55 · 521 阅读 · 0 评论 -
求10 个整数中最大值。
找出10个数的最大值中心思想是将十个数存入数组,在进行两两比较,找出最大的数存入一个变量中,如果两个数中最大的数没有变量中的数大则不改变变量的值,反之则改变变量的值。#include<stdio.h>#include<stdlib.h>int main(){ int a[10]={0}; int i=0; int temp=0; printf("请输入10个整数原创 2017-10-07 16:52:12 · 832 阅读 · 0 评论 -
不通过中间变量 交换两个数的值
不通过中间变量交换两个数的值可以有效的节省内存空间,具体做法有以下两种。1、异或算法 a=a^b; b=a^b; a=a^b; 原理介绍:从第二行带入算式b=a^b=a^b^b=a; a=a^b^a^b^b=b;#include<stdio.h>#include<stdlib.h>int main(){ int a=0; in原创 2017-10-07 16:46:55 · 341 阅读 · 0 评论 -
两个整形变量的值,将两个值的内容进行交换
交换两个的值中心思想是通过中间变量#include<stdio.h>#include<stdlib.h>int main(){ int a=0; int b=0; int c=0; printf("请输入a,b的值:"); scanf("%d%d",&a,&b); printf("a=%d b=%d\n",a,b); printf("交换后原创 2017-10-07 15:49:55 · 297 阅读 · 0 评论 -
判断1000年---2000年之间的闰年
判断1000年—2000年之间的闰年#include<stdio.h>#include<stdlib.h>#include <math.h>int main(){ int year=0; for(year=1000; year<=2000; year++) if(((year%4==0)&&(year%100!=0)) || year%400==0)原创 2017-09-29 23:33:26 · 228 阅读 · 0 评论 -
输出乘法口诀表,任意行列乘法表
输出乘法口诀表 #include<stdio.h>#include<stdlib.h>#include <math.h>int main(){ int i,j; for(i=1; i<=9; i++) { for(j=1; j<=i; j++) { printf("%d*%d=%d\t ",i,j,i*j);原创 2017-09-29 23:32:04 · 335 阅读 · 0 评论 -
打印100~200 之间的素数
###打印100~200 之间的素数 #include<stdio.h>#include<stdlib.h>#include <math.h>int main(){ int i=0; int j=0; int count=0; for(i=100; i<=200; i++) { for(j=2; j<i; j++) {原创 2017-09-29 23:30:31 · 250 阅读 · 0 评论