随笔分类 -  c语言

摘要:1.函数指针函数指针是指向函数的指针变量,即本质是一个指针变量。例如:int (*f)(int x);double (*ptr)(double x);例如#include <stdio.h>int max(int a,int b){ if(a>b) return a; else return b; }int main(){ int(*pmax)(); int x,y,z; pmax=max; printf( "input two numbers:\n"); scanf("%d%d",&x,&y); ... 阅读全文
posted @ 2012-04-15 10:54 四月不留 阅读(191) 评论(0) 推荐(1)
摘要:#include <stdio.h>int main(int argc, char *argv[]){ // create two arrays we care about int ages[] = {23, 43, 12, 89, 2}; char *names[] = {"Alan", "Frank","Mary", "John", "Lisa"}; // safely get the size of ages int count = sizeof(ages) / sizeof( 阅读全文
posted @ 2012-03-18 16:39 四月不留 阅读(219) 评论(1) 推荐(1)
摘要:选择排序是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小元素,然后放到排序序列末尾。以此类推,直到所有元素均排序完毕。选择排序choose_sort.c#include <stdio.h>void choose_sort(int [],int);int main(){ int i,len; int array[] = {3,4,2,1}; len = sizeof(array) / sizeof(int); //元素个数 printf("原始输出:"); for(i .. 阅读全文
posted @ 2012-01-05 14:39 四月不留 阅读(327) 评论(0) 推荐(0)
摘要:/*编写函数itob(n,s,b),将整数n转换为以b为底的数,并将结果以字符的形式保存到字符串s中。例如,itob(n,s,16)把整数n格式化成十六进制整数保存在s中。*/#include<stdio.h>#define MAX 50void itob(int n,char s[],int b){ int i,j,sign; void reverse(char s[]); if((sign=n)<0) n=-n; i=0; do{ j=n%b; s[i++] = (j<=9) ? j+'0' : j+'a'-10; }while((n 阅读全文
posted @ 2011-12-17 23:20 四月不留 阅读(1499) 评论(0) 推荐(0)
摘要:Shell排序算法是D.L.Shell 于1959年发明的。其基本思想是:先比较距离远的元素,而不是简单交换排序算法那样先比较相邻的元素。这样可以快速减少大量的无序情况,从而减轻后续的工作。被比较的元素之间的距离逐步减少,直到减少为1,这时排序变成了相邻元素的互换。/*shellsort:sort v[0]...v[n-1] into increasing order*/#include<stdio.h>void shellsort(int v[],int n){int gap,i,j,temp;for(gap=n/2;gap>0;gap/=2)for(i=gap;i< 阅读全文
posted @ 2011-12-06 19:09 四月不留 阅读(410) 评论(0) 推荐(0)
摘要:原是4人过桥,ABCD要单独过桥分别需要用时1分、2分、5分、10分,过桥需要灯(只有一盏),一次只能2人一起过(意味着需要有人送灯回来),过桥时间已用时多的人为准,问如何在17分钟内让四人全部通过。答案是A和B先过,A回来,CD再过,B回来,AB第二次过。17秒完成!用C语言拓展成n人过桥,过桥时间自定,求过桥最短用时的方案。对此,可以简化问题,分步解决。先解决最少时间过桥的问题。好好理解贪心法:1)当人数<3时,直接过2)当人数=3时,我们假设过河时间是从小到大的a,b,c (后期排列的问题易解决),显然用最小的来送灯(c+a+b<c+b+b)3)当人数=4时,a,b,c,d( 阅读全文
posted @ 2011-12-04 10:46 四月不留 阅读(865) 评论(0) 推荐(0)
摘要:一个猎人带着一只狼,一个女人带着两个小女孩,一个男人带着两个小男孩,他们要渡船过河。猎人离开狼,狼会把所有的人吃掉女人离开两个小女孩,男孩会打死两个小女孩男人离开两个小男孩,女人要把两个小男孩打死注: ① 4小孩没有驾驶船的能力。 ② 此船只能坐两个人,而且回来的时候必须有一个人要驾驶船回来。问题:他们是怎样平安和平全部渡船过去的?1.猎人和狼过去,猎人回来。2.猎人和男人的孩子1过去,猎人和狼回来。3.男人和男人的孩子2过去,男人回来。4.男人和女人过去,女人回来。5.猎人和狼过去,男人回来。6.男人和女人过去,女人回来。7.女人和女人的孩子1过去,猎人和狼回来。8.猎人和女人的孩子2过去, 阅读全文
posted @ 2011-11-28 19:06 四月不留 阅读(2282) 评论(0) 推荐(1)
摘要:C++运算符的优先级和结合性单"表示是单目运算符,"双" 表示是双目运算符,"三" 表示是三目运算符。每种运算符都有一个优先级,优先级是用来标志运算符在表达式中的运算顺序的。优先级高的先做运算,优先级低的后做运算,优先级相同的右结合性决定计算顺序。 大多数运算符都是按从左到右计算,只有三类运算符的结合性是从右到左。他们是:单目、三目和赋值。 阅读全文
posted @ 2011-11-27 11:17 四月不留 阅读(771) 评论(0) 推荐(0)
摘要:一、sizeof的概念 sizeof是C语言的一种单目操作符,如C语言的其他操作符++、--等。它并不是函数。sizeof操作符以字节形式给出了其操作数的存储大小。操作数可以是一个表达式或括在括号内的类型名。操作数的存储大小由操作数的类型决定。 二、sizeof的使用方法 1、用于数据类型 sizeof使用形式:sizeof(type) 数据类型必须用括号括住。如sizeof(int)。 2、用于变量 sizeof使用形式:sizeof(var_name)或sizeof var_name 变量名可以不用括号括住。如sizeof (var_name),sizeof v... 阅读全文
posted @ 2011-11-26 19:27 四月不留 阅读(431) 评论(5) 推荐(0)
摘要:#include<stdio.h>#include<limits.h>main(){//signed typesprintf("signed char min:%d\n",SCHAR_MIN);//-128printf("signed char max:%d\n",SCHAR_MAX);//127printf("signed short min:%d\n",SHRT_MIN);//-32768printf("signed short max:%d\n",SHRT_MAX);//32767pr 阅读全文
posted @ 2011-11-25 09:01 四月不留 阅读(614) 评论(0) 推荐(0)
摘要:给1000个瓶分别标上如下标签(10位长度):0000000001 (第1瓶)0000000010 (第2瓶)0000000011 (第3瓶)......1111101000 (第1000瓶)从编号最后1位是1的所有的瓶子里面取出1滴混在一起(比如从第一瓶,第三瓶,。。。里分别取出一滴混在一起)并标上记号为1。以此类推,从编号第一位是 1的所有的瓶子里面取出1滴混在一起并标上记号为10。现在得到有10个编号的混合液,小白鼠排排站,分别标上10,9,。。。1号,并分别给它们灌上对 应号码的混合液。24小时过去了,过来验尸吧:从左到右,死了的小白鼠贴上标签1,没死的贴上0,最后得到一个序号,把这个 阅读全文
posted @ 2011-11-25 08:55 四月不留 阅读(1823) 评论(0) 推荐(0)