![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C
Steve_Abelieve
致虚极,守静笃。
展开
-
常用算法练习
// 字符串反转void char_reverse(char *cha) { if (strlen(cha) ==0 ) return; char *begin = cha; char *end = cha + strlen(cha) -1; while (begin <end) { char temp = *begin; *(begin++) = *end; *(end--) = temp; }}/.原创 2021-04-11 17:45:18 · 122 阅读 · 0 评论 -
将制表符\t和回退符\b以可见的方式显示出来
注意:用printf函数打印 因为getchar每次只接受一个字符,所以输入什么显示什么1.用printf函数显示//将制表符\t和回退符\b以可见的方式显示出来#include<stdio.h>int main(){ int c; while ((c = getchar())!=EOF) { if (c == '\\') {原创 2016-11-18 01:22:53 · 2226 阅读 · 0 评论 -
【C语言】结构体指针
指向结构体对象的指针变量即可以指向结构体变量,也可指向结构体数组中的元素。指针变量的基类型必须与结构体变量的类型相同。 如: struct Student *pt; //pt可以指向struct Student类型的变量或数组元素。典例: 通过结构体变量的指针变量输出结构体变量成员中的成员的信息。 解题思路: (1)怎样对结构体变量成员赋值 (2)怎样通过结构体变量的指针访问结构体原创 2016-11-13 17:16:08 · 479 阅读 · 0 评论 -
【C语言】使用结构体数组
说明: 一、定义结构体数组的一般形式是: 1.struct 结构体名 { 成员列表 }数组名[数组长度];2.先声明一个结构体类型(如:struct Person),然后再使用此类型定义结构体数组; 如: struct Person leader[3]; //leader是结构体数组名二、初始化 如: struct Person leader[3]={“Li”,0,”Zhang”原创 2016-11-13 15:50:37 · 3763 阅读 · 1 评论 -
2016 11/12 片【C语言】学习笔记-函数
1.在⼀个数组中查找⼀个指定的整数,找到了之后就返回这个值所在的地址,没找到返回NULL 2.对值进⾏偶校验,求⼀个数的⼆进制中1的个数是奇数还是偶数。 三种统计方法:(1)value&=(value-1) (2)value&0x1 (3)模2 余2 3.将⼀个数组的所有元素都设置成0//在⼀个数组中查找⼀个指定的整数,找到了之后就返回这个值所在的地址,没找到返回NULL#原创 2016-11-12 17:04:08 · 400 阅读 · 0 评论 -
【C语言】二维数组在内存中的存储方式
二维数组实际在内存中的存储方式 提示:二维数组也是按照像一维数组那样的存储.注意:如何证明:通过指针来进行访问每一个元素*(*a+1) 1.*a 表示将一个行地址变成该行的首地址(即一个具体元素的地址)) 2.&a[0][1]表示讲一个具体的元素地址 提升为该行的行地址(*与&转换关系相反)#include<stdio.h>#include<windows.h>int main(){原创 2016-11-11 02:23:55 · 30029 阅读 · 0 评论 -
【C语言】了解编译过程、熟悉预处理的标识符
编译C程序涉及很多步骤: 生成可执行文件一般分为4步: 1.预处理 2.编译 3.汇编 4.链接 预处理主要完成四件事: (1)头文件展开 (2)宏替换 (3)去注释 (4)条件编译⼀、 ⽂件名约定C的源代码保存于.c扩展名命名的⽂件中。头⽂件保存于扩展名为.h的⽂件中。产⽣的⽬标⽂件名在类unix系统中扩展名为.o,在WIN X系统中扩展名是.obj。⼆、编译和链接在类un原创 2016-11-04 17:11:44 · 931 阅读 · 0 评论 -
将输入的空格串替换为最少数量的制表符和空格。
#include <stdio.h>#define MAXLINE 1000 /* max input line size */#define TAB2SPACE 4 /* 4 spaces to a tab */char line[MAXLINE]; /*current input line*/int getline(void); /* taken from the KnR book. */翻译 2016-11-23 00:02:30 · 513 阅读 · 0 评论 -
把较长的输入行折成短一些的两行或多行,折行的位置在输入行的第n列之前的最后一个元素。
#include <stdio.h>#define MAXLINE 1000 /* max input line size */char line[MAXLINE]; /*current input line*/int getline(void); /* taken from the KnR book. */intmain(){ int t,len; int location,spa翻译 2016-11-23 00:16:36 · 751 阅读 · 0 评论 -
编写一个删除C语言源程序中的所有注释语句,要正确处理带引号的字符串和字符常量。
#include <stdio.h>#define MAXLINE 1000 /* max input line size */char line[MAXLINE]; /*current input line*/int getline(void); /* taken from the KnR book. */intmain(){ int in_comment,len; int in翻译 2016-11-23 00:29:44 · 2155 阅读 · 0 评论 -
打印分别由signed和unsigned限定的char , short, int ,与long类型变量的取值范围。
由结果分析可知: 要打印类型取值范围时,需要调用limits.h头文件 打印: 引用 比特位个数: 大写类型_BIT 最大值: 大写类型_MAX 最小值 : 大写类型_MIN 若打印无符号最大值 U大写类型_MAX #include <stdio.h>#include <limits.h>int main ()翻译 2016-11-23 18:02:17 · 3916 阅读 · 0 评论 -
编写hoti(s),把由十六进制数字组成的字符串(0x或0X)转化为与之等价的整形值。字符串中允许包含的数字为:0-9,a-f或A-F。
#include <stdio.h>#include <stdlib.h>#include<windows.h>/* Here's a helper function to get me around the problem of not* having strchr*///将字符c 传入函数,转化成相应的整形值,用到一个技巧。10+(i)/2,巧妙地将对应的大小写字母转换为同一个数。若为不翻译 2016-11-23 19:12:13 · 1893 阅读 · 0 评论 -
将字符串S1中任何与字符串S2中匹配的字符都删除,实现函数squeeze(s1,s2).
/* test driver */#include <stdio.h>#include <string.h>#include<windows.h>void squeeze2(char s1[], char s2[]);//定义buffer的原因是想输出的能够看一下前后元素变化。int main(void){ char *leftstr[] = //指针数组,它的一个数组元素为翻译 2016-11-23 21:41:46 · 3245 阅读 · 0 评论 -
将整数n转化为以b为底的数,并将转化结果以字符的形式保存到字符串s中。
#include <stdlib.h>#include <stdio.h> void itob(int n, char s[], int b);void reverse(char s[]);int main(void) { char buffer[10]; int i; for ( i = 2; i <= 20; ++i ) { itob(255, b翻译 2016-11-24 11:11:43 · 968 阅读 · 0 评论 -
修改itoa函数,使得该函数可以接受三个参数。其中第三个参数为最小字符宽度。
#include <stdio.h>#include <limits.h>void itoa(int n, char s[], int width);void reverse(char s[]);int main(void) { char buffer[20]; itoa(INT_MIN, buffer, 7); printf("Buffer:%s\n", buffer);翻译 2016-11-24 11:23:41 · 1374 阅读 · 0 评论 -
【C语言】建立静态链 并 输出链表
建立一个简单链表,它由3个学生数据的节点组成,要求输出各节点的数据。//静态链表#include<stdio.h>#include<windows.h>#include<string.h>struct Student{ int num; float score; struct Student*next;};int main(){ struct Studen原创 2016-11-13 18:46:18 · 2710 阅读 · 0 评论 -
【C语言】模拟实现printf函数 可变参数列表的实战
模拟实现printf 看代码:// 打印时根据字符串所访问的值为‘%’时,开始进行判断类型。 //这块用switch结构判断‘%’下一个字符确定类型,若为‘d’ //则为整形,为‘s’为字符串#include<stdio.h>#include<windows.h>#include<stdarg.h>#include<assert.h>void my_printf(char*format原创 2016-11-14 23:38:33 · 594 阅读 · 0 评论 -
实现memcpy和memmove以及大数据url交集。
1.模拟实现C库的memcpy和memmove。void* myMemcpy(void* dst,const void* src,size_t size){ assert(src); assert(dst); char* _dst = (char*)dst; char* _src = (char*)src; while (size--) {原创 2017-08-09 08:20:55 · 485 阅读 · 0 评论 -
素数的判断方法
关于素数的算法是信息学竞赛和程序设计竞赛中常考的数论知识,在这里我跟大家讲一下寻找一定范围内素数的几个算法。看了以后相信对大家一定有帮助。 正如大家都知道的那样,一个数 n 如果是合数,那么它的所有的因子不超过sqrt(n)–n的开方,那么我们可以用这个性质用最直观的方法来求出小于等于n的所有的素数。 num = 0; for(i=2; i<=n; i++) {转载 2017-06-06 16:44:19 · 525 阅读 · 0 评论 -
求最大连续子数组之和
题目 给定K个整数的序列{ N1, N2, …, NK },其任意连续子序列可表示为{ Ni, Ni+1, …, Nj },其中 1 <= i <= j <= K。最大连续子序列是所有连续子序列中元素和最大的一个, 例如给定序列{ -2, 11, -4, 13, -5, -2 },其最大连续子序列为{ 11, -4, 13 },最大和 为20。Input6-2 11 -4 13 -5 -2原创 2017-06-05 20:48:49 · 392 阅读 · 0 评论 -
高精度大数求幂
题目Problems involving the computation of exact values of very large magnitude and precision are common. For example, the computation of the national debt is a taxing experience for many computer systems原创 2017-06-04 21:04:37 · 562 阅读 · 0 评论 -
写一个进度条程序
需要掌握的知识:回车与换行的区别 \r表示回车 \n回车换行void ProcessBar(){ char buf[102] = {0}; const char*label = "|/-\\"; int i = 0; while (i <= 100) { printf("[%-50s[%d%%][%c]]]\r",buf,i,*(labe原创 2017-05-14 11:58:57 · 436 阅读 · 0 评论 -
结构体对齐方式详解
结构体 对齐原因 1、平台原因(移植原因): 不是所有的硬件平台都能访问任意地址上的任意数据的; 某些硬件平台只能在某些地址处取某些特定类型的数据,否则抛出硬件异常。 2、性能原因:数据结构(尤其是栈)应该尽可能地在自然边界上对齐。 原因在于,为了访问未对齐的内存,处理器需要作两次内存访问;而对齐的内存访问仅需要一次访问。结构体内存对其规则: 1.第一个成员在与结构体变量偏移量为0的地翻译 2016-11-29 21:53:28 · 1920 阅读 · 2 评论 -
【C语言】使用结构体
定义的一般形式: struct 结构体名 { 成员表列 }变量名列表;结构体变量的初始化和引用 典例: 把一个学生的信息(包括学号,姓名,性别,住址)放在一个结构体变量中,然后输出这个学生的信息。#include<stdio.h>#include<windows.h>int main(){ struct Student //声明结构体类型 {原创 2016-11-13 14:41:36 · 246 阅读 · 0 评论 -
【C语言】建立动态链表并输出链表
写一个函数建立一个有3名学生数据的单向动态链表//建立静态链表#include<stdio.h>#include<windows.h>#include<string.h>#include<malloc.h>#define LEN sizeof(struct Student)struct Student{ long num; float score; struct原创 2016-11-13 22:15:39 · 18088 阅读 · 0 评论 -
将输入的制表符替换成适当数目的空格,使空格充满到下一个制表符终止的地方。
#include <stdio.h>#include <stdlib.h>#include <string.h>//最大缓冲区1024#define MAX_BUFFER 1024#define SPACE ' '#define TAB '\t'//计算空格数int CalculateNumberOfSpaces(int Offset, int Ta翻译 2016-11-22 23:52:24 · 636 阅读 · 0 评论 -
改进itoi函数
#include <stdlib.h>#include <stdio.h>#include <limits.h>void itoa(int n, char s[]);void reverse(char s[]);int main(void) { char buffer[20]; printf("INT_MIN: %d\n", INT_MIN); itoa(INT_MIN,翻译 2016-11-24 00:41:32 · 507 阅读 · 0 评论 -
查找C语言中的基本语法错误,如圆括号,左括号,花括号不匹配等
版本一:#include <stdio.h>#define MAXLINE 1000 /* max input line size */char line[MAXLINE]; /*current input line*/int getline(void); /* taken from the KnR book. */intmain(){ int len=0; int t=0;翻译 2016-11-23 00:46:17 · 4260 阅读 · 10 评论 -
11/22日习题课学习笔记
只有真正理解了知识,才能持久的掌握。以后的学习才会更加的轻松! 理解比当下记住更有效!实现了以下问题: 1.递归逆序打印字符串 2.main 函数输入多个命令号参数计算 3.冒泡排序 4.使一个数组前半部分为奇,后半部分为偶 5.杨氏矩阵中找一个数是否存在 6.一个字符串中查找第一个出现的字符#include <stdio.h>#include <assert.h>#include原创 2016-11-22 01:50:02 · 284 阅读 · 0 评论 -
单词计数 行数计数 字符计数
//单词计数//这里对单词的定义比较宽松,它是任何其中不包括空格,制表符或换行符的字符序列#include<stdio.h>#include<windows.h>int main(){ int c; int nl, nc, nw;//nl行数nc字符数nw单词数 int state; nl = nc = nw = 0; state = 1; w原创 2016-11-18 02:20:57 · 697 阅读 · 1 评论 -
每个程序员都应该具备的调试能力。
首先,调试是⼀个程序员最基本的技能,其重要性甚⾄超过学习⼀门语⾔。不会调试的程序员就意味着他即使会⼀门语⾔,却不能编制出任何好的软件。 VC/VS调试快捷键:F9 //设置断点和取消断点 F10 //开始调试//单步执⾏ F11 //进⼊函数内部 F5 //跳到断点处 F7 //编译 Ctrl + F10 //跳到光标处常见调用窗口: 查看内存,局部变量,监视,调用堆栈,线程,寄原创 2016-11-26 17:04:16 · 2687 阅读 · 0 评论 -
【腾讯面试题】判断机器的大小端存储方式。
机器存储方式分为两种:大端和小端。地址分为:高低地址 数据分为:高地位举例;数字123, 3为该数据的低位 如果低位(3)存储在计算机的高地址,我们称之为大端模式,否则,我们称为小端模式。代码实现 方式一:#include<stdio.h>#include<windows.h>int checkSystem();int main(){ int ret = checkSystem(原创 2016-11-26 17:58:48 · 510 阅读 · 0 评论 -
关于回调函数
回调函数是应用程序提供给Windows系统DLL或其它DLL调用的函数,一般用于截获消息、获取系统信息或处理异步事件。应用程序把回调函数的地址指针告诉DLL,而DLL在适当的时候会调用该函数。回调函数必须遵守事先规定好的参数格式和传递方式,否则DLL一调用它就会引起程序或系统的崩溃。通常情况下,回调函数采用标准WindowsAPI的调用方式,即__stdcall,当然,DLL编制者可以自己定义调用方转载 2016-11-26 20:21:49 · 388 阅读 · 0 评论 -
打印各个字符出现频度的直方图
#include <stdio.h>/* NUM_CHARS should really be CHAR_MAX but K&R haven't covered that at this stage in the book */#define NUM_CHARS 256int main(void){ int c; long freqarr[NUM_CHARS + 1]; long th翻译 2016-11-22 00:44:55 · 809 阅读 · 0 评论 -
打印输入中单词长度的直方图,垂直方向的。折磨使我强大的一个程序!
#include <stdio.h>#include<windows.h>#define MAXWORDLEN 10 //宏定义最长数组元素个数int main(void){ int c; int inspace = 0; long lengtharr[MAXWORDLEN + 1]; int wordlen = 0; int firstletter翻译 2016-11-22 00:33:39 · 1105 阅读 · 1 评论 -
//模拟strcpy //strncpy //strcat //strncat //strcmp //strncmp //memcpy //memmove
#include<stdio.h>#include<windows.h>#include<assert.h>//strcpychar* my_strcpy(char*dst,const char*src){ assert(dst); assert(src); char*ret = dst; while (*dst++ = *src++); *dst =原创 2016-11-19 23:12:31 · 297 阅读 · 0 评论 -
编写一个将输入复制到输出的程序,并将其中连续的多个空格用一个空格代替
//编写一个将输入复制到输出的程序,并将其中连续的多个空格用一个空格代替#include<stdio.h>#include<windows.h>int main(){ int c; while ((c = getchar()) != EOF) { if (c == ' ') { putchar(c);原创 2016-11-18 00:39:54 · 769 阅读 · 0 评论 -
【C语言】运算符号详细说明
原文:http://blog.csdn.net/qq_26525215/article/details/48029497 C语言中具有右结合性的运算符包括所有单目运算符以及赋值运算符(=)和条件运算符。其它都是左结合性。判断表达式计算顺序时,先按优先级高的先计算,优先级低的后计算,当优先级相同时再按结合性,或从左至右顺序计算,或从右至左顺序计算。C语言中的符号 运算符的种类 语言的运算符可转载 2016-11-13 11:58:04 · 733 阅读 · 0 评论 -
指针数组和数组指针的详细解答
原文:http://blog.csdn.net/qq_26525215/article/details/50248877/**首先弄明白什么是指针数组,什么又是数组指针。 指针数组: 类型名 *数组名[数组长度] 如: int *p[8]; 因为优先级的关系,p先与[]结合,说明p是一个数组,然后再与*结合数组p 的元素是指向整型数据的指针转载 2016-11-13 11:54:56 · 248 阅读 · 0 评论 -
汉洛塔递归实现的思考(C语言)
汉洛塔是古印度神话产生的智力玩具,他的玩法是,有三个柱子分别为A,B,C,A柱上面有n个盘子上面小下面大堆叠放在一起,现在要求激将A柱上的盘子全部移到C柱上面,并且一次只能移动一个盘子,必须是小盘在大盘的上面。现在要求用C语言递归来完成,并统计递归调用的次数。这个实现是递归的强大功能的体现,废话不多说,请看源码:#include<stdio.h>void move(int n,int *cnt,c转载 2016-11-13 11:51:18 · 529 阅读 · 0 评论