- 博客(91)
- 资源 (18)
- 收藏
- 关注
原创 字符数组和字符指针
程序源码#include <stdio.h>#include <string.h>int main(){#if 1 char *str = "hello";//字符指针指向一个字符串常量 printf("%d %d\n",sizeof(str),strlen(str));//8 5// strcpy(str,"world");//F,字符串常量"hello"不能被改变 str = "world"; //T,改变指针变量的指向
2021-09-26 18:21:06
142
原创 常见笔试题3
程序源码#if 1//说明了使用free释放掉一个指针内容后,//指针变量的值并不会改变,即不会改为NULL#include <stdio.h>#include <stdlib.h>int main(){ //申请空间 int *p = (int *)malloc(10*sizeof(int)); printf("申请空间p=%p\n",p);//申请空间p=0x1866010 //使用空间 /*.....*/ //释放空
2021-09-26 16:42:55
206
原创 常见笔试题2
程序源码#if 1/*题目名称:喝汽水问题题目内容:喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以喝多少瓶汽水(编程实现)*//* 钱 汽水 * 0 0+0=0 * 1 1+0=1 * 2 2+1=3 * 3 3+1+1=5 * 4 4+2+1=7 * 5 5+2+1+1=9 * m 2*m-1; * */#include <stdio.h>int main(){ int money = 0
2021-09-26 16:11:31
151
原创 常见笔试题1
程序源码#include <stdio.h>#if 1int main(){ int a[5] = {1,2,3,4,5}; int *ptr = (int *)(&a+1); //&a是整个数组的地址,(&a+1) 跳过整个数组的地址,指向5后面的那个地址 printf("%d,%d\n",*(a+1),*(ptr-1)); //2,5 return 0;}#endif#if 0#include <st
2021-09-26 15:48:04
146
原创 关于数组名
前言数组名的意义:sizeof(数组名),这里的数组名表示整个数组,计算的是整个数组的大小。&数组名,这里的数组名表示整个数组,取出的是整个数组的地址。除此之外所有的数组名都表示首元素的地址。程序源码/*经典面试题*/#if 0#include <stdio.h>int main(){ //一维数组 int a[]={1,2,3,4}; printf("%d\n",sizeof(a)); //4*4 = 16 printf("%
2021-09-26 11:13:38
629
原创 函数指针的用法
前言什么是函数指针:函数指针的定义形象点来说,就是用一个指针变量代替原函数中的函数名位置。在定义函数指针时请注意:函数指针和它指向的函数的参数个数和类型都应该是—致的;函数指针的类型和函数的返回值类型也必须是一致的。函数指针的赋值:函数名和数组名一样代表了函数代码的首地址,因此在赋值时,直接将函数指针指向函数名就行了例如:函数指针:int (*p)(int);指针指向的是一个函数,这个函数的返回值是int,形参是int。程序源码/* 函数指针 int (*p) (int ,..);
2021-09-26 10:24:25
265
原创 函数指针数组
前言函数指针数组:int (*arr[N])(int);本质是数组,元素是指针,指针指向函数程序源码/*函数指针数组: 本质是数组,数组的元素是指针,指针指向函数 */#include <stdio.h>/*函数声明*/int add(int a,int b);int sub(int a,int b);int main(){ int i = 0; int a = 3,b = 5; int ret; //定义函数指针数组,该数组有两个元素,元素
2021-09-26 10:08:30
162
原创 main()函数的完整形式
前言初学C语言都觉得main作为整个程序的入口函数是不需要传递参数的,但事实上,我们完全可以给main()传入参数进而控制整个程序的执行。首先,主函数不能被其他函数调用,所以形参argc与argv的实际值就不能从其他函数传入,而是从操作系统命令行上获得的。因此这两个参数也被称为命令行参数。argc为命令行参数的个数,argv为字符串命令行参数的首地址。程序源码/*int main()函数的完整形式*/#include <stdio.h>//argc:参数个数,*argv:参数
2021-09-26 09:45:46
1167
原创 递归求阶乘
前言递归就是函数调用自身递归必须有结束条件,否则会栈溢出。原因:在一个函数中调用另一个函数,会将当前状态入栈,等执行完下一个后出栈,恢复状态继续往下执行。程序源码 /*递归求阶乘:n! = n*(n-1)! 压栈保存*/#include <stdio.h>/*函数声明*/int fact(int n);int main(){ int n; int res; printf("Input a number:"); scanf("%d",&a
2021-09-26 09:20:10
182
原创 拆分1个整数
要求用户输入一个整数,将这整数各个位拆开。代码实现/*拆分数字的各个位*/#include <stdio.h>/*函数声明*/void dig_split(int result[],int num); //数字拆分void my_printf(int result[],int count); //打印结果值/*全局变量*/static int count = 0; //输入数字的位数,方便打印int main(){ int num; int re
2021-09-26 08:19:27
236
原创 2维数组传参
前言2维数组形参设置:第一种形参为二维数组void my_printf(int arr[2][3],int row,int col);void my_printf(int arr[][3],int row,int col); 第二种形参为数组指针void my_printf(int (*arr)[3],int row,int col); 函数调用均为:my_printf(arr,row,col); 代码实现/*2维数组传参*/#include <stdio.h>
2021-09-25 11:14:56
377
原创 1维数组翻转
前言将一维数组作为形参除了传递地址外,还需传递数组的长度,因为仅由函数名无法确定数组有多大。代码实现/*函数声明*/void arr_invert(int arr[],int sz); //数组翻转函数void my_printf(int arr[],int sz); //数组打印函数int main(){ int arr[] = {1,3,5,7,9}; int sz = sizeof(arr)/sizeof(arr[0]); //数组元素个数 my_pri
2021-09-25 09:59:33
490
原创 字符处理函数-查找表
前言记住一些常用的字符处理函数,可以帮助你快速解决问题。 字符处理函数程序包含头文件#include <ctype.h> 函数原型 功能描述及其说明int isdigit(int c); 如果c是数字,则函数返回值为真,否则,返回值为假(0)int isalpha(int c); 如果c是字母,.....int i
2021-09-25 09:35:13
154
原创 数值溢出问题
前言对于有符号数来说,符号位溢出会导致数的正负发生改变。对于无符号数来说,最高位的溢出会导致最高位丢失。代码实现/*关于数值溢出*/#include <stdio.h>int main(){ char ch1; unsigned char ch2; ch1 = 0x7f + 2; //-127 ch2 = 0xff + 1; //0 printf("ch1 = %d,ch2 = %d\n",ch1,ch2); r
2021-09-25 09:12:01
443
原创 计算2维数组各行各列的值
前言求2维数组各行各列的值,就定义一个刚好多1行多1列的2维数组,这样可以方便存放各行各列的值。代码实现/*计算2维数组各行各列的值*/#include <stdio.h>/*宏定义*/#define M 5#define N 4/*函数声明*/void doub_sum(int arr[M][N]); //计算函数void my_printf(int arr[M][N]); //打印数组int main(){ int arr[M][N]
2021-09-25 08:22:24
324
原创 找出2维数组的最大值及其下标
前言这题比较简单,感觉唯一难点在于如何从函数中返回最大值的下标。要求找出2维数组的最大值及其下标代码实现/*找出2维数组的最大值,及其下标*/#include <stdio.h>/*宏定义*/#define M 2#define N 3/*函数声明*/int doub_max(int arr[M][N],int* x,int* y);void my_printf(int arr[M][N]);int main(){ int max;
2021-09-24 22:54:57
3762
3
原创 2维数组的行列交换
要求实现2维数组的行列交换,假设有两个2维数组a,b:即将a的行给b的列,a的列给b的行输出交换后的结果。代码实现#include <stdio.h>/*宏定义*/#define M 2#define N 3/*函数声明*/void change(int a[M][N],int b[N][M]); //行列交换a-->bvoid my_printf(int b[N][M]); //打印2维数组bint main(){ in
2021-09-24 20:33:29
339
原创 删除法求素数
简介删除法求素数(质数):素数:只能被1和本身整除的数删除:将1000以内是2的倍数的数去掉,是3的倍数的数去掉。。。。要求求1000以内的素数代码实现/*删除法求素数*/#include <stdio.h>/*函数声明*/void prime_del(int arr[]);void my_printf(int arr[]);/*全局变量*/static int n = 1001; //数组元素个数int main(){ int arr[
2021-09-24 19:01:26
589
原创 打印斐波那契数列的前n项
简介斐波那契数列:指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、…… 。这个数列从第3项开始,每一项都等于前两项之和。公式: fib[i] = fib[i-1]+fib[i-2]; i>=2功能实现用户从键盘键入数值n,打印前n项的斐波那契数列。代码实现/*打印斐波那契数列的前n项元素*/#include <stdio.h>/*函数声明部分*/void fibonacii(int fib[],int n);void my_printf(int fi
2021-09-24 17:34:59
2475
原创 实现简易的进制转换
前言10进制转换为其他进制:转换方法"除k取余法","除k"中这个k就是我们需要转换成的进制,比如要转换成2进制,这个K就是2,要转换成16进制,这个K就是16。"取余"中的余就是在这个除法过程中的余数(直到商为0)。以185转成2进制为例,转换过程见上图,所以转换结果是:185 = 10111001(2进制),注意余数是从下往上取,不要搞反了。代码实现/*进制转换 */#include <stdio.h>int main(void){ int num,base;
2021-09-24 12:15:21
1001
原创 关于数组的查、插、删操作
前言在博客问答那见到这样的题,觉得挺不错的,所以就分享给大家,希望对大家有所帮助吧。题目1. 用C语言编写三个函数,分别对数组完成以下功能:(1)编写一个函数get_elem(int arr[ ],int i),返回数组arr中的第i个元素。.(2)编写一个函数insert_elem(int arr[ ],int i,int x),在数组arr中的第i个位置插入数值x。(3)编写一个函数de_elem(int arr[ ],int i),删除数组arr中的第i个元素。2. 编写主函数,进行数组
2021-09-24 11:33:04
421
原创 不稳定的排序-选择排序
前言选择排序是直观的排序,通过确定一个最大或最小值,再从待排序的的数中找出最大或最小的交换到对应位置。再选择次之。双重循环时间复杂度为 O(n^2)。简单选择排序是不稳定排序。算法性能时间复杂度: O(n^2),选择排序比冒泡排序快。稳定性: 不稳定代码实现/*选择排序 */#include <stdio.h>void select_sort(int arr[],int n); //选择排序函数声明int main(){ int i = 0; int a
2021-09-23 20:18:44
5070
2
原创 最简单的排序-冒泡排序
前言:名字的由来:因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。代码:/*冒泡排序 * */#include <stdio.h>void bubble_sort(int arr[],int n); //冒泡函数声明int main(){ int i = 0; int arr[10] = {1,3,5,7,9,2,4,6,8,0}; //需要排序的数组 int
2021-09-23 18:58:29
219
原创 找出单身狗
题目:给定一个非空整型数组,除了某个元素只出现一次以外,其余每个元素均出现两次。 找出那个只出现了一次的元素。样例:int a[]={1,2,3,4,5,1,2,3,4},该数组中只有5出现一次,其他数字都是成对,要找出5。程序源码:暴力求解法:统计每个元素出现的次数#include <stdio.h>//方法1:暴力求解,统计每个元素出现的次数int main(void){ int arr[] = {1,2,3,4,5,1,2,3,4}; int i
2021-09-22 22:39:16
309
3
原创 交换两变量的值,不使用中间变量
前言:一般情况下,我们交换两个变量的值都会使用一个中间变量,这样的程序也更容易理解。程序源码:使用中间变量时,交换两个变量的值:#include <stdio.h>int main(){ int a = 3; int b = 5; int tmp; //中间变量 printf("交换前:a = %d,b = %d\n",a,b); tmp = a; a = b; b = tmp; printf("交换后:a = %d,b = %
2021-09-22 21:04:47
738
原创 统计输入的单词个数
要求:从键盘中输入一段字符串,计算有多个单词。程序源码:#include <stdio.h>#include <ctype.h>int main(){ int i = 0,count = 0; char str[128]; printf("请输入字符串:"); gets(str); if(isalpha(str[0])) //由于for循环没有判断第一个单词的条件 { count = 1; }
2021-09-22 20:17:34
600
原创 STM32接入ONENET-实现数据上传和命令下发
前言:使用ONENET联网开发云平台进行远程传输数据和远程控制开发板是比较简单的事,但由于ONENET官方给的代码只对他家的开发板比较友好,对于初学者来说修改这些代码相对麻烦,所以我就分享一份STM32C8T6接入ONENET云平台的代码,这款单片机是我们做课程设计中比较常用,以后大家在我这份代码的基础上进行修改即可,希望可以帮到大家。onenet官方代码下载链接假设你已经有了ONENET账号,以及创建了一个MQTT协议的产品,并在产品中添加一个设备。如果你没有,这个我以后再讲这方面的。需要用到的元
2021-09-22 19:26:13
23796
111
原创 有危险的gets()函数
gets函数介绍:函数原型:char *gets(char *s);需要的头文件:#include <stdio.h>函数功能:从标准输入读入字符,并保存到s指定的内存空间, 直到出现换行符或读到文件结尾为止。参数:s:字符串首地址返回值: 成功:读入的字符串 失败:NULLgets(str)与scanf("%s",str)的区别:gets(str)允许输入的字符串有空格,scanf("%s",str)不允许含有空格scanf碰到缓冲区里面的空字符(空格,tab,回
2021-09-22 12:03:53
654
原创 统计各类字符的个数
程序要求:输入一行字符,统计其中的英文字符、数字字符、空格和其他字符的个数常规方法:#include <stdio.h>#define N 80int main(){ char str[N]; int i,letter = 0,digit = 0,space = 0,others = 0; printf("Input a string:"); gets(str); //从输入缓冲区中读取一个字符串存储到str所指向的内存空间。 f
2021-09-22 10:28:37
3198
原创 物联网课设1-基于ZigBee智能照明系统
前言:大四上学期的一门课程设计,主要用到CC2530单片机、WiFi模块:ESP826607、光照强度传感器:BH1750、步进电机等…现分享给大家,希望对大家有所帮助。实现功能:数据采集:采集光照强度的数据到ONENET云平台采集终端设备的工作状态本地控制:控制照明设备的开关控制照明设备是否进入自动模式自动控制:根据当前的光照强度和设定的光照阈值自动控制照明设备的亮灭自动调节照明设备的亮度远程控制:远程控制照明设备的亮灭远程调节照明设备的亮度远程控制窗帘的开关
2021-09-22 08:13:57
13829
15
原创 物联网实验-温湿度实时监测系统
前言:这是大四上学期做的物联网实验,总共4个实验,这是第4个,也是最难的一个,当然大部分程序是我的老师编写的,我只是跟着实验指导书做出来的,希望可以帮到大家。1. 系统工作原理温湿度感知节点(Client),实时采集温湿度数据,然后通过WiFi模块,以TCP协议将采集数据实时无线传输给服务端(Server);服务端将接收到的温湿度数据存于数据库中;用户终端(User)从服务端获取实时采集和历史数据,用以监测、分析、查询等应用。2. 系统 设计用户应用程序界面如图所示。服务器界面:使用
2021-09-21 20:58:37
12818
9
原创 数电课设-4路抢答器
前言:这是之前帮朋友做的一个做的一个4路抢答器。由于时间太久了,我已经忘记怎么做的了。现分享仿真原理图给大家,希望对大家有所帮助。设计要求:4名选手编号为:S1,S2, S3 ,S4。各有一个抢答按钮,按钮的编号与选手的编号对于,也分别是S1,S2, S3 ,S4。给主持人S6设置一个控制按钮,用来控制系统清零(灭灯)和抢答开始抢答器具有数据锁存和亮灯功能。抢答开始后,若有选手按动抢答器,按选手编号对应的LED灯亮起,同时蜂鸣器给出音响提示,封锁输入编码电路,禁止其他选手抢答。抢答选手的灯一直保
2021-09-21 18:02:14
28714
6
原创 高频课设-基于STM32的温度无线监测系统
题目二 多点温度无线监测系统的设计(1) 任务设计制作一个多点温度无线监测系统,实现多点温度的实时无线监测。(2)要求测温点数:>=2个;测温范围:-10~+45℃;精度:±0.5℃;监控距离:>=5m;电路制作时,必须注明本组成员学号与姓名。(3)核心元器件(供参考)部分接线说明步进电机:IN1:PB12、IN2:PB13、IN3:PB14、IN4:PB15、VCC:5V,GND:GND继电器:VCC: 5V GND: GND 输入端:PA4由于继
2021-09-21 17:19:16
5614
1
原创 网络编程大作业-聊天室
前言:大二时候完成的网络编程的大作业,用C\C++语言写的一款简易聊天室。目前一个服务器只能连两个客户端,两个以上的我搞不出来。也可以在三台电脑操作,只要输入服务器的IP地址就行了。使用的编译器:VS2010、VS2019演示一下:左边的是服务器,中间的是客户端1:zhang san,右边是客户端2:li si。服务器源码:#include "WinSock2.h" // winsock2.h是套接字接口。#include "process.h" //process.h 是包含
2021-09-21 16:05:44
4032
5
原创 网络编程-文件传送
前言:这是在我大二时期,上网络编程这门课时老师给的源码,虽然自己也试过写这个程序,但效果不太理想。现分享给大家,希望对你们有所帮助。使用的编译器:最初用的是VS2010,后来用VS2019。程序要求:将客户端的任意一个文件传送到服务器。思路:1. 客户端step1. 连接服务器step2. 以二进制读方式打开文件step3. 获取文件大小step4. 传送文件名给服务器step5. 传送文件大小给服务器step6. 传送文件具体内容。分n次传送。前n-1次每次传送4KB,第n次
2021-09-21 15:34:08
1711
1
原创 上位机软件-串口助手-带登陆界面
前言:这是我在大三的时候写的一个串口助手,觉得挺好用的就分享给大家。如果有什么bug的话,希望大家多多包涵,毕竟对于C#语言我只是新手。制作串口助手串口助手选用Visual C#开发语言和Visual Studio 2012开发平台进行开发,实现的主要功能如下:需要用户名和密码才能登录软件——可以保障用户的隐私可用串口扫描——精确且快速的找到可以打开的串口号保存和读取数据——可以对数据进行保存和读取,方便后期查看显示接收数据的时间——用户可以知道数据到来的时间定时发送——用户可以设定在几秒
2021-09-21 10:10:15
2021
1
原创 无线单片机课程设计--基于ZigBee的厨房温度气体监控系统
基于WSN的厨房温度气体监控系统一、 题目的要求和意义课程设计的目的:本课题是学生们使用单片机和至少两种传感器实现无线通信的项目,主要实现对厨房温度和气体进行实时监测。通过在厨房里安装基于无线传感器网络的温度、气体采集节点来厨房内各点的温度和气体,并以无线传输的方式发送到PC端或者是LCD液晶屏,用户可以通过上位机软件查询数据,能够及时了解到厨房的情况。课程设计的要求:基本要求:1、必须有无线通信2、必须有两种以上(包含两种)的传感器3、必须用单片机实现扩展要求:1、三个以上(包含三个)
2021-09-21 09:18:16
7002
12
原创 模电设计--电阻密码锁
电阻密码锁一、 题目的要求和意义课程设计目的:让学生们了解独立设计一套作品的流程,同时也提高学生们的动手能力,巩固模拟电子线路的知识,培养学生们团结合作的精神。实验要求:用一个特定阻值的电阻作为密钥;用Ucc/2作为比较电压;用发光二极管的亮灭来显示锁的开合:正确接入密钥时,发光二极管亮,则锁被打开;否则当有人试图开锁时或错误(或无)接入密钥时,发光二极管暗,发光二极管暗,则锁闭合。初始时无电阻接入,窗口电压比较器输出高电平,通过一级反相器后变为低电平,发光二极管不导通,同时另一路运放也输
2021-09-21 08:41:09
7467
5
原创 数电设计--交通灯控制系统
一、课程设计的内容题目:交通灯控制系统交通灯控制系统时典型的数字电路系统,通过该系统的设计、仿真、制板、答辩和报告等环节,同学可得到数字电路及系统的综合训练。本课程要求设计一个十字路口的交通灯控制器,控制A、B两条交叉道路上的车辆通行。具体要求如下:(1)在十字路口,主、支干道分别设置一组信号灯,每组信号灯由红、黄、绿等表示允许通行,红灯表示禁止通行,黄灯表示该车道上已过停车线的车辆继续通信,未过停车线的车辆停止通行。(2)主、支干道交替通行,主干道每次放行30s,支干道每次放行20s。(3)每
2021-09-20 21:32:25
73459
48
原创 字符串切割函数strtok
需要引用的头文件:#include<stdio.h>函数原型:char *strtok(char *str, const char *delim);功能:来将字符串分割成一个个片段。当strtok()在参数str的字符串中发现参数delim中包含的分割字符时, 则会将该字符改为\0 字符,当连续出现多个时只替换第一个为\0。参数:str:要被分解成一组小字符串的字符串。delim:包含分割符的 字符串返回值:成功:被分割出的字符串首地址失败:NULL注意事项:在第一次调
2021-09-20 20:31:15
296
基于蓝牙4.0的防丢器源码
2024-02-27
4G模块接入阿里云-实现数据上传和命令下发
2022-04-24
使用手机APP远程控制51单片机
2022-04-24
基于STM32的简易密码锁
2022-04-24
单片机连接MySQL数据库
2022-04-24
STM32接入机智云--实现数据上传和命令下发
2022-04-24
CC2530接入OneNET-实现数据上传和命令下发
2022-04-24
使用51单片机接入OneNET云平台
2022-04-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