C语言阶段
蜗 @牛
没有简介
展开
-
C语言知识点总结(二)
一、动态内存管理 1、 malloc void* malloc (size_t size) malloc函数向内存申请一块连续可用的空间,并返回指向这块空间的指针。 如果开辟成功,则返回一个指向开辟好空间的指针。 如果开辟失败,则返回一个NULL指针,因此malloc的返回值一定要做检查。 返回值的类型是 void* ,所以malloc函数并不知道开辟空间的类型,具体在使用的时候使用者自己来决定。 (需要进行类型强转) 如果参数 size 为0,malloc的行为是标准还是未定义的,取决于编译器。 2、 f原创 2020-08-04 10:16:27 · 151 阅读 · 0 评论 -
C语言知识点总结(一)
一、指针 1、指针是一个变量,用来存放一块内存空间的地址。 2、指针的大小是固定的4/8个字节(32位平台/64位平台)。 3、 C/C++会把常量字符串存储到单独的一个内存区域,当几个指针。 指向同一个字符串的时候,他们实际会指向同一块内存。但是用相同的常量字符串去初始化不同的数组的时候就会开辟出不同的内存块。 4、 数组指针:一个能够指向数组的指针。数组指针中存放的应该是数组的地址。 int (*p)[10]; //解释:p先和*结合,说明p是一个指针变量,然后指着指向的是一个大小为10个整型的数组。原创 2020-08-03 11:20:28 · 142 阅读 · 0 评论 -
简易通讯录的实现
实现一个通讯录; 通讯录可以用来存储个人的信息,每个人的信息包括: 姓名、性别、年龄、电话、住址 添加联系人信息 删除指定联系人信息 查找指定联系人信息 修改指定联系人信息 显示所有联系人信息 清空所有联系人 以名字排序所有联系人 保存联系人到文件 加载联系人 头文件: #pragma once #define NAME_MAX 200 #define GENDER_MAX 10 #defin...原创 2020-01-22 10:55:40 · 143 阅读 · 0 评论 -
qsort函数
1.使用qsort函数排序 #include <stdio.h> #include <stdlib.h> int cmp(const void* a, const void* b){ return (*(int*)a - *(int*)b);//大于返回1 等于返回0 小于返回-1 } int main(){ int arr[] = { 1, 3, 5, 4, 2,...原创 2019-11-27 21:34:00 · 73 阅读 · 0 评论 -
库函数memcpy 、memmove 的实现
memcpy #include <stdio.h> #include <stdlib.h> #include <assert.h> void* Memcpy(void* dst, const void* src,int num){ assert(dst && src); //字符串不为空 void* ret = dst; //从源字符...原创 2019-11-15 21:03:57 · 93 阅读 · 0 评论 -
库函数strcpy、strcat、strstr、strcmp的实现
strcpy #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <assert.h> char* Strcpy(char* dest, const char* src){ assert(dest != NULL); //字符串不为空 char* r...原创 2019-11-15 21:01:35 · 110 阅读 · 0 评论 -
喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水, 给20元,可以多少汽水。
喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水, 给20元,可以多少汽水。 #include <stdio.h> #include <stdlib.h> int main(){ int n = 20; int num = n;//饮料数量 int bottle = n;//空瓶数量 while (bottle > 1){ num += bottle / 2...原创 2019-11-12 17:20:56 · 106 阅读 · 1 评论 -
一个数组中只有两个数字是出现一次, 其他所有数字都出现了两次。 找出这两个只出现一次的数字
一个数组中只有两个数字是出现一次, 其他所有数字都出现了两次。 找出这两个只出现一次的数字,编程实现。 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> void find(int* arr, int sz){ int num = 0; int ret1 = 0; int r...原创 2019-11-11 20:14:24 · 133 阅读 · 0 评论 -
判断一个字符串是否为另外一个字符串旋转之后的字符串。
判断一个字符串是否为另外一个字符串旋转之后的字符串。 例如:给定s1 =AABCD和s2 = BCDAA,返回1 给定s1=abcd和s2=ACBD,返回0. AABCD左旋一个字符得到ABCDA AABCD左旋两个字符得到BCDAA AABCD右旋一个字符得到DAABC #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #inclu...原创 2019-11-10 17:24:31 · 49 阅读 · 0 评论 -
实现一个函数,可以左旋字符串中的k个字符。 ABCD左旋一个字符得到BCDA ABCD左旋两个字符得到CDAB
实现一个函数,可以左旋字符串中的k个字符。 ABCD左旋一个字符得到BCDA ABCD左旋两个字符得到CDAB 方法一: 保存字符串的首位元素,将后一位元素赋给前一位,再将首位元素赋给最后一位,循环k次。 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <s...原创 2019-11-10 17:23:27 · 87 阅读 · 0 评论 -
//杨氏矩阵 有一个二维数组. 数组的每行从左到右是递增的,每列从上到下是递增的. 在这样的数组中查找一个数字是否存在。 时间复杂度小于O(N); 数组: 1 2 3 2 3 4 3
//杨氏矩阵 有一个二维数组. 数组的每行从左到右是递增的,每列从上到下是递增的. 在这样的数组中查找一个数字是否存在。 时间复杂度小于O(N); 数组: 1 2 3 2 3 4 3 4 5 1 3 4 2 4 5 4 5 6 1 2 3 4 5 6 7 8 9 1.直接将数组找一遍,但是时间复杂度不符合要求.时间复杂度为O(N^2) #include<stdio.h> #includ...原创 2019-11-05 10:45:24 · 102 阅读 · 0 评论 -
输入一个整数数组,实现一个函数, 来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分, 所有偶数位于数组的后半部分。
输入一个整数数组,实现一个函数, 来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分, 所有偶数位于数组的后半部分。 方法:使用两个指针变量分别指向数组的前后,从前面走的指针判断为奇数时就往下走,从后面走的指针判断为偶数时就向前走.当前面的指针对应偶数,后面的指针对应奇数时,就将他们交换.这样就使得数组中所有的奇数位于数组的前半部分, 所有偶数位于数组的后半部分。 #include &...原创 2019-11-04 22:08:27 · 225 阅读 · 0 评论 -
日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个 嫌疑犯的一个。以下为4个嫌疑犯的供词。 A说:不是我。 B说:是C。 C说:是D。 D说:C在胡说 已知3个人说了真话,1个人
日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个 嫌疑犯的一个。以下为4个嫌疑犯的供词。 A说:不是我。 B说:是C。 C说:是D。 D说:C在胡说 已知3个人说了真话,1个人说的是假话。 现在请根据这些信息,写一个程序来确定到底谁是凶手。 #include <stdio.h> #include <stdlib.h> int main() { int ...原创 2019-11-03 22:11:23 · 169 阅读 · 0 评论 -
不使用(a+b)/2这种方式,求两个数的平均值。
不使用(a+b)/2这种方式,求两个数的平均值。 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> int main(){ int a; int b; scanf("%d %d", &a, &b); printf("%d\n", (a + b) >&g...原创 2019-11-03 21:39:11 · 57 阅读 · 0 评论 -
编写函数: unsigned int reverse_bit(unsigned int value); 这个函数的返回值是value的二进制位模式从左到右翻转后的值。 如: 在32位机器上2
编写函数: unsigned int reverse_bit(unsigned int value); 这个函数的返回值是value的二进制位模式从左到右翻转后的值。 如: 在32位机器上25这个值包含下列各位: 00000000000000000000000000011001 翻转后:(2550136832) 10011000000000000000000000000000 程序结果返回: 25...原创 2019-11-03 21:37:20 · 118 阅读 · 0 评论 -
有一个字符数组的内容为:"student a am i", 请你将数组的内容改为"i am a student". 要求: 不能使用库函数。 只能开辟有限个空间(空间个数和字符串的长度无关)。
有一个字符数组的内容为:“student a am i”, 请你将数组的内容改为"i am a student". 要求: 不能使用库函数。 只能开辟有限个空间(空间个数和字符串的长度无关)。 student a am i i ma a tneduts i am a student #include<stdio.h> #include <stdlib.h> //逆转整个字...原创 2019-11-03 21:33:15 · 68 阅读 · 0 评论 -
编程实现: 一组数据中只有一个数字出现了一次。其他所有数字都是成对出现的。 请找出这个数字。(使用位运算)
编程实现: 一组数据中只有一个数字出现了一次。其他所有数字都是成对出现的。 请找出这个数字。(使用位运算) 使用异或运算 0^1=1 0^0=0 1^1=0 #include <stdio.h> #include<stdlib.h> int main(){ int arr[] = { 2, 2, 3, 3, 5, 5, -1, 6, 6 }; int num = 0...原创 2019-11-01 22:47:24 · 100 阅读 · 0 评论 -
计算器实现
实现两位数字简单的加减乘除的四则运算 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> void main(){ float a, b; char c; printf("输入:"); scanf("%f%c%f", &a, &c, &b); ...原创 2019-10-31 22:38:46 · 151 阅读 · 0 评论 -
.在屏幕上打印杨辉三角。
.在屏幕上打印杨辉三角。 1 1 1 1 2 1 1 3 3 1 由图可知杨辉三角每一行的第一位数都为1,而且如果将杨辉三角后面空白处看为0,则可以看出除第一行外,其余每一个数都等于其上一行前一列数和上一行本列数之和 如:2=1+1 1=1+0 3=1+2 3=2+1 … #include<stdio.h> #include<stdlib.h> #define N...原创 2019-10-25 22:35:36 · 196 阅读 · 0 评论 -
5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果 A选手说:B第二,我第三; B选手说:我第二,E第四; C选手说:我第一,D第二; D选手说:C最后,我第三; E选手说:我第四,A
5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果 A选手说:B第二,我第三; B选手说:我第二,E第四; C选手说:我第一,D第二; D选手说:C最后,我第三; E选手说:我第四,A第一; 比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。 注意:该代码只需将各个选手所说的条件进行多重循环的判断,直到满足所有条件,那么就可以判断出他们的名次.但要注意的是,判断完成后可能会出现重复的名...原创 2019-10-25 20:10:13 · 139 阅读 · 0 评论 -
扫雷游戏
扫雷游戏的实现 注:无法自动翻开所点击周围的空白处,所以游戏难以结束,比较耗费时间 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include <time.h> //定义格子数 #define MAX_ROW 9 #define MAX_COL 9 // 定义地雷数...原创 2019-10-22 22:35:12 · 70 阅读 · 0 评论 -
三子棋
三子棋游戏 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #define MAX_ROW 3 #define MAX_COL 3 char chess_board[MAX_ROW][MAX_COL]; //打印棋盘 void printboard(){ printf("+--...原创 2019-10-20 20:34:15 · 237 阅读 · 0 评论 -
编程实现: 两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同? 输入例子: 1999 2299 输出例子:7
编程实现: 两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同? 输入例子: 1999 2299 输出例子:7 #include<stdio.h> #include<stdlib.h> int count_one_bits(unsigned int value) //求二进制数中1的个数 { int count = 0; ...原创 2019-10-17 21:02:15 · 105 阅读 · 0 评论 -
写一个函数返回参数二进制中 1 的个数及获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列。
1.写一个函数返回参数二进制中 1 的个数 比如: 15 0000 1111 4 个 1 程序原型: int count_one_bits(unsigned int value) { // 返回 1的位数 } #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> int count_one...原创 2019-10-15 20:42:20 · 133 阅读 · 0 评论 -
写一个递归函数DigitSum(n),编写一个函数 reverse_string(char * string)(递归实现)
1.写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和, 例如,调用DigitSum(1729),则应该返回1+7+2+9,它的和是19 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> int DigitSum(int n){ if (n < 0)...原创 2019-10-13 22:14:34 · 72 阅读 · 0 评论 -
递归和非递归分别实现求第n个斐波那契数、实现strlen、实现求n的阶乘
1.递归和非递归分别实现求第n个斐波那契数 (1)非递归条件下实现 //非递归实现 #include <stdio.h> #include <stdlib.h> int fib(int n){ if (n == 1 || n == 2) { return 1; } int last2 = 1; int last1 = 1; int result = ...原创 2019-10-13 22:10:23 · 64 阅读 · 0 评论 -
递归实现n^k和打印一个整数的每一位
1.编写一个函数实现n^k,使用递归实现 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> int power (int n, int k){ if (k == 1){ return n; } return n*power(n, k - 1); } int main()...原创 2019-10-13 22:02:13 · 90 阅读 · 0 评论 -
乘法表以及闰年判断
1、输出九九乘法表: #include <stdio.h> #include <stdlib.h> main() { printf("乘法口诀表:\n"); int n, m; for (n = 1; n <= 9; n++) { for (m = 1; m <= n; m++) { if (m > n) break; ...原创 2019-09-23 12:52:26 · 60 阅读 · 0 评论 -
将两个数的值交换
1、 给定两个整形变量的值,将两个值的内容进行交换。 # define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> main() { printf("两个整数:\n"); int n = 0,m = 0; int a=0; scanf("%d %d",&n, &m...原创 2019-09-27 19:37:19 · 68 阅读 · 0 评论 -
求10 个整数中最大值及求两个数的最大公约数
1、求10 个整数中最大值。 #include <stdio.h> #include <stdlib.h> int main(){ int max=0, arr[10] = { 230, 12, 25, 23, 102, 21, 27, 48, 98, 14 }; int i = 0; for (i = 0; i < 10; i++){ if (max<...原创 2019-09-27 19:42:40 · 452 阅读 · 0 评论 -
将数组A中的内容和数组B中的内容进行交换。(数组一样大)
将数组A中的内容和数组B中的内容进行交换。(数组一样大) #include <stdio.h> #include <stdlib.h> int exchange(int arr1[], int arr2[], int size){ //定义一个交换数值的函数// int i = 0; for (i = 0; i <= size; i++){ int n...原创 2019-09-29 22:33:53 · 67 阅读 · 0 评论 -
计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值及 1到 100 的所有整数中出现多少次数字9
1、计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值 #include <stdio.h> #include <stdlib.h> main() { float sum1= 0.0,sum2=0.0,sum; int num1, num2; for (num1 = 1.0; num1 <= 100.0; num1+=2.0)...原创 2019-10-02 11:12:10 · 124 阅读 · 0 评论 -
输出"*"图案和求出0~999的水仙花数和求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和,其中a是一个数字
1、在屏幕上输出以下"*"图案: #include<stdio.h> #include<stdlib.h> int main() { int i=0; int j=0; for (i = 1; i < 8; i++) { j = 2 * i - 1; for (j; j>0; j--) { printf("*"); } prin...原创 2019-10-05 21:51:12 · 167 阅读 · 0 评论 -
猜数字游戏
1、猜数字游戏 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include<time.h> int menu(){ printf("输入为1则开始游戏\n"); printf("输入为0则结束游戏\n"); printf("输入你的选择:\n"); int...原创 2019-10-06 16:17:03 · 86 阅读 · 0 评论 -
模拟3次密码输入及编写一个程序,可以一直接收键盘字符, 如果是小写字符就输出对应的大写字符, 如果接收的是大写字符,就输出对应的小写字符, 如果是数字不输出。
1、模拟3次密码输入 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> int main(){ int i = 0; for (i = 0; i < 3; i++){ char password[1024] = { 0 }; printf("请输入密码!\n"); s...原创 2019-10-06 20:02:44 · 102 阅读 · 0 评论 -
函数实现乘法口诀/数的交换/闰年判断
1.实现一个函数,打印乘法口诀表,口诀表的行数和列数自己指定, 输入9,输出99口诀表,输入12,输出1212的乘法口诀表。 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> void mul(i){ printf("输入行数:\n"); scanf("%d", &i);...原创 2019-10-07 11:42:52 · 78 阅读 · 0 评论 -
创建一个数组, 实现函数init()初始化数组、 实现empty()清空数组、 实现reverse()函数完成数组元素的逆置。 要求:自己设计函数的参数,返回值
创建一个数组, 实现函数init()初始化数组、 实现empty()清空数组、 实现reverse()函数完成数组元素的逆置。 要求:自己设计函数的参数,返回值 #include<stdio.h> #include<stdlib.h> void init(int arr[], int size) { int i = 0; for (i = 0; i < size;...原创 2019-10-08 20:11:22 · 133 阅读 · 1 评论 -
打印100~200 之间的素数
以for函数构成的循环嵌套结构来进行某个周期内素数的打印。 #include <stdio.h> #include <stdlib.h> int main(){ printf("输出100到200之间的素数:\n"); int n,m ; for (n = 100; n <= 200;n++) { for (m = 2; m < n;m++) ...原创 2019-09-22 22:27:21 · 173 阅读 · 0 评论