c语言学习笔记
文章平均质量分 52
miaomiao328
这个作者很懒,什么都没留下…
展开
-
生活中的小代码,每瓶汽水1元,两能喝多少瓶个空瓶可以置换一瓶汽水,现有20元,最多 能喝多少瓶汽水。(编程实现)
#includeint main(){int money=20;int total=money;int empty=money;while(empty>1){total+=empty/2;//买的加上空瓶换的empty=empty/2+empty%2;//判断剩余空瓶是否为一个,两次均剩余一个则总饮料数目再加1}printf("%d\n",total);原创 2016-04-11 23:03:09 · 371 阅读 · 0 评论 -
strcat和strncat
strcat所属头文件:#includechar *strcat(char *dest,const char *src);返回的值strcat函数把字符串str的内容追加到字符串dest的尾部.#include//#include//#include//char *my_strcat(char *dest,const char *str)////{原创 2016-04-20 16:25:41 · 755 阅读 · 0 评论 -
写一个函数判断存储空间是大端还是小端
#include//int chese(int num)//{// char *p=(char *)#// while(*p==1)// {// return 1;// }// return 0;//}////int main()//{// int num=1;int ret=0;// ret=chese(num);// if(r原创 2016-04-08 23:02:59 · 1042 阅读 · 0 评论 -
单链表部分操作
部分链表知识?链表中数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。使用链表结构可以克服数组链表需要预先知道数据大小的缺点,链表结构可以充分利用计算机内存空间,实现灵活的内存动态管理。但是链表失去了数组随机读取的优点,同时链表由于增加了结点的指针域原创 2016-06-14 11:42:33 · 389 阅读 · 0 评论 -
剑指offer之字符串到整数的转换,例如输入字符串12345,输出整数12345.
试编写程序实现字符串到整数的转换,例如输入字符串12345,输出整数12345.原创 2016-06-14 10:04:20 · 2050 阅读 · 0 评论 -
不用+的加法
今天我在牛客网上看到一个有趣的题。题目描述:写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。其实当时是这样想的:你不让我用+,我可以用“++”,“+=”啊,事实证明我的代码也确实提交通过了。以下是我的代码:class Solution {public: int Add(int num1,int num2) { if(原创 2017-05-28 18:22:22 · 306 阅读 · 0 评论 -
排序的链表中删除重复的结点
题目描述:在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5.class Solution {public: ListNode* deleteDuplication(ListNode* pHead) { if (pHead==N原创 2017-06-18 19:08:01 · 533 阅读 · 0 评论 -
链表面试题
1.简单链表给出如下链表,有以下要求:要求1:逆序打印该链表(如:3->2->5->1->4结果应为41523)解题思路:利用栈的后进先出特性来解决代码如下:void R_print(Node* Head)//逆序打印链表 { if(Head==NULL) return ; stack s1; Node* cur=Head; while(cur)原创 2017-07-12 20:15:15 · 434 阅读 · 0 评论 -
找出链表的倒数第K个结点
给出一个链表如下图:要求:删除倒数第K个结点代码如下:Node* List::find_Penultimate_K(Node* Head,int k){ if(Head==NULL)//处理空链表 return NULL; Node* fast=Head; Node* slow=Head; while(k--) { if(fast==NULL)//判断K是否原创 2017-07-15 18:04:01 · 229 阅读 · 0 评论 -
合并两个有序链表
给出以下两个链表:要求:将两个合并为一个有序链表(合并完如上图所示)需要考虑的问题总结:合并之前我们需要考虑是否存在空链表(分三种情况)新链表的头(是哪个节点)合并中如果有一个已经为空(如下)代码如下:Node* List::MergeList(Node* Head1,Node* Head2){ if(Head1==NULL&&Head2==原创 2017-07-13 19:31:14 · 363 阅读 · 0 评论 -
链表带环问题1
给出一个链表;1.判断其是否带环?2.如果带环求环的长度?3.求环的入口节点?解题思路:用两个指针,快指针一次走两步,慢指针一次走一步,如果两指针相遇,那么链表带环,若两指针不相遇,则链表不带环。带环的几种情况:Node* List::find_meet_node(Node* Head) { if(Head==NULL) return N原创 2017-07-15 18:49:51 · 599 阅读 · 0 评论 -
调整数组中所有奇数位于偶数之前
题目:输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有奇数全部位于前半数组,所有偶数全部位于后半数组。题目分析:一个整型数组中既有奇数又有偶数,欲使所有奇数全部位于前半数组,所有偶数全部位于后半数组,那么我们不妨从前边查找偶数即arr[left]%2==0,如果不是偶数它将继续向后查找left+1,直到找到偶数,同时从后边查找奇数即arr[left原创 2016-05-07 10:47:33 · 987 阅读 · 0 评论 -
8bit数据的指定位的置0或者置1操作
对8bit数据的指定位的置0或者置1操作原创 2016-05-30 00:41:04 · 3521 阅读 · 0 评论 -
写一个函数实现数组内容拷贝,要求不能使用库函数
//#include//#include//char * my_strcpy(char *dest,const char *src)//{ // char *ret=dest;// assert(dest!=NULL);// assert(src!=NULL);// while(*dest++=*src++)// {// ;// }// return r原创 2016-04-08 23:12:18 · 733 阅读 · 0 评论 -
我转我转我转:实现一个函数翻转字符串
#include//void overturn_char(char src[],int sz)//{// int left=0;// char tmp;// int right=sz-2;// while(left// {// tmp=(char*)src[left];// src[left]=src[right];// src[right]=tmp;/原创 2016-04-12 20:13:27 · 371 阅读 · 0 评论 -
宏和函数的区别
宏和函数的区别://宏在编译器在对源代码进行编译时进行简单的字符串替换,函数是调用。//宏在定义时不会考虑参数的内型,函数的参数存在传值和传址的问题,宏不存在这个问题。//宏的运行速度比函数快,因为它不进行在进栈和出栈。//宏不存在递归,函数存在递归。//宏在使用会使同一作用代码块在目标文件中存在多个副本,会增长目标文件的大小,//函数只在目标文件中存在一处,比较节省程序空原创 2016-04-09 23:21:20 · 416 阅读 · 0 评论 -
神奇的递归
//编写一个函数实现n^k,使用函数递归//#include//int fun(int x,int y)//{// if(y==0)// {// return 1;// }// else// return x*fun(x,y-1);//}//int main()//{// int n=0;// int k=0;// scanf原创 2016-04-13 19:24:33 · 594 阅读 · 0 评论 -
深入理解指针数组 ,数组指针 ,函数指针 ,函数指针数组 ,指向函数指针数组的指针
/指针数组示例:char *a[4]理解:定义了一个数组,而它的每个元素的类型是一个指向字符/字符串的指针。元素表示:char *a[i] char *(a[i])是一样的,因为[]优先级高于*思考:是否可以这样理解 (char*)arr[4]?深入理解:数组指针:示例:char (*a)[4]表示一个指向“一个有4个字符类型元素的数组”的指针。原创 2016-04-27 20:38:33 · 2055 阅读 · 0 评论 -
注释转换
注释转换:题目描述:给定一段代码,其中有c语言的注释风格,也有c++的注释风格,要求将c语言的注释风格转换为c++的注释风格,属于c++注释风格的不转换,剩余其他原样输出。题目分析如下图: 需要的函数:首先我们需要3种状态和一个切换状态的函数,1.空状态void Do_NUL_State(),即既不属于c原创 2016-05-25 23:06:18 · 382 阅读 · 0 评论 -
打印1到最大的n位数
打印1到最大的n位数,输入数字n,按顺序打印出从1到最大的n位十进制数。比如:输入3,则打印出1、2、3一直到最大的3位数999.原创 2016-05-14 21:36:16 · 549 阅读 · 0 评论 -
学生通讯表
//实现一个通讯录;//通讯录可以用来存储1000个人的信息,每个人的信息包括:姓名、性别、年龄、电话、住址//提供方法://1. 添加联系人信息//2. 删除指定联系人信息//3. 查找指定联系人信息//4. 修改指定联系人信息//5. 显示所有联系人信息//6. 清空所有联系人//7. 以名字排序所有联系人#define _CRT原创 2016-05-13 16:50:34 · 549 阅读 · 0 评论 -
判断出栈序列是否合法
题目描述:1--元素出栈、入栈顺序的合法性。如:入栈的序列(1,2,3,4,5),出栈序列为(4,5,3,2,1),则合法。入栈的序列(1,2,3,4,5),出栈序列为(4,5,2,3,1),则不合法。 分析如下:1.如果两个数组长度不相等,直接不合法2.如果两个数组都为空,合法3.S用来正常的压栈,q村正确的出栈序列代码如下:#include#include#原创 2017-07-21 11:33:31 · 2406 阅读 · 1 评论