C
breaksss
sss
展开
-
关于异或交换数字的问题
原来写交换两个数字时就喜欢这么写:*a ^= *b;*b ^= *a;*a ^= *b;感觉很酷,但是不知道为什么可以交换...看了那本深入理解计算机系统才知道原来是这样啊:*a ^= *b; 以后:a变为 a^b, b没变*b ^= *a; 以后:a为还a^b,b为((a^b)^b)就是a*a ^= *b; 以后:a变为(a^b)^a,就是b,b还是a原创 2012-02-23 20:50:00 · 453 阅读 · 0 评论 -
Unix网络编程笔记(第四章)
TCP时间服务:server.c:#include #include #include #include #include #include #include #include #include #include #define bzero(ptr , n) memset(ptr, 0, n)#define MAXLINE 4096#defi原创 2012-04-05 10:45:25 · 324 阅读 · 0 评论 -
验证角谷猜想
#include using namespace std;int main (void){ long long number; int counter = 0; cout << "Input a number: "; cin >> number; while (number != 1) { if (number % 2 !原创 2012-03-19 13:20:06 · 666 阅读 · 0 评论 -
打印ascii字符表
#include #include int main(){ int i = 0; for (i = 0; i }汇编版:DATA SEGMENTDATA ENDSCODE SEGMENT ASSUME CS:CODE, DS:DATASTART: MOV CX, 100H MOV DL, 0 NEXT: MO原创 2012-03-15 16:09:01 · 785 阅读 · 0 评论 -
substr
#include #include int substr( char dst[],const char src[], int start, int len) { if ( !dst || !src ) return -1; int length = strlen(src); if (start = length ) { dst[0] = 0; retur原创 2012-03-12 12:11:19 · 229 阅读 · 0 评论 -
大整数加法
//计算正整数加法#include #include #include #define MAXLINE 2000 //最大位数2000void CharToInt(const char *str, int* array) { //将字串逆序保存到整型数组中 int i; int len = strlen(str); for (i原创 2012-03-19 13:16:24 · 289 阅读 · 0 评论 -
一个字符串的调试问题
#include int main(void){ int i; char str[6]="hello"; char reverse_str[6]=""; printf("%s\n", str); for(i=0;i<5;i++) { reverse_str[5-i]=str[i]; } printf("%s\n"原创 2012-03-21 14:52:56 · 390 阅读 · 0 评论 -
最简单的递归函数
def recursive(): recursive() recursive()执行的话会引发运行时错误RuntimeError: maximum recursion depth exceeded同样的C代码运行却没反应,不知道为什么...:void recursive() { recursive();}main(){ recursi原创 2012-03-22 12:28:42 · 577 阅读 · 0 评论 -
写一个函数,参数是三个数,返回较大两个之和
scheme:(define (bigsum a b c) (- (+ a b c) (min a b c)))(bigsum 1 2 3)(bigsum 2 3 3)(bigsum 1 1 3)(bigsum 1 2 1)(bigsum 1 9 3)python:#!/usr/bin/env pythondef bigsum原创 2012-04-25 12:17:43 · 1532 阅读 · 0 评论 -
sqrt
C:#include #define Zero 1e-6float mysqrt(int number) { float guess = 1.0f; float quotient = number/guess; float average = (guess + quotient)/2.0; do { guess = average; quotient =转载 2012-04-25 16:04:34 · 528 阅读 · 0 评论 -
Ackermann数
C++:#include using namespace std;long Ackermann(int m,int n);int main(){ int loop,i,m,n; cin>>loop; for(i=1;i<=loop;i++) { cin>>m>>n; cout<< Ackermann(m,n)<<end原创 2012-04-26 15:33:26 · 527 阅读 · 0 评论 -
输出环境变量
#include extern char** environ;int main() { char **var; for (var = environ; *var; ++var) printf("%s\n",*var); return 0;}转载 2012-04-27 18:17:11 · 572 阅读 · 0 评论 -
如何交换两个数字
//几种经典的交换两个数方法.#include void function1(int *a, int *b) { //可能产生溢出错误 *a = *a + *b; *b = *a - *b; *a = *a - *b;}void function2(int *a, int *b) { //位运算 ,不能和自身交换 *a ^= *b; *b原创 2012-04-19 19:32:21 · 506 阅读 · 0 评论 -
unix网络编程笔记(第一章)
TCP时间服务:server.c:#include #include #include #include #include #include #include #include #include #include #define bzero(ptr , n) memset(ptr, 0, n)#define MAXLINE 4096#define原创 2012-04-05 10:38:31 · 346 阅读 · 0 评论 -
缓冲区溢出
什么是溢出?简单的说,溢出就是越界,跑到不属于自己的领地里去了...如:overflow.c:main(){ int a[10] = {0}; int i; for (i = -10; i printf("%d ",a[i]);}由于C的自由书写风格,编译系统并不对数据边界进行检测,导致有意无意的出现溢出。原创 2012-04-05 10:04:28 · 617 阅读 · 0 评论 -
简单的缓冲区溢出错误
overflow.c:#include #include int checkpass(void) { int x; char a[9]; x = 0; fprintf(stderr, "a at %p \nx at %p\n",(void*)a, (void*)&x ); printf("Please input passwor原创 2012-02-26 21:17:12 · 731 阅读 · 0 评论 -
试试signal函数
APUE前几页的例子:#include #include #include #include #include #define MAXLINE 4096int main(int argc , char** argv) { char buf[MAXLINE]; pid_t pid; int status; printf(原创 2012-02-27 20:38:50 · 425 阅读 · 0 评论 -
两行down掉你的linux
#include main(){pid_t c=0;while(1){if((c = fork())==-1)break;}}原创 2012-03-02 13:46:49 · 385 阅读 · 0 评论 -
给你的C代码加上行号
#include #include int main(){ char c; int newline = 1; int linecounter = 1; while (~(c=getchar())) { if (newline) { newline = 0;原创 2012-03-04 21:56:25 · 756 阅读 · 0 评论 -
为什么使用枚举
一直认为枚举是很鸡肋的东西,直到今天才知道原来它也很有用...#include enum open_mode {read,write,create};enum aenum{zero};void filefunction(open_mode mode){ switch(mode){ case read: printf("re原创 2012-03-06 11:34:09 · 1811 阅读 · 0 评论 -
最简单的Cpp程序
main(){}原创 2012-03-06 12:33:18 · 979 阅读 · 0 评论 -
打印出自身的程序
//可以打印出自身的程序,我是看不懂...main(a){printf(a,34,a="main(a){printf(a,34,a=%c%s%c,34);}",34);}原创 2012-03-26 12:16:37 · 361 阅读 · 0 评论 -
位上的==
// "==" in bits ,just for fun...#include inline int Equal(int x, int y) { return (!(x ^ y));}int main (int argc, char *argv[]){ int x = -1; int y = 0; int z = 2原创 2012-03-26 12:19:07 · 275 阅读 · 0 评论 -
判断主机字节序
#include #include int main(){ union byte{ short num; char letter[sizeof(short)]; }u; u.num = 0x0102; if (sizeof(short) == 2) { if (u.letter[0原创 2012-03-26 11:38:03 · 400 阅读 · 0 评论 -
引用传递参数
#include using namespace std;void printArray(int array[], int n) { //无法验证参数的正确性 int i; for(i = 0; i cout } cout}void printArrayB(int (&array)[10]) { //参数只能接受1原创 2012-03-13 15:46:37 · 286 阅读 · 0 评论 -
malloc的使用
据说,calloc会自动清零,而malloc不会,但是我没看出来..1:#include #include typedef struct { int x; int y;}Point;int main(void){ Point*p=NULL; p=(Point*)malloc(sizeof(原创 2012-03-13 19:50:07 · 734 阅读 · 0 评论 -
表达式小题
写一个表达式,如果a>b 返回+1,a==b 返回0 a#include #include inline int hello(int a, int b){ return (a==b?0:1)?(a>b?1:-1):0;}int main(){ printf("%d\n",hello(8,9)); printf("%d\n原创 2012-03-15 12:11:25 · 424 阅读 · 0 评论 -
括号匹配
1.最简单的方法:#include int main(){ char c; int counter=0; while ( ~(c = getchar()) ) { if (c == '{') counter++; if (c == '}') counter原创 2012-03-06 10:42:43 · 350 阅读 · 0 评论 -
linux信号速成
对信号一直感到很神秘,好像是能够hack的地方,呵呵...看了看书,感觉其实信号不过是一种类似中断处理机制,书上说信号是进程(系统进程和用户进程)间通信的方法。在进程收到信号时,其执行的流程将被系统中断,如经常使用的Ctrl+C(中断),系统将退出程序。例如:divzero.c:main(){ int a,b; scanf("%d %原创 2012-04-05 10:03:10 · 531 阅读 · 0 评论 -
分离整型每个字节
//分离出一个int数据类型中的每个字节 (get every byte of a int type)#include #include intmain(int argc,char** argv){ if (sizeof (int) != 4) { fprintf(stderr,"Unkown type!\n"); r原创 2012-03-26 12:10:39 · 1160 阅读 · 0 评论