C语言
文章平均质量分 77
snow_5288
三天不读书,智商输给猪
展开
-
C/C++容易混淆的小知识点
1、函数传指针和传引用的区别? 1>指针定义时可以不初始化,但引用不行; 2>引用只能和一个实体结合,而指针可和多个实体结合; 3>自加减意义不同。指针的++表示指针向后偏移类型个字节,而引用则是+1,–类似; 4>sizeof求值的意义不同。Sizeof(指针)是指针所占的字节数,32位平台下为4,64位平台下为8(数组名除外),sizeof(引用)是指引用所指实体类型的大小; 5>没有原创 2017-08-12 19:27:57 · 2860 阅读 · 4 评论 -
未完成的代码!
3. 5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果A选手说:B第一,我第三。B选手说:我第二,E第四。C选手说:我第一,D第二。D选手说:C最后,我第三。E选手说:我第四,A第一。比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。4. 日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个。以下为4个嫌疑犯的供词。原创 2016-03-30 22:50:53 · 604 阅读 · 0 评论 -
一段改变我思想的代码!!!
有一个字符数组的内容为:"student a am i",请你将数组的内容改为"i am a student".要求:不能使用库函数。只能开辟有限个空间(空间个数和字符串的长度无关)。#include#includeint main(){int i=0;char arr[]="student a am i";int sz=sizeof(arr)/原创 2016-04-08 14:06:52 · 474 阅读 · 0 评论 -
常见字符串函数的原型!!!
1、strcat//将指针指向的字符串放到目的字符串后[cpp]char *strcat(char *strDest, const char *strScr) //将源字符串加const,表明其为输入参数 { char * address = strDest; //该语句若放在assert之后,编译出错 asse原创 2016-04-13 22:12:24 · 1458 阅读 · 0 评论 -
好朋友?陌生人?-------指针与数组
数组:用来保存一组相同类型的元素的集合指针:专门用来保存一个变量的地址,即指针就是地址原创 2016-04-26 20:15:22 · 624 阅读 · 0 评论 -
sizeof和strlen
sizeof:判断数据类型长度符的关键字,用于求取一个对象或者类型所占的内存字节数strlen:求取字符串长度的函数,不包括‘\0’例题说明:1,整型数组int a[]={1,2,3,4};printf("%d\n",sizeof(a));-----16//a表示整个数组的地址,在32位系统下,所有地址均占4个字节,所以结果为16printf("%d\n",sizeof原创 2016-04-28 00:12:45 · 486 阅读 · 0 评论 -
加减乘除计算器
一,首先,我们用最常规,最容易想到的办法写出代码#include#includevoid menu(){ printf("1.add 2.sub 3.mul 4.div 0.exit\n");}int Add(int num1,int num2){ return num1+num2;}int Sub(int num1,int num2)原创 2016-05-02 16:39:48 · 894 阅读 · 1 评论 -
与众不同!(strrstr strrchr)
#define _CRT_SECURE_NO_WARNINGS 1#include#include#include#includechar *my_strrstr(char const *str,char const *dest){ int sz1=strlen(str); int sz2=strlen(dest); int n=0; char const *pstr=str;原创 2016-05-07 16:53:18 · 726 阅读 · 0 评论 -
我眼中的结构体
一,结构体的定义聚合数据类型:能够同时存储超过一个的单独数据(例如C语言中的数组和结构体)结构体是一些值的集合,这些值成为它的成员,既是一种自定义类型,也是一种聚合数据类型。二,结构体的声明及具体使用1,声明在声明结构体时,必须列出它包含的所有成员。struct A{ int a; char c;};A仅仅为一个标签,单独的A并不是结构体的类原创 2016-05-08 17:15:33 · 611 阅读 · 0 评论 -
经典笔试题123
1.实现对一个8bit位数据(unsigned char 类型)的指定位(例如第n位)的置0或置1操作,并保持其他位不变。函数原型:void bit_set(unsigned char *p_data,unsigned char position,int flag)函数参数说明:P_data是指定的原数据,position是指定位(取值范围为1~8),flag表示是置0还是置1.原创 2016-05-30 11:03:23 · 575 阅读 · 0 评论 -
多么痛的领悟!!!
传说中的一步错步步错:1>------ 已启动生成: 项目: linklist.c, 配置: Debug Win32 ------1>生成启动时间为 2016/6/4 18:14:03。1>InitializeBuildStatus:1> 正在对“Debug\linklist.c.unsuccessfulbuild”执行 Touch 任务。1>ClCompile:1>原创 2016-06-04 18:53:24 · 2089 阅读 · 2 评论 -
一塌糊涂的code!!!
#include#includeint main(){int m;m=getchar();if(48{ ;}if((m>=65)&&(m{printf("%c\n",m+32);}if(97{printf("%c\n",m-32);}sys原创 2016-03-21 13:30:09 · 636 阅读 · 0 评论 -
hehe之小程序
作业:1.给定两个整形变量的值,将两个值的内容进行交换。2. 不允许创建临时变量,交换两个数的内容(附加题)3. 求10 个整数中最大值。4. 写一个函数返回参数二进制中 1 的个数比如: 15 0000 1111 4 个 1程序原型:int count_one_bits(unsigned int value){ // 返回原创 2016-03-17 10:42:27 · 546 阅读 · 3 评论 -
我的代码日程
3-13特别:注册自己的csdn博客。1. 打印100~200 之间的素数2. 输出乘法口诀表3. 判断1000年---2000年之间的闰年1*1=12*1=2 2*2=43*1=3 3*2=6 3*3=9。。。 素数#includeint main(){int i,n=0;for(n=原创 2016-03-17 10:39:04 · 891 阅读 · 0 评论 -
实现1+2+3...+n,要求不能使用乘除法、循环、条件判断、选择相关的关键字(for、while、if、else、switch、case)。
解法1:利用递归(&&的短路特性)&&的短路特性:即A&&B中,加入A为假,那么B就不会被运算,因此我们只要将递归放在B中,而将终止条件放在A中即可解决该问题。。。 1 /************************************** 2 *文件说明:recursion.cpp 3 *作者:段晓雪 4 *创建时间:2017年07月15日 星期六 09时54分25秒 5原创 2017-07-15 13:59:12 · 1877 阅读 · 14 评论 -
详解交换两个数的值
见到这道题,可能你会想到小时候玩过的游戏,将分别装有酱油和醋的两个瓶子交换,醋装到酱油瓶子里,酱油装到醋瓶子里,我们都知道,交换的过程需要家住一个空瓶子,当然,我们这道题也是同样的道理,需要创建一个临时变量来辅助交换。下面看具体的代码实现:#include//程序中用到输出函数printf,所以需要引其对应的头文件#include//system的头文件int main(){ in原创 2016-05-21 12:16:02 · 4191 阅读 · 3 评论 -
C语言模拟实现C++的继承与多态
一、面向过程编程与面向对象编程的区别 众所周知,C语言是一种典型的面向过程编程语言,而C++确实在它的基础上改进的一款面向对象编程语言,那么,面向过程与面向对象到底有什么样的区别呢?【从设计方法角度看】 面向过程程序设计方法采用函数(或过程)来描述对数据的操作,但又将函数与其操作的数据分离开来。 面向对象程序设计方法是将数据和对象的操作封装在一起,作为一个整体来处理。【从维护角原创 2017-04-16 21:28:27 · 4624 阅读 · 0 评论 -
统计一个数二进制形式中1的个数
1、题目要求写一个参数二进制中1的个数,比如:15----> 0000 1111 ----> 4个12、函数原型int count_one_bits(unsigned int value){ //返回1的个数}3、实现代码及思路思路一:我们知道,一个无符号整数在内存中占用了4个字节即32个bit位,既然是想统计二进制中1 的个数,我们就可以遍历这32个原创 2017-03-12 12:07:06 · 1388 阅读 · 0 评论 -
(C语言)顺序表之动态实现
点击打开链接(静态实现版)头文件:#define _CRT_SECURE_NO_WARNINGS 1#ifndef _SEQLIST_H__#define _SEQLIST_H__#include#include#include#include#define MAX 2#define CHANGE_MAX 2typedef int TYPE;typedef stru原创 2016-06-01 18:36:38 · 1114 阅读 · 0 评论 -
(C语言)自拟顺序表的各种操作
总是要进步的。。。原创 2016-05-27 23:00:50 · 637 阅读 · 0 评论 -
竟然栽倒在这里!(通讯录一)
#define _CRT_SECURE_NO_WARNINGS 1#ifndef __CONTACT_H//防止重复引入#define __CONTACT_H__#include #include #includeenum OP//使用枚举,让switch语句更清晰明了{ EXIT, ADD, DEL, MODIFY, SEARCH, DISPLAY, SORT原创 2016-05-12 23:53:48 · 999 阅读 · 1 评论 -
通讯录(三)----文件实现
通讯录(一)-----静态实现 http://blog.csdn.net/snow_5288/article/details/51388708通讯录(二)-----静态实现 http://blog.csdn.net/snow_5288/article/details/51420133在以上两种方式中,每次运行程序我们都得重新输入,之前输原创 2016-05-20 18:40:12 · 2094 阅读 · 0 评论 -
通讯录(二)----动态实现
#include"contact.h"void menu()//打印菜单{ printf("***********************\n"); printf("1. 添加联系人信息\n"); printf("2. 删除指定联系人信息\n"); printf("3. 修改指定联系人信息\n"); printf("4. 查找指定联系原创 2016-05-15 23:18:45 · 1210 阅读 · 4 评论 -
8大排序之----冒泡,直接插入,选择排序
学过编程的应该都知道,排序算法有很多种,想把每种算法的基本思想搞懂弄清确实得下一番功夫,今天我先介绍几种简单的,冒泡排序,直接插入排序和选择排序,一定要搞的各种思想的差异。1,冒泡排序(升序)基本思想: 相邻的两个元素进行比较,如果前一个元素大于后一个元素,则交换二者位置,接着继续向后循环比较直到最后一个元素,这样一趟下来就可以将最大的那个元素放到最后的位置。完成之后,原创 2016-06-01 22:00:28 · 834 阅读 · 0 评论 -
小程序之再度理解
1. 打印100~200 之间的素数#define _CRT_SECURE_NO_WARNINGS 1#include#includeint main(){ int n=0; for(n=101; n<=200; n=n+2) { int i=0; for(i=2; i<=n; i++) { if(n%i==0)原创 2016-06-11 23:15:17 · 1684 阅读 · 1 评论 -
再一遍
1. 给定两个整形变量的值,将两个值的内容进行交换。2. 不允许创建临时变量,交换两个数的内容(附加题)#define _CRT_SECURE_NO_WARNINGS 1#include#includevoid swap(int *x,int *y){ int tmp=*x; *x=*y; *y=tmp;}int main(){ int a=10;原创 2016-06-12 12:09:06 · 484 阅读 · 0 评论 -
又一波经典小程序
1.将数组A中的内容和数组B中的内容进行交换。(数组一样大)#include#include#define N 5void swap_arr(int arr1[],int arr2[]){ int i=0; for(i=0; i<N; i++) { int tmp=0; tmp=arr1[i]; arr1[i]=arr2[i];原创 2016-06-14 23:44:32 · 2053 阅读 · 1 评论 -
C语言斐波那契数列的多种实现
//递归实现#define _CRT_SECURE_NO_WARNINGS 1 #include#includeint fibc(int n)//缺点:如果n较大,则效率大大降低{ if(n<=1) return n; else return fibc(n-1)+fibc(n-2); }int main(){ int num = 0; int ret = 0;原创 2016-07-26 12:05:59 · 924 阅读 · 0 评论 -
C语言找一组数中单独出现的数字
一组数中只有一个或两个数单独出现,其他均成对出现,请找出他们原创 2016-07-26 12:22:20 · 1516 阅读 · 0 评论 -
C语言正序输出输出一个整数的每一位
//递归实现#define _CRT_SECURE_NO_WARNINGS 1 #include#includevoid print(int n){ if(n<0) n=-n; if(n>=10) print(n/10); printf("%d ",n%10);}int main(){ int num = 0; printf("请输入一个整原创 2016-07-26 12:26:48 · 12303 阅读 · 0 评论 -
《剑指offer》的又三个面试题
1.调整数组使奇数全部都位于偶数前面。题目:输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分。2.有一个二维数组.数组的每行从左到右是递增的,每列从上到下是递增的.在这样的数组中查找一个数字是否存在。时间复杂度小于O(N);1 2 3 2 3 4 3 4 53.一个字符串中查找第一个只出现一次的字符。要求复杂度为O(N).例如:字符串:"aaaabfqccrbdw",返回f.原创 2016-07-30 16:19:04 · 2779 阅读 · 1 评论 -
万恶的金山笔试题
这么难的题也敢出,吓死宝宝了!原创 2016-08-06 18:49:44 · 1499 阅读 · 0 评论 -
指针?数组?函数?
首先,必须弄明白三者的区别和联系:指针: 为了保存某个变量的地址而存在,也有人说,指针就是地址。了解指针,必须关注 三点:1.指针变量的内容,一般保存的是另一个变量的地址。2.指针变量也有它本身的地址,一般保存在更高一级的指针变量里或不保存。3.想要通过指针访问它保存的内容,需通过对指针变量进行解引用。注意:不管什么类型的指针,在内存中都只占4个字节原创 2016-08-06 19:48:49 · 473 阅读 · 1 评论 -
用回调函数实现冒泡排序
用冒泡排序同时排序不同类型的数组,参看库函数sqort的实现!原创 2016-08-06 20:27:15 · 775 阅读 · 0 评论 -
二分查找的多种实现
折半查找(即二分查找)二分搜索算法:给定排好序的n个元素arr[0:n-1],在这n个元素中找出一特定元素x. 首先比较容易想到的办法是用顺序搜索方法,逐个比较a[0:n-1]中的元素 ,直至找出元素x或搜索遍整个数组后确定x不在其中,这个方法没有很好的利用n个元素已排好序这个条件,因此在最坏情况下,顺序搜索的方法需要O(n)次比较。 而二分搜素搜的基本思想是将n个原创 2016-09-10 21:34:54 · 1567 阅读 · 0 评论 -
动态内存浅析
首先,我们先来谈谈为什么要使用动态内存分配? 我们都知道,数组是相同元素的一组集合,它的各个元素之间也是连续存储的,所以内存会在编译阶段就为其分配所需的空间,而且在定义数组时就需要准确的标明数组的元素个数,这就导致了数组的长度不得不在运行时候方可得知,因为数组元素所占空间必须由输入数据来决定,这点就形成了数组本身致命的缺陷,同时也影响了程序的灵活性与健壮性。原创 2016-09-11 09:37:56 · 1595 阅读 · 0 评论 -
(C语言版)猴子吃桃问题
问题描述:/*有一群猴子,去摘了一堆桃子*//*商量之后决定每天吃剩余桃子的一半*//*当每天大家吃完桃子之后,有个贪心的小猴都会偷偷再吃一个桃子*//*按照这样的方式猴子们每天都快乐的吃着桃子*//*直到第十天,当大家再想吃桃子时,发现只剩下一个桃子了*/问:猴子们一共摘了多少桃子原创 2016-09-17 11:24:03 · 124389 阅读 · 8 评论 -
旋转字符串并判断
左旋字符串:#define _CRT_SECURE_NO_WARNINGS 1 #include#include#include#includevoid reverse(char *str,int left,int right){ assert(str); while(left<right) { char tmp=*(str+left);原创 2016-07-25 11:48:45 · 603 阅读 · 0 评论 -
字符串替换空格的两种方法
从"we are happy."---->"we%20are%20happy."代码一:#define _CRT_SECURE_NO_WARNINGS 1#include#includevoid replace_black(char arr[],int sz) { int i=0; int len=0; for(i=0; i<sz; i++) {原创 2016-07-20 17:34:10 · 746 阅读 · 0 评论 -
模拟常见的字符操作函数
1.模拟strcpy(字符串拷贝函数) strncpy(受限制的字符串拷贝函数)2.模拟strlen(求取字符串长度)普通实现,指针实现,递归实现3.模拟strstr(在所给字符串中查找子串第一次出现的位置)4.strcat(字符串连接) strncat(受限制的字符串连接)5.strchr(在字符串中查找某个字符)6.strcmp(字符串比较)实现1,实现2 strncmp(受限制的字符串比较)7.memcpy:内存拷贝函数(两块内存不关联) memmove原创 2016-07-23 20:11:35 · 8551 阅读 · 0 评论