![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言
会飞滴熊猫
一个小渣渣的学习日常
展开
-
实现strcpy
实现strcpy实现strcpy//实现一个库函数 strcpyvoid Mystrcpy(char* des, const char*src) { assert(src != NULL); //把源字符串的指针指向内容赋值给目标指针,然后指针后置加加,即指针向后移动一位 while ((*des++ = *src++)!= '\0') { //do nothing } ...原创 2019-04-14 21:28:30 · 1137 阅读 · 0 评论 -
日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个 嫌疑犯的一个。以下为4个嫌疑犯的供词。 A说:不是我。 B说:是C。 C说:是D。 D说:C在胡说 已知3个人说了真话,1个人说的是假话。
日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个。以下为4个嫌疑犯的供词。A说:不是我。B说:是C。C说:是D。D说:C在胡说已知3个人说了真话,1个人说的是假话。现在请根据这些信息,写一个程序来确定到底谁是凶手。解题思路:定义一个变量,用来存放凶手的名字,用’A’,‘B’,‘C’,‘D’,四个字符来代表凶手的名字,循环遍历这个凶手,然后进行判断int ...原创 2019-04-07 08:58:50 · 853 阅读 · 2 评论 -
5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果 A选手说:B第二,我第三; B选手说:我第二,E第四; C选手说:我第一,D第二; D选手说:C最后,我第三; E选手说:我第四,A第一
5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果A选手说:B第二,我第三;B选手说:我第二,E第四;C选手说:我第一,D第二;D选手说:C最后,我第三;E选手说:我第四,A第一;比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。解题步骤:把每个人的所有结果进行遍历,遍历完成后进行一系列的判断,根据每个选手说的话进行判断,最终得到数据int main() { int ...原创 2019-04-07 08:42:39 · 389 阅读 · 1 评论 -
一个数组中只有两个数字是出现一次, 其他所有数字都出现了两次。 找出这两个数字,编程实现。
一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。找出这两个数字,编程实现。int main() { int arr[] = { 3,5,4,2,5,4,2,9 }; int i = 0;//第一次循环 int j = 0;//内层循环 int count=0;//计数 int len = sizeof(arr) / sizeof(int); for (i = 0; i...原创 2019-04-10 21:46:25 · 105 阅读 · 0 评论 -
模拟实现strcat
模拟实现strcatchar* Mystrcat(char buf[], char arr[]) { char* ret = buf;//定义一个临时指针,存储buf的指针 while (*ret != '\0') { ret++;//把指针指向buf的最后即'\0'; } while ((*ret++ = *arr++) != '\0') {//从'\0'开始给buf进行后续拼接...原创 2019-04-10 21:13:48 · 127 阅读 · 0 评论 -
模拟实现strcpy
模拟实现strcpyvoid Mystrcpy(char best[], char src[]) {//把目标字符串和源字符串传进函数 if (src == NULL) {//如果源字符串为NULL直接程序结束 return -1; } //数组的形参会隐式转换成指针,解引用指针的到第一个字符进行赋值, //在进行判定是否为反斜杠0,指针后置加加指向下一个元素 while ((*b...原创 2019-04-10 21:00:29 · 144 阅读 · 0 评论 -
喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水, 给20元,可以多少汽水。 编程实现。
喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以多少汽水。编程实现。解题思路: 20块钱喝20瓶饮料,空瓶的个数应该是空瓶数除以2再加上空瓶数模上2,原因是当剩五个空瓶时换两瓶,剩一个空瓶,当然这个空瓶也要算进去,不然直接导致结果错误int main() { int money = 20;//有20块钱 int count = 0;//记录喝汽水的个数 count = 2...原创 2019-04-10 20:42:26 · 382 阅读 · 0 评论 -
C语言递归方式实现打印一个整数的每一位
C语言递归方式实现打印一个整数的每一位void PRINT(int n) { if (n == 0) {//如果n==0直接退出 return; } if (n < 10) {//如果n<10打印他本身 printf("%d\n", n); } if (n>10) {//如果n>10进入递归 PRINT(n / 10); printf("%d\n",...原创 2019-03-28 12:07:14 · 757 阅读 · 0 评论 -
C语言递归和非递归分别实现求n的阶乘
C语言递归和非递归分别实现求n的阶乘1.用递归的方法求解int jiecheng(int n) { if (n == 1) { return 1; } return n*jiecheng(n - 1);//n乘n-1开始递归}int main() { int ret = jiecheng(4); printf("%d", ret); system("pause"); re...原创 2019-03-27 15:39:58 · 1196 阅读 · 0 评论 -
C语言递归和非递归分别实现strlen
C语言递归和非递归分别实现strlen1.非递归的方法实现strlenint mystrlen(char* buf) { int count = 0; while (*buf != '\0') { count++; *buf++; } return count;}int main() { char buf[] = "welcome to bit"; int ret = ...原创 2019-03-27 15:29:07 · 807 阅读 · 2 评论 -
C语言写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和
例如,调用DigitSum(1729),则应该返回1+7+2+9,它的和是19****思路分析:在递归的时候进行模10和除10操作即可完成该题目int DigitSum(int n) { if (n < 10) { return n;//当n小于10的时候,即取到最大位时直接返回他本身即可 } return n % 10 + DigitSum(n / 10);//首先%10得到...原创 2019-03-27 14:57:27 · 842 阅读 · 0 评论 -
C语言编写一个函数实现n^k,使用递归实现
C语言编写一个函数实现n^k,使用递归实现int mypow(int n, int k) {//传进参数 n和k if (k == 1) {//如果k等于1的时候就返回一个n; return n; } return n*mypow(n, k-1);//开始递归}int main() { int a = mypow(2, 4); printf("%d\n", a); syst...原创 2019-03-27 14:39:55 · 613 阅读 · 0 评论 -
1.编写函数: unsigned int reverse_bit(unsigned int value); 这个函数的返回值value的二进制位模式从左到右翻转后的值。
1.编写函数:unsigned int reverse_bit(unsigned int value);这个函数的返回值value的二进制位模式从左到右翻转后的值。如:在32位机器上25这个值包含下列各位:00000000000000000000000000011001翻转后:(2550136832)10011000000000000000000000000000程序结果返回:2...原创 2019-04-07 09:38:37 · 208 阅读 · 0 评论 -
1.调整数组使奇数全部都位于偶数前面。 题目: 输入一个整数数组,实现一个函数, 来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分, 所有偶数位于数组的后半部分。
1.调整数组使奇数全部都位于偶数前面。题目:输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分。**解题思路:**循环的次数是一个问题,在交换完两个数之后应该再循环这个数,判断是不是偶数,当是偶数继续循环,如果循环退出条件为数组长度,最终循环完成会把偶数又换回到数组的前半部分,所以循环的退出条件也应该一起控制int...原创 2019-04-07 10:49:08 · 526 阅读 · 0 评论 -
杨氏矩阵 有一个二维数组. 数组的每行从左到右是递增的,每列从上到下是递增的. 在这样的数组中查找一个数字是否存在。 时间复杂度小于O(N);
杨氏矩阵有一个二维数组.数组的每行从左到右是递增的,每列从上到下是递增的.在这样的数组中查找一个数字是否存在。时间复杂度小于O(N);数组:1 2 32 3 43 4 51 3 42 4 54 5 61 2 34 5 67 8 9解题思路:先从数组的第一行最后一个进行查找,如果刚好相等则返回1,如果要找的值大于这个元素,则在下一行的最后一个元素查找,如果小于则在这行的...原创 2019-04-07 12:26:08 · 205 阅读 · 0 评论 -
malloc,calloc,realloc的使用及函数声明
malloc动态开辟内存空间*函数声明:void malloc(unsigned size);#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>//malloc 动态开辟内存空间int main() { char buf[...原创 2019-04-21 19:35:53 · 364 阅读 · 0 评论 -
关于C语言自定义类型的总结
结构体1. 结构体的声明结构体是一些值得集合,这些值成为成员变量.结构的每个成员可以是不同类型的变量例如描述一个学生:struct Stu { char name[20];//名字 int age;//年龄 char sex[5];//性别 char id[20];//学号 };//分号不能丢2. 特殊的声明在声明结构的时候,可以不完全的声...原创 2019-04-21 10:42:51 · 498 阅读 · 0 评论 -
2.实现一个通讯录; 通讯录可以用来存储1000个人的信息,每个人的信息包括: 姓名、性别、年龄、电话、住址 提供方法: 1. 添加联系人信息 2. 删除指定联系人信息 3. 查找指定联系人信息
2.实现一个通讯录;通讯录可以用来存储1000个人的信息,每个人的信息包括:姓名、性别、年龄、电话、住址提供方法:添加联系人信息删除指定联系人信息查找指定联系人信息修改指定联系人信息显示所有联系人信息清空所有联系人以名字排序所有联系人保存联系人到文件加载联系人#define _CRT_SECURE_NO_WARNINGS#define Max_personinfo ...原创 2019-04-21 10:04:19 · 971 阅读 · 0 评论 -
实现memcpy
实现memcpy//实现memcpy//从最后一个字符开始往前拷贝,可以解决内存重叠的部分问题void* Mymemcpy(void* dest, const void* src, size_t count) { assert(dest != NULL); assert(src != NULL); char* p = (char*)dest+(count-1);//指针强制转换成cha...原创 2019-04-16 17:47:55 · 1101 阅读 · 1 评论 -
实现strcmp
实现strcmp//模拟实现strcmpint Mystrcmp(const char* arr1, const char* arr2) { while ((*arr1!='\0')&&(*arr2!='\0')) { if (*arr1 > *arr2) { return 1; } else if (*arr1 < *arr2) { re...原创 2019-04-16 17:14:50 · 185 阅读 · 0 评论 -
实现strchr
//模拟实现strchrconst char* Mystrchr(const char*dst, const char str) { assert(dst != NULL); while (*dst!='\0') {//循环条件是指针不指向字符串结尾 if (*dst == str) {//如果相等,返回开始查找的位置 return dst; } dst++;//循环条件加...原创 2019-04-16 16:59:48 · 405 阅读 · 0 评论 -
实现strstr
//模拟实现strstrconst char* Mystrstr(const char* des,const char* str) {//const修饰指针指向内容不能被改变 assert(des != NULL); assert(str != NULL);//断言,如果目标文件和源文件为NULL直接程序崩溃 const char* red = des; const char* blk ...原创 2019-04-16 16:43:24 · 170 阅读 · 0 评论 -
实现strcat
//模拟实现strcatvoid Mystrcat(char* des, const char* src) { assert(src != NULL); while (*des!='\0') { des++;//找到目标字符串的'\0',从这里开始拼接 } while (*des++ = *src++) {//把源字符串赋值给目标文件,然后指针向后移 ;//开始拼接 } *d...原创 2019-04-16 16:02:36 · 742 阅读 · 0 评论 -
C语言打印出杨辉三角
C语言打印出杨辉三角3.在屏幕上打印杨辉三角。11 11 2 11 3 3 1int main() { int array[100][100] = { 1 };//应该把初始值全部赋值为1,赋值为0没法计算 int i = 0;//i表示行数 int j = 0;//j表示第几个元素 int n = 0; while (1) { printf("请输入要打印的行数");...原创 2019-04-03 16:49:08 · 519 阅读 · 0 评论 -
C语言实现字符串的翻转
C语言实现字符串的翻转有一个字符数组的内容为:“student a am i”,请你将数组的内容改为"i am a student".要求:不能使用库函数。只能开辟有限个空间(空间个数和字符串的长度无关)。tneduts a ma ii am a studentvoid Flip(char*array,int len) { int left = 0; int right ...原创 2019-04-03 16:14:33 · 7070 阅读 · 0 评论 -
C语言不使用(a+b)/2求两个数的平均数
C语言不使用(a+b)/2求两个数的平均数int Average(int a, int b) { if (a > b) { return (b)+((a - b) / 2); } else { return (a + (b - a) / 2); }}int main() { int a = 10; int b = 20; int ret=Average(a,...原创 2019-04-03 12:02:29 · 523 阅读 · 0 评论 -
C语言实现一个函数判断是不是素数
C语言实现一个函数判断是不是素数素数只能被1或者它本身整除void Isprime(int num) { int i = 0; for (i = 2; i < num; ++i) { if (num%i == 0) { printf("%d不是素数", num); break; } } if (i == num) { printf("%d是素数", num...原创 2019-03-27 13:57:41 · 2903 阅读 · 0 评论 -
创建一个数组, 实现函数init()初始化数组、 实现empty()清空数组、 实现reverse()函数完成数组元素的逆置
1.创建一个数组,实现函数init()初始化数组、实现empty()清空数组、实现reverse()函数完成数组元素的逆置。要求:自己设计函数的参数,返回值。void init(int arr[], int len) {//初始化一个数组 for (int i = 0; i < len; ++i) { arr[i] = 4 * i + 1; }}void empty(...原创 2019-03-27 13:49:40 · 178 阅读 · 0 评论 -
C语言中的const只是一个冒牌货(const的作用,论述const在C语言中为何冒牌)
const的作用,论述const在C语言中为何冒牌一.const的作用1.const修饰的变量为只读,即变量不可以被修改,相当于一个常量,例如:#include <stdio.h>int main(){ const int b = 10;//const修饰的变量不可以被修改 b = 100;//err return 0;}2.const修饰指针时,两种不同的用法分...原创 2019-03-13 13:27:45 · 326 阅读 · 0 评论 -
VS2013中的快捷键你值得掌握
VS2013中的快捷键你值得掌握快捷键对于我们程序员来说已经必不可少,下面就是vs2013的常用快捷键了脱离鼠标指日可待VS2013常用快捷键:1.回到上一个光标位置/前进到下一个光标位置1)回到上一个光标位置:使用组合键“Ctrl + -”;2)前进到下一个光标位置:“Ctrl + Shift + - ”。2.复制/剪切/删除整行代码1)如果你想复制一整行代码,只需将光标移至该行...转载 2019-03-18 12:40:24 · 112 阅读 · 0 评论 -
C语言如何求两个数的最大公约数
C语言如何求两个数的最大公约数思维:辗转相除法分析过程:给定两个整数,运用辗转相除法,辗转相除法是求两个自然数的最大公约数的一种方法,也叫欧几里德算法。例如,求(319,377):∵ 319÷377=0(余319)∴ (319,377)=(377,319);∵ 377÷319=1(余58)∴ (377,319)=(319,58);∵ 319÷58=5(余29...原创 2019-03-18 10:53:49 · 1458 阅读 · 0 评论 -
C语言将数组进行排序
C语言将数组进行排序思维:冒泡法排序#include <stdio.h>int main() { int a[3] = { 1, 5, 7 }; int i = 0; int j = 0; for (i = 0; i < 2; i++) { for (j = 0; j < 2 - i; j++) { if (a[j] < a[j+1]) { ...原创 2019-03-17 20:08:15 · 5676 阅读 · 0 评论 -
C语言如何求出一堆整数的最大值
C语言如何求出一堆整数的最大值方法一思维:先定义一个十个乱序整数的数组,对数组进行冒泡排序,进行增序排序以后,数组的最后一个元素就是整个数组的最大值#include &lt;stdio.h&gt;int main() { int arr[10] = { 1, 5, 4, 7, 11, 8, 6, 6, 7, 10 }; int i = 0; int n = sizeof(arr) / ...原创 2019-03-17 19:53:22 · 8357 阅读 · 0 评论 -
C语言交换两个数的内容
C语言交换两个数的内容1.创建临时变量交换两个数的内容创建一个临时变量,把a的值先赋予c,再把b的值赋予a,最后把c的值给b,这样,a,b的内容就进行了交换。#include <stdio.h>int main() { int a = 10; int b = 20; int c = 0; c = a; a = b; b = c; printf("a=%d b=%...原创 2019-03-17 19:32:49 · 161 阅读 · 0 评论 -
C语言查找一个整数出现的次数
C语言查找一个整数出现的次数思路分析:首先循环输出1-100的所有整数,用整数%10,等于9,即求出了所有各位是9的个数,用整数除10,得到了所有十位是9的个数,有一个数字比较特殊,99我们应该算两次,所以,应该用两个判断语句进行判断。#include <stdio.h>#include <stdlib.h>#include <string.h>#i...原创 2019-03-20 09:59:23 · 4182 阅读 · 0 评论 -
C语言计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值
C语言计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值思路分析首先应该以一个循环来进行累加,为累加的值创建一个变量sum,用sum保存每次累加的结果,每次循环分母都进行+1操作,其次符号问题,应该通过(-1)的多少次方来实现,代码如下#include <stdio.h>#include <stdlib.h>#include &l...原创 2019-03-20 09:31:02 · 8909 阅读 · 1 评论 -
C语言交换两个数组的内容
C语言交换两个数组的内容**思路分析:**创建一个临时的变量,用来保存循环中每一次一数组的值,然后把数组二的值赋值给数组一,再把临时变量的值赋值给数组一,这样就完成了两个数组的内容交换#include <stdio.h>#include <stdlib.h>#include <string.h>int main() { int arr1[] = { ...原创 2019-03-20 08:57:41 · 2793 阅读 · 0 评论 -
C语言中结构体的深拷贝和浅拷贝
C语言中结构体的深拷贝和浅拷贝一、结构体的浅拷贝1.结构体的浅拷贝是把一个结构体的内容拷贝到另外一个结构体,仔细看代码就可以#include <stdlib.h>#include <string.h>#include <windows.h>typedef struct teacher{ char *name; int age;}teacher...原创 2019-03-15 13:54:48 · 4384 阅读 · 1 评论 -
C语言写猜数字小游戏
C语言写猜数字小游戏1.猜字谜小游戏,随机生成一个随机数,用户去猜,如果用户猜的大了就提示用户猜的太大了,如果用户猜的小了,就提示用户猜的太小了,如果用户猜中了就恭喜您猜对了.include <stdio.h>include <time.h>include <stdlib.h>void nemu() {//创建一个游戏菜单 printf("*****...原创 2019-03-26 10:10:41 · 1513 阅读 · 0 评论 -
C语言中的二分查找简述
C语言中的二分查找简述1.二分查找只能对于有序数组,在有序数组中如果要找的对象大于这个有序数组的中间元素,就应该把查找的范围移动到后半段,如果要找的对象小于找个有序数组的中间元素,就应该把范围移动到左边,依次移动范围即可找到要查找的元素例如:2.写代码可以在整型有序数组中查找想要的数字,找到了返回下标,找不到返回 - 1.(折半查找)include <stdio.h>inclu...原创 2019-03-26 10:37:07 · 288 阅读 · 0 评论