自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 收藏
  • 关注

原创 有一个字符数组的内容为:"student a am i",请你将数组的内容改为"i am a student". 要求: 不能使用库函数。只能开辟有限个空间(空间个数和字符串的长度无关)。

这里程序实现分两步,第一步是先将整个字符串反转过来,第二步是把里面的每个单词再次反转。 student a am i 经第一步操作后 变成:i ma a tneduts经第二步操作后 变成:i am a studentint my_lenth(const char *s) //求出字符串的总长度{ assert(s); //断言,不能传空指针 int lenth = 0

2017-10-29 14:25:10 735

原创 一组数据中只有一个数字出现了一次。其他所有数字都是成对出现的。 请找出这个数字。

这题要找出只出现过一次的那个数,如果是一遍遍的遍历对比的话那时间复杂度是非常大的,这里推荐使用异或运算。 我们知道异或运算有个特点,一个数连续两次异或同一个数,这个数的值不变。例如5^4(0101^0100) = 1,1^4(0001^0100) = 5(0101)。这里我们可以利用这个特性,用0和数组中的各个数依次进行异或运算,那么最后得到的值就是单次出现的那个数的值。int research_

2017-10-28 22:11:08 545

原创 数据在内存储存的经典列题

int main(){ signed char a[1000]; int i = 0; for (i = 0; i < 1000; ++i) { a[i] = -1 - i; } printf("%d", strlen(a)); system("pause"); return 0;} 这道题的运行结果是255。

2017-10-25 16:49:16 387

转载 堆、栈及静态数据区详解

转自:http://blog.csdn.net/liubing8609/article/details/42362179堆、栈及静态数据区详解五大内存分区在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区。栈里面的变量通常是局部变量、函数参数等。堆,就是那些由new分配的内存块,他

2017-10-24 20:23:35 1238

原创 用C语言编写排雷游戏(多文件)

游戏功能: ①打印雷盘 ②随机布雷 ③第一踩雷不死(重新布雷) ④扩展式扫雷 ⑤计算周围雷的个数代码关键点: ①玩游戏的雷盘比实际定义的数组小。 ②memset初始化数组(以字节为单位初始化)。 ③rand函数给雷盘随机位置布雷(用sand设置随机数种子)。

2017-10-23 17:25:09 938

原创 C语言编写三子棋完整代码(分三个文件)

1.game.h 头文件#ifndef __GAME_H__#define __GAME_H__#include <stdio.h>#include <string.h>#include <windows.h>#include <time.h>#define ROW 3#define COL 3void InitBoard(char arr[ROW][COL], int row

2017-10-21 21:28:53 1209

原创 《剑指offer》面试题05:替换空格

更多剑指offer面试习题请点击: 《剑指offer》(第二版)题集目录索引题目:请实现一个函数,把字符串中的每个空格替换成“%20”。例如,输入“We are happy!”,则输出“We%20are%20happy!”解题思路:从后往前复制,遇到非空格时直接把这个字符拷贝到后面,遇到空格则插入“%20”。 蓝色区域是进行了字符复制或移动的区域 &...

2017-10-20 20:10:55 487

原创 谈谈malloc()和free()

文章转载自:http://www.nowamagic.net/librarys/veda/detail/2427 首页

2017-10-20 14:20:36 445

原创 输入一个字符串然后把它反序输出

