c语言学习
雪沫沫
程序代码是个很神奇的东西,我不知道我会在这条路上走多久,但是和他打交道的每一秒我都是开心的,付出努力的。
展开
-
可变参数列表
1.可变参数列表的引入 在函数的原型中,列出了函数期望接受的参数,但函数只能显示固定数目的参数。让一个函数在不同的时候接受不同的数目的参数也是可以的,但存在一些限制。 例如:int average(int val,int v1,int v2,int v3,int v4,int v5) { float su原创 2016-11-16 19:31:41 · 226 阅读 · 0 评论 -
结构体在内存中的对齐方式
Example 1:struct A{ int c; double d;};printf("%d\n",sizeof(struct A));//16Example 2:struct B{ int c; char d;}printf("%d\n",sizeof(struct B));//8Example 3:struct C{ char b;原创 2016-11-22 15:08:52 · 269 阅读 · 0 评论 -
逆置字符串和整型数组
char *reverse(char *str)//字符串逆置{ int len = strlen(str); int i = 0; char tmp; for(i=0;i<len/2;i++) { tmp = str[i]; str[i] = str[len-1-i]; str[len-1-i] = tmp;原创 2016-11-19 21:23:34 · 389 阅读 · 0 评论 -
经典算法——计数排序算法
计数排序: 该算法于1954年由 Harold H. Seward 提出。 它是一个不需要比较的,类似于桶排序的线性时间排序算法。该算法是对已知数量范围的数组进行排序。其时间复杂度为O(n),适用于小范围集合的排序。计数排序是用来排序0到100之间的数字的最 好的算法。比如100万学生参加高考,我们想对这100万学生的数学成绩(假设分数为0到100)做个排序。原创 2017-03-12 00:06:47 · 21715 阅读 · 5 评论 -
数据类型
#include <stdio.h>int main(){ long long a = 1,b = 2,c = 3; printf("%d %d %d\n",a,b,c); return 0;}这里输出的答案是:1 0 2 printf()的可变参数列表中的参数类型是int型,是4个字节。 而long类型的长度是8个字节(这里默认系统是小端存储的)原创 2016-11-17 19:45:57 · 290 阅读 · 1 评论 -
大小端问题
什么是大小端 大小端表示数据在存储器中的存放顺序 (1) 小端模式:数据的高字节保存在内存的高地址中,而低字节保存在内存的低地址中。这种存储模式将地址的高低和数据位权有效的结合起来,高地址部分权值高,低地址部分权值低,和我们平常的逻辑方法一致。 (2) 大端模式:数据的高字节保存在内存的低地址中,而低字节保存在内存的高地址中。这种存储模式有点类似于把数据当做字符串顺序来处理:地址由小向大增加,原创 2016-11-17 19:50:50 · 483 阅读 · 0 评论 -
替换空格【每日一题】
题目:实现一个函数,要求吧字符串中的所有空格替换成“%20”。例如 “hello world ” ——> ”hello%20world%20” 以前一直觉得做这种题目没什么意义,直到前两天学了网络编程才知道这种题目的意义非比寻常。 在网络编程中,如果URL参数中含有特殊的字符,如空格、’#’等,导致服务器端无法识别时,就把这些特殊的字符转换成可以识别的字符。规则:%加上十六进制的ascii原创 2017-07-18 12:23:16 · 227 阅读 · 0 评论 -
用C语言解决文件合并问题
题目一:文件合并问题 (1)问题描述 有两个磁盘文件A和B,各存放一串字母,要求把这两个文件中的信息合并,输出到一个新文件C中。 (2)算法分析 在.cpp所在的文件夹里建立A.doc和B.doc,并向其中输入字母,再编写一个用于输出文件内容的程序,将文件信息合并。 (3)源代码 磁盘文件A:#include <stdio.h>void main( ){ FIL...原创 2018-04-23 11:11:02 · 6050 阅读 · 0 评论 -
用C语言解决变量三角形问题
题目二:变量三角形问题 (1)问题描述 设A、B、C、D、E、F这六个变量可分别取[1,6]上的整数,将这六个变量排成如下图所示的三角形,求使三角形三条边上的变量之和相等的全部解。 A 1 B F 6 ...原创 2018-04-23 11:13:18 · 880 阅读 · 0 评论 -
strlen函数的三种实现方法
一个不调用库函数的模拟实现计算字符串长度的函数 int strlen(const char* string) { int count=0; assert(string!=NULL); while(*string!=’\0’) { count++; *string++; } return count; }原创 2016-10-28 23:24:39 · 1058 阅读 · 2 评论 -
指针和数组
指针和数组(1)int *p; 把 p 称为指针变量,p 里存储的内存地址处的内存称为 p 所指向的内存。 即指针变量里存储的任何数据都被当做地址来处理。 一个简单的数据类型加上“*”就是一个指针类型的模子,其大小是一定的, 与“”前面的类型无关。“”前面的数据类型只能说明指针所指向的内存 里存储的数据类型。32位系统下所有的指针类型大小都为 4byte 。 测试:sizeof(void原创 2016-11-17 19:36:38 · 209 阅读 · 0 评论 -
#define
define的用途(1)在#define name stuff这条指令中,在程序中每当出现name时,预处理器就会把它自动替换成stuff。替换文本并不仅限于数值字面常量,可以是任何文本。 #define reg register //为register这个关键字创建一个简短的名字 #define CASE break;case //以便在写case语句时候自动把break写原创 2016-11-16 20:43:08 · 1655 阅读 · 0 评论 -
strcpy函数的实现
一个不调用库函数实现字符串复制的函数 char* strcpy(char* destination,const char* source) { char* ret=destination; assert(destination!=NULL);//当目标数组为空时报错 assert(source!=NULL); while(*destination++=*s原创 2016-10-28 23:22:41 · 223 阅读 · 0 评论 -
判断素数
实现一个函数,判断一个数是不是素数。int prime(int a) { int x=0; for(x=2;x<=sqrt(a);x++) { if(a%x==0) return 0;//不是素数 } return 1;//是素数 }原创 2016-11-01 22:16:03 · 330 阅读 · 0 评论 -
判断闰年
实现一个函数判断year是不是润年。int leap_year(int y) { if((y&4==0)&&(y%100==0)||(y%400==0)) { return 1;//是闰年,返回1 } return 0;//不是闰年 }原创 2016-11-01 22:16:40 · 341 阅读 · 0 评论 -
打印乘法口诀表
实现一个函数,打印乘法口诀表,口诀表的行数和列数自己指定 void Multi(int x) { int m,n; for(m=1;m<=x;m++) { for(n=1;n<=m;n++) printf(“%d*%d=%-4d”,m,n,m*n); printf(“\n”); } }原创 2016-11-01 22:18:19 · 262 阅读 · 0 评论 -
两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同
两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同 int sreach_bit(int m,int n) { int count=0; int a=m^n; while(a) //模2除2余1则有1;相反模2除2余0则有0 { if(a%2!=0) { count++; }原创 2016-11-01 22:19:12 · 351 阅读 · 0 评论 -
求平均值函数
不使用(a+b)/2这种方式,求两个数的平均值。int average(int m,int n) { int ret=0; ret=m-((m-n)>>1);//ret=(m&n)+((m^n)>>1); return ret; }原创 2016-11-01 22:19:43 · 2722 阅读 · 0 评论 -
实现二分查找函数
二分查找函数。int sreach(int arr[],int left,int right,int key) { while(left<=right) { int mid=(left+right)/2; if(key原创 2016-11-01 22:20:13 · 559 阅读 · 0 评论 -
用C语言解决棋盘上马遍历问题
题目三:棋盘上马遍历问题 (1)问题描述 在8*8方格的棋盘上,从任意指定的方格出发,为马寻找一条走遍棋盘每一个并且只能经过一次的一条路径。 (2)算法分析 如果用二维数组board[][]表示棋盘,其元素记录马经过该位置时的步骤号。另对马的各种可能的走法设定一个检索次序,确定了出发方格后首先要清盘,即将表示棋盘的二维数组每个元素都置0;第一步就是出发方格,主要是确定第二步到第...原创 2018-04-23 11:15:02 · 4655 阅读 · 2 评论