c
痞子晶
大部分事情并不需要什么天赋或者激情才能完成,只要有切实可行的目标、合理的计划和风雨无阻的执行力就够了。
展开
-
6个变态的C语言写的Hello World【转】
6个变态的C语言写的Hello World2016-08-18 C语言教程下面的六个程序片段主要完成这些事情:输出Hello, World混乱C语言的源代码(加密源代码,嘿嘿)下面的所有程序都可以在GCC下编译通过,只有最后一个需要动用C++的编译器g++才能编程通过。hello4.c#define _________ }#define ________ putchar#define ____转载 2016-08-18 19:07:17 · 581 阅读 · 0 评论 -
统计一个字符串中bit为1的个数
今天遇到的一个问题,感觉自己的代码效率不高 编写一个函数,实现统计一个字符串中bit为1的个数#include <stdio.h> int str_bit_count(char * p){ int count = 0,sum = 0; int n = 0; while((*p) != '\0') { n = *p; for(count原创 2016-09-22 20:19:14 · 2422 阅读 · 0 评论 -
(C语言)如何用星号画一个圆
面试时被问到,当时思路不太清晰,没有完整的做出来#include <math.h>#include <stdio.h>#define R 10 //半径 #define X 10 //圆心x坐标 #define Y 10 //圆心Y坐标 int main(void){ int x,y; int m; int i; for(i=Y-R;i>=1;原创 2016-09-24 23:42:19 · 12562 阅读 · 0 评论 -
今天遇到的涉及位运算的一道题
今天的一道面试题分享一下:unsigned int intvert(unsigned int x,int p, int n)实现对x的进行转换,p为起始转换位,n为需要转换的长度,假设起始点在右边,如x=0b0001 0001 ,p=4,n=3装换后x=0b0110 0001#include <stdio.h> unsigned int intvert(unsigned int x,int p, i原创 2016-09-20 23:39:02 · 300 阅读 · 0 评论 -
多种方法实现字符串逆序
/* 编写函数,实现字符串逆序 */#include <stdio.h>#include <string.h>#include <stdlib.h>char * func1(char * str) //普通逆序{ char * temp = str; while(*str++); char * result = (char *)malloc((str -原创 2016-09-20 00:41:41 · 496 阅读 · 0 评论 -
c语言&&和||的短路性质分析
今天看到微软的一道面试题,如下 原题是:求 1 + 2 + 3 + … + n 要求:不能用乘除法,不能用if,while, switch,case, 不能用(a < b ? a : b)三目运算符这道题主要考察了&&运算的短路性质以及递归 答案如下:int foo(int n, int *sum) { int ret; ret = n&&fun3(n-1, sum原创 2016-09-05 00:06:47 · 5543 阅读 · 0 评论 -
c语言实现输出2的1000次方
今天练得一个小程序,不算难,但是因为开始算法错了,废了我很多时间找错,最后发现此路不通,果断换一下思路以下是代码:/*输出2的1000次方*/#include <stdio.h>int main(void){ int a[1000]; //先定义一个足够大的数组 int i,j; for(i=0; i<1000; i++) //先置零 { a[...原创 2016-09-02 01:22:38 · 5689 阅读 · 3 评论 -
关于char *和char []的个人理解
今天白天练习一些编程题遇到了一个问题,是代码写好后总是莫名出现段错误,再三检查语法和算法,百思不得其解。 之后突然想到,可能是把char *和char[]搞混了。原本应该是 char a[] = “hello”; 写成了char * a = “hello”;在这之前我一直以为两者没有区别,然后仔细的思考了一番,发现了问题的所在。一个linux进程分为几个部分(从一个进程的地址空间的低地址向高地址原创 2016-08-29 23:51:13 · 459 阅读 · 0 评论 -
移位运算(乘、除、余)
乘:a=a*9分析a*9可以拆分成a*(8+1)即a*8+a*1, 因此可以改为: a=(aa=a*7分析a*7可以拆分成a*(8-1)即a*8-a*1, 因此可以改为: a=(a除:如何利用+,-,移位来实现除法.假设求 dividend / divisor方法一:首先想到的是用减法来实现.算法思想:对dividend 循环减 divisor, 减一次res++, 直到刚好减为0转载 2016-08-19 11:32:10 · 893 阅读 · 0 评论 -
实现返回字符串中最长数字串函数
白天写的一个小练习,不难,但是粗心错了好几次,现在把代码贴出来:/*写一个函数,它的原型是int continumax(char *outputstr,char *intputstr);功能:在字符串中找出连续最长的数字串,并把这个串的长度返回,并把这个最长数字串付给一个函数参数outputstr所指的内存。例如:“abcd12345ed125ss123456789”的首地址传给i原创 2016-09-08 23:45:59 · 3271 阅读 · 0 评论 -
【转载】88行代码实现俄罗斯方块游戏(含讲解)
#include #include #include #include #include char gcText[] = " 1LJTSZ#";struct tetris { int _pool[16][32], (*pool)[32], tmap[8][4][16]; int x, y, s, st, t;}gt;void trsInit() { int转载 2016-09-08 23:37:35 · 1035 阅读 · 0 评论 -
位运算的一些算法
最近做题遇到的,先写这么多,再遇到再补充#include <stdio.h>int f(int x,int y) //x和y的平均值{ return (x&y)+((x^y)>>1); //x&y取相同的位与,结果是x,y相同位的一半 } //x^y取x,y不同位,右移1等价于除2 int main(){ pr原创 2016-09-27 00:40:03 · 343 阅读 · 0 评论