char *Uberground(char *arr) { int i = 0; int size = strlen(arr); char temp[100] = ""; for (i = 0; i < size; ++i) { temp[i] = arr[size - i - 1]; } for (i = 0; i <

2017-10-19 19:54:04 11858

原创 输入一个字符串,找到其中最长的单词并输出

int main() //第十题,统计单词个数{ char s[100] = "hello the word! ggsyrasa kiujh"; strcat(s, " "); int i = 0; int point = 0; int place = 0; int L = 0; int l = 0; int flag = 1;

2017-10-19 19:47:42 7341 1

原创 比较三个字符串的大小,最后按从小到大的顺序输出

void swa(char arr1[], char arr2[]) //第二题{ char tem[10] = ""; strcpy(tem, arr2); strcpy(arr2, arr1); strcpy(arr1, tem);}int main() //{ char s3[10] = "abc"; char s2[10] = "d

2017-10-19 19:43:48 4326

原创 《剑指offer》面试题04:二维数组中的查找

更多剑指offer面试习题请点击: 《剑指offer》(第二版)题集目录索引题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。解题思路:杨氏矩阵的特点是它的行和列的数都是递增的,所以我们可以选择它的一个顶点元素作为比较对象。比如我在下面这个数组中查找数字2。

2017-10-19 12:34:59 963

原创 写一个函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符串

char *Uberground(char *arr) //反序输出字符串{ int i = 0; int size = strlen(arr); char temp[100] = ""; //创建一个空数组,用来做中间变量 for (i = 0; i < size; ++i) { temp[i] = arr[size - i - 1

2017-10-18 11:11:21 5622

原创 自己模拟实现strcpy函数功能

这段代码的五个亮点: ①返回值为char*,链式访问。 ②给srce前加const,防止*srce在子函数中被意外修改,加强了代码的健壮性(鲁棒性)。 ③使用断言,传过来的两个指针不能为NULL,避免因为这种情况程序崩溃。 ④运算过程和判断条件 都放在while判断条件中,代码更加简洁 ⑤先定义一个指针变量储存dest最开始的值,方便把首地址传回去。 注意: st

2017-10-17 21:41:38 1306 1

原创 在屏幕上打印杨辉三角

#include <stdio.h>#include <windows.h>int main(){ int i = 0; int j = 0; int arr[10][10] = { 0 }; for (i = 0; i < 10; i++) { for (j = 0; j < 10; j++) {

2017-10-16 21:25:48 527

原创 数组的各种操作

1.数组初始化数据类型 + 数组名[元素个数] = {数组元素};如:int arr[10] = {0};这条语句翻译过来就是创建了一个数组,它里面有10个整型元素,第一个元素赋值为0,后面的9个元素没有赋值,默认为0;当然这只是一种最基本的初始化方法,还有以下三种方法可以初始化数组。①strcpy;char arr[10];strcpy(arr, "123456");②f

2017-10-16 21:17:13 344

原创 5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果 A选手说:B第二,我第三。 B选手说:我第二,E第四。 C选手说:我第一,D第二。 D选手说:C最后,我第三。 E选手说:我第四,A第一。

int main(){ int a = 1; int b = 1; int c = 1; int d = 1; int e = 1; for (a = 1; a <= 5; a++) { for (b = 1; b <= 5; b++) { if (a != b)//剔除并列情况,a和b

2017-10-16 21:07:17 794

原创 两个乒乓球队进行比赛,各出三人。甲队为A、B、C 3人,乙队为X、Y、Z 3人。已抽签决定比赛名单。有人向队员打听比赛的名单,A说他不和X比,C说他不和X、Y比,请编程序找出3三队选手的对阵名单。

int main() { char a, b, c; //A B C的对手为 a,b,c for (a = 'X'; a <= 'Z'; a++) { for (b = 'X'; b <= 'Z'; b++) { if (a != b) // A和B的对手不能相同

2017-10-16 19:56:54 3479

原创 猴子吃桃问题。猴子第一天摘了若干个桃子,当即吃了一半,还不解馋,又多吃了一个;第二天,吃剩下的桃子的一半,还不过瘾,又多吃了一个;以后每天都吃前一天剩下的一半多一个,到第10天想再吃时,只剩下一个桃子

int main() { int num = 1; int i = 0; int sum = 0; for (i = 0; i < 9; i++) { sum = (num + 1) * 2; num = sum; } printf("共有%d个桃子\n", sum); system("pause");

2017-10-16 18:56:16 22746

原创 编程找出1000以内的完数,并按下面格式输出因子:6 its factors are 1 2 3

void is_Perfectnumber(int number) //判断完数并输出{ int i = 0; int j = 0; int sum = 0; int arr[100] = { 0 };//定义一个数组,存储因子 for (i = 1; i <= number/2; i++) //判断完数 { if (0 == num

2017-10-16 15:23:47 7629

原创 求1!+2!+3!+……+20!的和

#include <stdio.h>#include <windows.h>int main() { int num = 1; int i = 0; int sum = 0; for (i = 0; i < 20; i++) { num = num * (i + 1); sum = sum + num; } p

2017-10-16 14:37:50 11369 2

原创 输入一行字符,分别统计出英文字母、空格、数字和其他字符的个数

int main() { int count1 = 0; //字母 int count2 = 0; //空格 int count3 = 0; //数字 int count4 = 0; //其他 char ch = ' '; while ((ch = getchar()) != '\n')//读取键盘上输入的字符,遇到换行符结束 {

2017-10-16 13:46:47 4250

原创 日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个。以下为4个嫌疑犯的供词。 A说:不是我。 B说:是C。 C说:是D。 D说:C在胡说 已知3个人说了真话,1个人说的是假话。 现

int main(){ int i = 0; int j = 0; for (i = 0; i < 4; i++) { int killer = 65 + i; j = ((killer != 'A') + (killer == 'C') + (killer == 'D') + (killer != 'D')); if

2017-10-15 20:25:20 925

原创 两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?

int Compare(void){ printf("请输入两个整数:"); int num1 = 0; int num2 = 0; int ret = 0; int count = 0; scanf_s("%d%d", &num1, &num2); ret = num1 ^ num2; while (ret) {

2017-10-13 19:53:56 392

原创 输出一个整数的每一位

int EveryBit(void){ printf("请输入一个正整数:"); int num = 0; scanf_s("%d", &num); int tem = 0; int count = 1; while (num) { tem = num % 10; printf("该数的第%d位数是%d\n",

2017-10-13 19:51:39 873

原创 总结按位操作符(按位与&、按位或|、按位异或^)以及sizeof操作符

C语言中的位操作符有以下六种:& 按位与| 按位或^ 按位异或~ 取反<< 左移>> 右移1. & 按位与规则:1 & 1 = 1; 1 & 0 = 0; 0 & 1 = 0; 0 & 0 = 0;即 & 按位与操作符是双目操作符,它的作用是运算符两边均为1则结果为1,其他情况则为0...

2017-10-13 19:43:49 895

原创 获取一个数二进制序列中所有的偶数位和奇数位,分别输出二进制序列

int Numberof_oddbits_evenbits(unsigned int num)//无符号整型的形参{ int arrOdd[16] = { 0 }; int arrEven[16] = { 0 }; int i = 0; int flag = 1; int m = 0; for (i = 0; i < 16; i++)//找奇数位

2017-10-13 11:38:46 559

原创 《剑指offer》面试题15:二进制中1的个数

更多剑指offer面试习题请点击: 《剑指offer》(第二版)题集目录索引题目:请实现一个函数,输入一个整数,输出该数二进制表示中1的个数。例如把9表示成二进制是1001,有2位是1。因此如果输入9,该函数输出2。解题思路1:利用位运算,首先让number和1进行 & 运算,判断 n&1 的结果是否为1,接着把1左移一位得到2,再和n做 与 运算,反复循环,每次判断n的其中一位是

2017-10-13 07:26:05 545

原创 动态内存管理(malloc、 free、 calloc、 realloc)

1.malloc声明:void *malloc(size_t size);功能:向系统申请分配指定size个大小的字节空间。返回值为void * ,表示未确定类型指针。使用示例:int *p = (int *)malloc(10 * sizeof(int));注意:在使用这块内存前,必须判断malloc是否申请内存成功(if (p == NULL)),如果内存满了,就会申请

2017-10-10 21:00:34 532

原创 在结构体中内存对齐的规则及其重要性

在定义结构体中,一个结构体里面往往有多个变量,而这就牵涉的它们的内存分配问题。下面就说说内存分配的规则和其重要性。 内存分配的规则: ①结构体内第一个成员放在整体的零偏移处。 ②从第二个成员开始每个成员都要对齐到它的对齐数的整数倍上(每个成员的对齐数是自身的大小和默认对齐数的较小值,VS平台下的默认对齐数是8,linux下的是4) 。 ③结构体的总大小必须是所有对齐数里面

2017-10-09 21:29:05 1961

原创 sizeof与数组之间那点事

今天做题看到很多sizeof(a)、sizeof(&a)、sizeof(&a+1)之类的题,一不小心就把人弄晕了,所以今天就好好把这些整理整理。开始之前呢分享一个小技巧——数组名只有处于以下两种情况时才代表整个数组:①数组名单独在sizeof内时。②  &数组名(如&a)int a[ ] = {1,2,3,4};sizeof(a) =16                  数组

2017-10-07 11:26:42 970 1

原创 模拟实现strstr函数功能

strstr函数的功能:有两个字符串str1,str2。如果s2是s1的子集,返回s2在s1中首次出现的地址,否则返回NULL。如str1 = “we are student!”,str2 = “are”。那么返回的就是“are”的第一个字符‘a’在s1中的地址。#include <stdio.h>#include <windows.h>#include <string.h>#include

2017-10-06 11:42:33 593

原创 练习题014:模拟实现strcat函数

C语言练习题目录索引#include &lt;stdio.h&gt;#include &lt;string.h&gt; #include &lt;assert.h&gt; //返回值为char*,实现链式访问char *my_strcat(char *dest, const char *srce) //const修饰字符串,加强代码的壮健性{ char *ret...

2017-10-06 09:14:34 628

原创 strcmp和memcmp两个字符串比较函数

在C语言中经常遇到比较两个字符串大小的问题,这里我列出两个常用的比较函数以及它们的具体用法和两者之间的区别。strcmp函数: 函数原型:int strcmp(const char * s2,const char * s2);功能:比较字符串s1和字符串s2的大小。返回值: s1大于s2,返回值大于零 s1等于s2,返回值等于零 s1小于s2,返回值小于零特点:两个字符串之间是逐个按照它们

2017-10-02 16:25:34 2656

原创 练习题013:二分查找(递归和非递归两种方法)

C语言练习题目录索引题目:用递归和非递归两种方法实现二分查找非递归法:int binary_search(int *arr, int lenth, int key){ assert(arr != NULL); int left = 0; int right = lenth - 1; int mid = 0; while (left &lt;=...

2017-10-01 09:41:08 801

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除