![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言
sugar high
记录学习C语言
展开
-
Java递增顺序搜索树
给你一棵二叉搜索树的 root ,请你 按中序遍历 将其重新排列为一棵递增顺序搜索树,使树中最左边的节点成为树的根节点,并且每个节点没有左子节点,只有一个右子节点。示例 1:输入:root = [5,3,6,2,4,null,8,1,null,null,null,7,9]输出:[1,null,2,null,3,null,4,null,5,null,6,null,7,null,8,null,9]示例 2:输入:root = [5,1,7]输出:[1,null,5,null,7]提示:树中节点数原创 2022-05-05 20:03:59 · 94 阅读 · 0 评论 -
C语言模拟实现strstr
#include<stdio.h>#include<assert.h>//模拟实现strstrchar* my_strstr(const char* str1, const char* str2){ assert(str1); assert(str2); const char* s1 = str1; const char* s2 = str2; const char* cp = str1; if (*s2 == '\0') { return (char*)原创 2021-01-19 15:47:17 · 105 阅读 · 0 评论 -
C语言模拟实现memcpy
#include<stdio.h>#include<assert.h>//模拟实现memcpyvoid* my_memcpy(void* dest, void* src, unsigned int count){ void* ret = dest; assert(dest); assert(src); while (count--) { *(char*)dest = *(char*)src; dest = (char*)dest + 1; src =原创 2021-01-19 15:40:56 · 79 阅读 · 0 评论 -
C语言模拟实现memmove
#include<stdio.h>#include<assert.h>//模拟实现memmovevoid* my_memmove(void* dest, void* src, unsigned int count){ void* ret = dest; assert(dest); assert(src); //dest在src前 从前向后拷贝 if (dest < src) { while (count--) { *(char*)dest =原创 2021-01-19 14:04:52 · 108 阅读 · 0 评论 -
C语言模拟实现strcat
#include<stdio.h>#include<assert.h>//模拟实现strcatchar* my_strcat(char* dest, const char* src){ char* ret = dest; assert(dest); assert(src); //找到dest末尾 while (*dest != '\0') { dest++; } //追加字符串 while (*dest = *src) { dest++;原创 2021-01-17 23:21:29 · 86 阅读 · 0 评论 -
C语言模拟实现strcmp
#include<stdio.h>#include<assert.h>//模拟实现strcmpint my_strcmp(const char* str1, const char* str2){ assert(str1); assert(str2); while (*str1 == *str2) { if (str1 == '\0') { return 0; } str1++; str2++; } return *str1 - *str原创 2021-01-17 22:51:09 · 107 阅读 · 0 评论 -
C语言自定义结构类型:结构体,枚举,联合
struct Stu{ char name[20]; short age; char sex[5];}s1,s2;//全局变量int main(){ struct Stu s = { "张三", 20, "男" };}//结构体重命名typedef struct Stu{ char name[20]; short age; char sex[5];}stu;int main(){ stu s = { "张三", 20, "男" };}...原创 2021-01-14 00:48:11 · 189 阅读 · 0 评论 -
C语言字符函数和字符串函数使用和实现
//NULL - '\0'//Nul - '\0'#include<stdio.h>#include<assert.h>char* my_strcat(char* dest, const char* src){ char* ret = dest; assert(dest != NULL); assert(src != NULL); //1.找到dest添加位置 即\0处 while (*dest)//跳到\0处跳出 { dest++; } .原创 2020-11-16 20:54:03 · 618 阅读 · 0 评论 -
C语言模拟实现my_strcpy
#include<stdio.h>#include<assert.h>char* my_strcpy(char* dest, const char* src)//原指针不可修改{ char* start = dest;//返回初始位置 assert(dest != NULL);//断言不为空指针 assert(src != NULL); while (*dest++ = *src++)//最后将'\0'也复制进去了 { ; } return start;/.原创 2020-11-10 19:48:59 · 132 阅读 · 0 评论 -
C语言实现三种strlen函数
#include<stdio.h>#include<string.h>int main(){ char* p1 = "abc"; char* p2 = "abcdef"; if (strlen(p1) - strlen(p2) > 0) { printf("大于零\n"); } else { printf("小于零\n"); } return 0;}输出结果:原因是strlen这个函数返回的是size_t类型的数,所以两个返回的数相.原创 2020-11-10 19:46:34 · 2334 阅读 · 0 评论 -
C语言指针和数组笔试题
数组名表示数组首元素的地址:2个例外:1.sizeof(数组名),数组名表示整个数组,计算的是数组的总大小,单位是字节2.&数组名,数组名表示整个数组,&数组名去除的是整个数组地址一维数组:int main(){ int a[] = { 1, 2, 3, 4 }; printf("%d\n", sizeof(a));//16 printf("%d\n", sizeof(a+0));//4 printf("%d\n", sizeof(*a));//4 printf("%d原创 2020-11-03 19:19:03 · 504 阅读 · 1 评论 -
C语言实现猜名次
5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果:A选手说:B第二,我第三; 1B选手说:我第二,E第四; 2C选手说:我第一,D第二; 3D选手说:C最后,我第三; 4E选手说:我第四,A第一; 5比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。原创 2020-10-27 15:08:31 · 572 阅读 · 0 评论 -
C语言实现猜凶手
日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个。以下为4个嫌疑犯的供词:a说:不是我。b说:是c。 c说:是d。 d说:c在胡说 已知3个人说了真话,1个人说的是假话。/现在请根据这些信息,写一个程序来确定到底谁是凶手。原创 2020-10-27 14:53:30 · 629 阅读 · 0 评论 -
C语言实现打印杨辉三角
#include<stdio.h>#define N 7//在屏幕上打印杨辉三角。//1//1 1//1 2 1//1 3 3 1//……int main(){ int arr[N][N]; int i = 0; int j = 0; for (i = 0; i < N; i++) { arr[i][0] = 1; arr[i][i] = 1; } for (i = 2; i < N; i++) { for (j = 1; j &原创 2020-10-27 14:35:39 · 286 阅读 · 0 评论 -
C语言模拟实现qsort函数
排整数:#include<stdio.h>#include<stdlib.h>void qsort( void *base, size_t num, size_t width, int(__cdecl *compare)(const void *elem1, const void *elem2)//elem1 elem2要比较元素的地址 );int cmp_int(const void *elem1, const void *elem2){ return...原创 2020-10-27 08:35:15 · 425 阅读 · 1 评论 -
C语言进阶指针相关内容
1.字符指针#include<stdio.h>int main(){ char ch = 'w'; char* pc = &ch; printf("%c\n", *pc); char* p = "abcdef";//"abcdef" - 常量字符串 - 不能改 printf("%s\n", p); char arr[10] = "abcdef"; char* p2 = arr; *p2 = 'w'; printf("%s\n", arr);}输出结果.原创 2020-10-21 16:28:53 · 211 阅读 · 1 评论 -
C语言实现调整数奇数在前偶数在后
#include<stdio.h>#include<assert.h>//输入一个整数数组,实现一个函数,//来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,//所有偶数位于数组的后半部分。void print_arr(const int* arr, const int sz){ assert(arr != NULL); int i = 0; for (i = 0; i < sz; i++) { printf("%d ", *(arr原创 2020-10-10 22:14:31 · 851 阅读 · 0 评论 -
C语言模拟实现库函数strcpy
#include<stdio.h>#include<assert.h>char* my_strcpy(char* arr2, const char* arr1){ char* ret = arr2; assert(arr2 != NULL); assert(arr1 != NULL); while (*(arr2++) = *(arr1++)) { ; } return ret;}int main(){ char arr1[] = "hello";原创 2020-10-10 21:28:35 · 77 阅读 · 0 评论 -
C语言模拟实现库函数strlen
#include<stdio.h>#include<assert.h>int my_strlen(const char* arr){ assert(arr != NULL); int count = 0; while (*(arr++)) { count++; } return count;}int main(){ char arr[] = "hellobit"; int ret = my_strlen(arr); printf("%d\n",原创 2020-10-10 21:26:20 · 101 阅读 · 0 评论 -
C语言实现打印水仙花数
#include<stdio.h>#include<math.h>//求出0~100000之间的所有“水仙花数”并输出。//“水仙花数”是指一个n位数,其各位数字的n次方之和确好等于该数本身//如:153=1^3+5^3+3^3,则153是一个“水仙花数”。int main(){ int i = 0; for (i = 0; i <= 100000; i++) { //1.计算i的位数 - n int tmp = i; int count =原创 2020-10-10 10:38:11 · 622 阅读 · 0 评论 -
C语言实现求Sn=a+aa+aaa+aaaa+aaaaa的前n项的和
#include<stdio.h>//求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和,其中a是一个数字,//例如:2 + 22 + 222 + 2222 + 22222int main(){ int a = 0; int i = 0; int n = 0; int k = 0; int sum = 0; scanf("%d%d", &a, &n); for (i = 0; i < n; i++) { k = k * 10 + a原创 2020-10-10 09:54:25 · 4890 阅读 · 0 评论 -
C语言指针实现字符串逆序
#include<stdio.h>#include<string.h>//写一个函数,可以逆序一个字符串的内容。void reverse(char* arr){ int len = strlen(arr); char* left = arr; char* right = arr + len - 1; while(left < right) { char tmp = *left; *left = *right; *right = tmp;原创 2020-10-10 09:37:28 · 6776 阅读 · 2 评论 -
C语言实现使用指针打印数组内容
#include<stdio.h>//写一个函数打印arr数组的内容,不使用数组下标,使用指针。//arr是一个整形一维数组。void print_arr(int* arr,int sz){ int i = 0; for (i = 0; i < sz; i++) { printf("%d ", *(arr + i)); } printf("\n");}int main(){ int arr[] = { 1, 2, 3, 4, 5 }; int sz =原创 2020-10-10 09:14:05 · 859 阅读 · 0 评论 -
C语言进阶学习数据在内存中的存储
#include<stdio.h>int main(){ char c1 = 'w';//char到底是signed还是unsigned char是不确定的,取决于编译器的实现 signed char c2 = 'w'; unsigned char c2 = 't'; short int a = 10;//等价与short short b = 20;//short 是signed short signed short c = 30; unsigned short d = .原创 2020-10-06 03:17:30 · 112 阅读 · 0 评论 -
VS Debug和Release的介绍
Debug版本下:#include<stdio.h>#include<stdlib.h>int main(){ int i = 0; int arr[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; printf("&i=%p\n", &i); for (i = 0; i <= 12; i++) { arr[i] = 0; printf("hehe\n"); } //让代码走到这里暂停 sys.原创 2020-10-05 21:05:57 · 181 阅读 · 0 评论 -
C语言如何写出好(易于调试)的代码
char * strcpy(char * dst, const char * src){ char * cp = dst; assert(dst && src);//assert - 断言 while( *cp++ = *src++ ) ; /* Copy src over dst */ return( dst );}原创 2020-10-04 18:51:32 · 95 阅读 · 0 评论 -
C语言实现my_strcpy
void my_strcpy(char* dest, char* src){ while (*dest++ = *src++) { ; }}int main() { char arr1[] = "hello"; char arr2[20] = "XXXXXXXXXXXX"; my_strcpy(arr2, arr1); printf("%s\n", arr2); return 0;}输出结果:原创 2020-10-04 03:10:47 · 280 阅读 · 0 评论 -
求两个数二进制位不同位的个数
//编程实现:两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?//输入例子://1999 2299 //输出例子 : 7int count_differ(int x, int y){ int z = x^y; int i = 0; int count = 0; for (i = 0; i < 32; i++) { if ((z>>i)&1 == 1) { count++; } } return count;原创 2020-10-04 01:59:10 · 150 阅读 · 0 评论 -
打印整数二进制位的奇数位和偶数位
int main(){ int num = 20;//00000000 00000000 00000000 0001 0100 int i = 31; for (i = 31; i >= 1; i -= 2) { printf("%d ", (num >> i) & 1); } printf("\n"); for (i = 30; i >= 0; i -= 2) { printf("%d ", (num >> i) & 1);原创 2020-10-04 01:55:48 · 135 阅读 · 0 评论 -
C语言结构体全方面详解
struct Book{ char name[20];//书名 short price;//定价};//书struct Book{ char name[20];//书名 short price;//定价};int main(){ struct Book b;//创建一本书 strcpy(b.name, "C语言");//字符串拷贝 把"C语言"拷贝到name数组中 b.price = 55; printf("%s\n", b.name); printf("%d..原创 2020-09-30 23:40:51 · 209 阅读 · 0 评论 -
C语言指针以及指针数组详解
int main(){ int a = 10; char ch = 'w'; return 0;}原创 2020-09-30 05:21:50 · 375 阅读 · 0 评论 -
C语言表达式求值
int main(){ char a = 3; char b = 127; char c = a + b; //a,b达不到整型标准,要整型提升 //00000000 00000000 00000000 00000011 //00000011 //00000000 00000000 00000000 00000011 -a提升后 //00000000 00000000 00000000 01111111 //01111111 //00000000 00000000 000000...原创 2020-09-28 00:47:50 · 1489 阅读 · 0 评论 -
C语言操作符分类详解
int main(){ int a = 7;//111; int b = a << 1; printf("%d\n", b); return 0;}输出结果:int main(){ int a = -1;//111; int b = a >> 1; printf("%d\n", b); return 0;}由此可得,编译器采用的是算术右移。int main(){ int a = 3; int b = 5; int c ...原创 2020-09-23 20:11:26 · 178 阅读 · 0 评论 -
C语言实现扫雷游戏初级版
game.h#include<stdio.h>#include<stdlib.h>#include<time.h>#define ROW 9#define COL 9#define ROWS ROW+2#define COLS COL+2#define EASY 10//初始化棋盘void InitBoard(char board[ROWS][COLS], int rows, int cols,char set);void PrintBoard(原创 2020-09-20 16:57:05 · 122 阅读 · 0 评论 -
C语言实现三子棋游戏初级版
game.h#include<stdio.h>#include<stdlib.h>#include<time.h>#define ROW 3#define COL 3//声明函数void InitBoard(char board[ROW][COL], int row, int col);//打印棋盘void PrintBoard(char board[ROW][COL], int row, int col);//玩家下棋void PlayerMo原创 2020-09-20 16:52:57 · 68 阅读 · 0 评论 -
C语言实现数组交换
#include<stdio.h>//将数组A中的内容和数组B中的内容进行交换。(数组一样大)void swap_arr(int arr1[], int arr2[], int sz){ int i = 0; for (i = 0; i < sz; i++) { int temp = arr1[i]; arr1[i] = arr2[i]; arr2[i] = temp; }}void print_arr(int arr[], int sz){ int原创 2020-09-17 19:33:31 · 5747 阅读 · 0 评论 -
C语言实现数组初始化,打印,逆置操作
#include<stdio.h>//创建一个整形数组,完成对数组的操作//实现reverse() 函数完成数组元素的逆置。void reverse_arr(int arr[], int sz){ int left = 0; int right = sz - 1; while (left <= right) { int temp = arr[left]; arr[left] = arr[right]; arr[right] = temp; left+原创 2020-09-17 19:07:01 · 245 阅读 · 0 评论 -
C语言实现一个对整形数组的冒泡排序
#include<stdio.h>//实现一个对整形数组的冒泡排序//从大到小//打印数组void print_arr(int arr[], int sz){ int i = 0; for (i = 0; i < sz; i++) { printf("%d ", arr[i]); } printf("\n");}//冒泡排序void bubble(int arr[], int sz){ int i = 0; for (i = 0; i < s原创 2020-09-17 18:26:05 · 1597 阅读 · 0 评论 -
C语言数组的创建初始化以及使用
#include<stdio.h>int main(){ int array[10];//创建 char ch[10]; int n = 10; int arr1[n] = {0};//err []必须为常量或者常量表达式 return 0;}int array[10] = { 1, 2, 3 };//创建并初始化 //不完全初始化,剩余元素默认初始化为0 int arr2[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };//完全初始.原创 2020-09-15 18:53:46 · 13287 阅读 · 0 评论 -
C语言(非)递归法分别实现求第n个斐波那契数
#include<stdio.h>//非递归实现求第n个斐波那契数//1 1 2 3 5 8 13 21 34 55int fabo1(int x){ int a = 1; int b = 1; int c = 1; while (x > 2) { c = a + b; a = b; b = c; x--; } return c;}//递归实现求第n个斐波那契数int fabo2(int x){ if (x > 2) {原创 2020-09-13 19:51:13 · 118 阅读 · 0 评论