- 博客(52)
- 收藏
- 关注
原创 C语言指针解析
指针与指针变量 我们通常把指针变量叫做指针,准确的说,这样的理解是错误的。首先我想在这里明确一下指针与指针变量是两个概念。指针: 一个变量的地址指出了变量的存储单元在内存中的具体位置,能对变量进行存取操作。这个变量的地址就是变量的指针。指针变量: 指针是一种具有特殊意义的整型数,指针不能存放在一般的整型变量中,必须存放在专门指针的变量中,这类变量就是指针变量。 int...
2018-12-04 16:37:37 296 1
原创 单链表的实现(增、删、查、改功能)
头文件函数#ifndef __SListNode_H__#define __SListNode_H__typedef int DataType;typedef struct SListNode{ struct SListNode* _next; DataType _data;}SListNode;SListNode* BuySListNode(DataType x);void
2017-12-14 15:48:28 532
原创 浅谈时间复杂度及空间复杂度的计算。
算法的时间复杂度和空间复杂度统称为算法的复杂度。其作用: 时间复杂度是指执行算法所需要的计算工作量;而空间复杂度是指执行这个算法所需要的内存空间。(算法的复杂性体现在运行该算法时的计算机所需资源的多少上,计算机资源最重要的是时间和空间(即寄存器)资源,因此复杂度分为时间和空间复杂度)。 为什么要有时间复杂度和空间复杂度? 试想如果我们要知道一个程序算法的优劣需要知道的事
2017-12-10 17:59:26 414
原创 c语言实现代码C风格到C++风格的注释转换
#define _CRT_SECURE_NO_WARNINGS 0#include<stdlib.h>#include<stdio.h>#include"test.h"int status = NULLSTATUS;void do_null_status(FILE *ifp, FILE *ofp){ int ch = fgetc(ifp); switch (ch)
2017-12-10 16:56:30 543
原创 实现斐波那契数列的递归、非递归及尾递归。
非递归int Find(k){ int a = 0; int b = 1; int c = 0; int i = 0; if (k < 2) { return k; } for (i = 2; i <= k; i++) { c = a + b; a = b; b
2017-12-06 16:06:06 714
原创 实现二分查找算法的递归及非递归。
非递归:int Find(int arr[],int size,int k){ int left = 0; int right = size - 1; while (left <= right) { int mid = (left>>1)+(right>>1); if (k == arr[mid]) {
2017-12-06 16:00:06 371
原创 写一个宏可以将一个数字的奇数位和偶数位交换。
#include<stdio.h>#include<windows.h>#define EXCHANGE_JO(x) ((((x)&0xAAAAAAAA)>>1)|(((x)&0x55555555)<<1))//(x)&0xAAAAAAAA)>>1 奇数位清零右移一位,将偶数位移至奇数位//(x)&0x55555555)<<1 偶数位清零左移一位,将奇数位移至偶数位//所得到的两个数字按位
2017-12-05 15:49:53 179
原创 模拟实现strcpy、strcat、strstr、strchr、strcmp、memcpy、memmove
#include<stdio.h>#include<windows.h>#include<assert.h>#include <memory.h>char *my_strcpy(char *dst, const char *src){ assert(dst); assert(src); char *ret = dst; while (*dst++ = *sr
2017-12-04 12:43:26 208
原创 一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。 找出这两个数字,编程实现。
#include<stdio.h>#include<Windows.h>int main(){ int arr[] = {1, 2, 3, 4, 5, 16, 78, 1, 2, 3, 4, 5}; int i = 0; int j = 0; int num = 0; int a = 0; int b = 0; int size = si
2017-11-22 17:13:27 267
原创 用C语言编写程序在屏幕上打印杨辉三角。(非递归)
#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<windows.h>#define MAX 100int main(){ int arr[MAX][MAX] = { 0 }; int a = 0; int i = 0; int j = 0; printf("请输入您想打印的行数
2017-11-21 16:13:37 1831
原创 日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯 的一个。以下为4个嫌疑犯的供词。 A说:不是我。 B说:是C。 C说:是D。 D说:C在胡说 已知3个人说了真话,1个人说的是假
#include<stdio.h>#include<windows.h>int main(){ int killer = 0; for (killer = 'a'; killer <= 'd'; killer++) { if ((killer != 'a') + (killer == 'c') + (killer == 'd') + (killer !=
2017-11-21 15:37:33 470
原创 5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果 A选手说:B第二,我第三; B选手说:我第二,E第四; C选手说:我第一,D第二; D选手说:C最后,我第三; E选手说:我第四,A第一
#include<stdio.h>#include<windows.h>int main(){ int a = 0; int b = 0; int c = 0; int d = 0; int e = 0; for (a = 1; a < 6; a++) { for (b = 1; b < 6; b++) {
2017-11-20 21:24:39 613
原创 编程实现:两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?
#include<stdio.h>#include<windows.h>int compare_bit(int x, int y){ int i = 0; int count = 0; x ^= y; for (i = 0; i < 32; i++) { if ((x >> i) & 1 == 1) {
2017-11-20 20:14:18 274
原创 输出一个整数的每一位。
#include<stdio.h>#include<windows.h>void print(int n){ if (n<10) { printf("%d ", n); } if (n > 9) { print(n/10); printf("%d ", n % 10); } return;
2017-11-20 19:50:23 278
原创 获取一个数二进制序列中所有的偶数位和奇数位,分别输出二进制序列。
#include<stdio.h>#include<windows.h>void print(int n){ int i = 0; printf("奇数位二进制序列为:"); for (i = 32; i >0; i--) { if (i % 2 == 0) { printf("%d", (n >> i)
2017-11-20 19:40:15 155
原创 写一个函数返回参数二进制中 1 的个数 比如: 15 0000 1111 4 个 1
#include<stdio.h>#include<windows.h>int count_one_bits(unsigned int value){ int count = 0; int i = 0; for (i = 0; i<31; i++) { if ((value >> i) & 1 == 1) {
2017-11-20 19:22:47 242
原创 喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以多少汽水。编程实现。
#include<stdio.h>#include<Windows.h>int Heqishui(int n){ static int rep=n; while (n > 1) { rep =rep + n / 2; n = n / 2 + n % 2; } return rep;}int main(){
2017-11-20 17:35:45 1201
原创 模拟实现stract函数
#include<stdio.h>#include<Windows.h>#include<assert.h>char *my_strcat(char *dst, const char *src){ assert(*dst !=NULL); assert(*src !=NULL); char *ret = dst; while (*dst != '\0')
2017-11-16 17:41:13 765
原创 模拟实现strcpy函数
#include<stdio.h>#include<Windows.h>#include<assert.h>char *my_strcpy(char *dst, const char *src){ assert(*dst !=NULL); assert(*src !=NULL); char *ret = dst; while (*dst++ = *src++)
2017-11-16 17:22:36 151
原创 一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。
#include<stdio.h>#include<Windows.h>int main(){ int arr[] = { 1,2,3,4,1,2,3,4, 5, 0 }; int i = 0; int j = 0; int k = sizeof(arr) / sizeof(arr[0]); for (i = 0; i < k; i++) {
2017-11-15 18:13:32 178
原创 递归和非递归分别实现求n的阶乘
递归:#include<stdio.h>#include<windows.h>int jiecheng(int n){ if (n == 1) { return 1; } else if (n > 1) { n--; return (n+1)*jiecheng(n); }}int main(){
2017-11-15 15:50:57 1095
原创 递归和非递归分别实现strlen
递归:#include<stdio.h>#include<windows.h>int my_strlen(char *string){ int count = 0; if (*string != '\0') { string++; count = 1 + my_strlen(string); } return count;
2017-11-15 14:48:31 686
原创 写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和,例如,调用DigitSum(1729),则应该返回1+7+2+9,它的和是19
#include<stdio.h>#include<Windows.h>int DigitSum(int n){ int a = 0; if (n <= 9) { return n; } while (n > 9) { a=n%10; n /= 10; return a + Digit
2017-11-13 15:42:23 208
原创 编写一个函数实现n^k,使用递归实现
#include<stdio.h>#include<Windows.h>int chengfang(int n,int k){ if (k == 1) { return n; } else if(k > 1) { k--; return n*chengfang(n,k); }}int main()
2017-11-13 14:46:34 164
原创 c语言实现求第n个斐波那契数。(递归和非递归)
非递归方法:#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<Windows.h>#define MAX 100int find(int n){ int a = 1; int b = 1; int c = 0; int i = 0; if (n <= 2) {
2017-11-11 14:09:18 354
原创 判断一个字符串是否为另外一个字符串旋转之后的字符串。 例如:给定s1 = AABCD和s2 = BCDAA,返回1,给定s1 = abcd和s2 = ACBD,返回0. AABCD左旋一个字
#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<windows.h>#include<string.h>#include<assert.h>#define MAX 100int Panding(const char *pdest, const char *psrc, int k){ assert(*pdest
2017-11-08 16:45:29 251
原创 实现一个函数,可以左旋字符串中的k个字符。 ABCD左旋一个字符得到BCDA ABCD左旋两个字符得到CDAB
#define _CRT_SECURE_NO_WARNINGS 1#define MAX 100#include<stdio.h>#include<windows.h>#include<string.h>void Sin(char *p,const int a,const int b){ char arr1[MAX] = "a"; char arr2[MAX] = "a"
2017-11-05 17:54:59 211
原创 求两个数的最大公约数。
#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<windows.h>int main(){ int a = 0, b = 0, i = 0; printf("请输入a的值 a="); scanf("%d", &a); printf("请输入b的值 b="); scanf("%d",
2017-11-01 13:20:51 146
原创 用C语言实现三子棋小游戏
#ifndef __GAME_H__#define __GAME_H__#define COL 3#define ROW 3#include<time.h>#include<stdlib.h>#include<stdio.h>#include<windows.h>#include<stdio.h>#include<windows.h>void init_board(char arr
2017-10-26 15:04:24 416
原创 写一个函数返回参数二进制中 1 的个数
#define _CRT_SECURE_NO_WARNINGS 1#include#includeint count_one_bits(unsigned int value){int i = 0;int count = 0;for (i = 0; i {if (((value >> i) & 1) == 1)//按位与运算:& 运算规则:0 & 0 = 0;
2017-10-19 14:44:25 125
原创 将数组A中的内容和数组B中的内容进行交换。(数组一样大)
#define _CRT_SECURE_NO_WARNINGS 1#include#include#include#define MAX 100int main(){char arr1[MAX] = { 0 };char arr2[MAX] = { 0 };int i = 0;printf("请输入数组A的元素:");gets(arr1);p
2017-10-18 12:07:33 228
原创 C语言运算符与表达式
运算符是一种向变异程序说明一个特定的数学或逻辑运算的符号。主要有三大类:算术运算符、关系运算与逻辑运算符、按位运算符。除此之外,还有一些用于完成特殊任务的运算,如赋值运算符、条件运算符、逗号运算符等。C语言的运算符归纳如下: (1)算术运算符“+”、“-”、“ * ”、“ / ”、“ % ”。 (2)关系运算符“>”、“<”、“==”、“>=“、”<=”、“!=”。 (3)逻辑运算
2017-10-17 17:14:05 878
原创 实现一个函数,判断一个数是不是素数。
#define _CRT_SECURE_NO_WARNINGS 1#include#includeint prime(int X){int i = 0;for (i = 1; i {if (X%i != 0)return 1;elsereturn 0;}}int main(){int a = 0;printf("请输入数字:");
2017-10-17 11:37:53 367
原创 实现一个函数判断year是不是润年。
#define _CRT_SECURE_NO_WARNINGS 1#include#includeint leap(int X){if (((X % 4 == 0) && (X % 100 != 0)) || (X % 400 == 0))return 0;elsereturn 1;}int main(){int a = 0;
2017-10-16 16:47:50 544
原创 使用函数实现两个数的交换。
#define _CRT_SECURE_NO_WARNINGS 1#include#includeint Exchange(int *pa, int *pb){int c = 0;c = *pa;*pa = *pb;*pb = c;return *pa, *pb;}int main(){int a = 0;int b = 0;
2017-10-16 16:27:55 485
原创 实现一个函数,打印乘法口诀表,口诀表的行数和列数自己指定, 输入9,输出9 * 9口诀表,输出12,输出12 * 12的乘法口诀表。
#define _CRT_SECURE_NO_WARNINGS 1#include#include#includeint Mul(int X,int Y){return X*Y;}int main(){int a = 0;int i = 0;int j = 0;printf("请输入行、列数(行数=列数):");
2017-10-16 16:10:49 290
原创 编写一个程序,可以一直接收键盘字符,如果是小写字符就输出对应的大写字符,如果接收的是大写字符,就输出对应的小写字符,如果是数字不输出。
#define _CRT_SECURE_NO_WARNINGS 1#include#include#includeint main(){char ch = 'a';printf("请输入:");flag: scanf("%s", &ch);if ((ch >= 97) && (ch {ch = ch - 32;printf("%c\n
2017-10-16 14:07:23 256
原创 编写代码模拟三次密码输入的场景。最多能输入三次密码,密码正确,提示“登录成功”, 密码错误,可以重新输入,最多输入三次。三次均错,则提示退出程序。
#define _CRT_SECURE_NO_WARNINGS 1#include#include#includeint main(){int i = 0;char arr1[7] = "123456";char arr2[10] = { 0 };for (i = 0; i {printf("请输入密码:");gets(arr2)
2017-10-16 12:54:42 3938
原创 写代码可以在整型有序数组中查找想要的数字,找到了返回下标,找不到返回 - 1.(折半查找)
#define _CRT_SECURE_NO_WARNINGS 1#include#includeint Find(int X, int Y, int key,int *p){int mid = (X + Y) / 2;while ((X {mid = (X + Y) / 2;{if (*(p + mid)> key)Y = mid - 1;
2017-10-15 19:08:12 1682
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人