c语言复习:常见函数与错误

常用函数

1.pow

int pow(m,n)
{int j,s=1;for(j=1;j<=n;j++){s*=m;}return s;
}

2.快速排序(stdlib)

int main()
{int arr[10] = {9,8,7,6,5,4,3,2,1};int sz = sizeof(arr) / sizeof(arr[0]);qsort(arr,sz,sizeof(arr[0]),cmp);
}
int cmp(const void* a,const void* b)
{return *(int*) b - *(int*) a;
}

3.快速排序

void quickSort(int* arr, int low, int high) {int i = low;int j = high;int temp = arr[low];if (i >= j)return;while (i != j) {while (i < j && arr[j]>=temp)j--;while (i < j && arr[i] <= temp)i++;if (i < j)swap(arr[i], arr[j]);}swap(arr[low], arr[i]);quickSort(arr, i + 1, high);quickSort(arr, low, i - 1);
}

4.选择排序

void select_sort(int* arr, int n)
{int max,tmp;for (int i = 0; i < n - 1; i++){max = i;for (j = i + 1; j < n ; j++){if (arr[j] > arr[max]){max = j;}}if (i != max){tmp = arr[i];arr[i] = arr[max];arr[max] = tmp;}}
}

5.冒泡排序

void bubble_sort(int* arr, int n)
{int tmp;for (int i = 0; i < n - 1; i++){for (int j = 0; j < n - i - 1; j++){if (arr[j] < arr[j+1]) {tmp = arr[j];arr[j] = arr[j+1];arr[j+1] = tmp;}}}
}

6.任意数据类型冒泡排序

void bubble_sort(void* arr, int sz, int width, int(*cmp)(const void* e1, const void* e2))
{for (int i = 0; i < sz - 1; i++) {for (int j = 0; j < sz - i - 1; j++) {if (cmp((char*)arr + j * width, (char*)arr + (j + 1) * width)<0) {swap((char*)arr + j * width, (char*)arr + (j + 1) * width,width);}}}
}
int cmp(const void* e1, const void* e2) {return *(int*)e1 - *(int*)e2;
}
void swap(char* bf1, char* bf2, int width) {for (int i = 0; i < width; i++) {char e = *bf1;*bf1 = *bf2;*bf2 = e;bf1++;bf2++;}
}

7.判断素数

int Isprime(int x) {for (int i = 2; i <= sqrt(x); i++)if (x % i == 0)return 0;return 1;
}

8.<math.h>

  • log(a) / log10(a)
  • exp(a)
  • sqrt(a)
  • round(a) // (int)(a+0.5)
  • ceil / floor
  • fabs()

9.<string.h>

  • strcat
  • strcpy / strncpy (str1,str2,n)
  • strcmp ==返回为 0 ;/ strncmp
  • strlen 不包括 ’\0’
  • strlwr / strupr
  • strstr

10.文件操作

  • fopen(“FILE Path”,“w”) / w, r, a, rb, wb, ab, (+)
  • fclose
  • fwrite(ptr,size,count,stream)
  • fread(ptr,size,count,stream)

11.最大公约数

int gcd(int a, int b)
{if(b == 0)return a;return gcd(b, a%b);
}

常见错误

1.switch()

执行条件为真后不执行break会继续执行后面的case知道break;

2.printf()

打印的优先级问题。

3.const与指针

  • 常量指针 //指向地址可以改变,值不可以改变
const int *p;
int a = 4;
int b = 5;
p = &a;
*p = 5;  /*错误,不能通过指针p来改变值*/
a = 5;  /*正确,*p这时候也等于5*/
p = &b;  /*常量指针可以指向其他的地址*/
  • 指针常量 //指向地址不能改变,值可以改变
int *const p;
int a = 4;
int *const p = &a;/*要马上初始化,之后无法赋值*/
p = &b;/*错误,无法赋值*/
*p = 5;/*正确*/

4.ascll码

‘A’ = 65 / ‘a’ = 97 / ’0‘ = 48

5.if()

if() 括号内为赋值语句 :表达式右侧为0 不执行语句 1;表达式右侧不为0 执行语句 1;

6.转义字符

  • \ddd 1-3位8进制数 / \xhh 1-2位16进制数
  • ’ ,“ ,? 是转义字符

7.gets/fgets

  • gets / gets_s / scanf 丢弃换行符
  • fgets 若读入<=size-2 则保留换行符

8.scanf

  • scanf结束输入后不会舍弃回车符(残留在缓冲区
  • getchar()在缓冲区读入数据 / 输入设备->内存缓冲区->getchar()
  • 如果不同getchar取走scanf留下的‘\n’,接下来的scanf会直接读入
#include <stdio.h>
int main(void){char m[40];char n;printf("please input first str:\n");scanf("%s",m);printf("you input str is :%s\n",m); printf("input second char :\n"); scanf("%c",&n);   //程序将未输入而直接输出printf("now you input second char is :%c\n",n);return 0; 
}
  • scanf读入字符串时遇到空格不会将其之后存入str,但都残留在缓冲区

9.字符串比较

不能用 == ; strcmp

10.fclose与feof

  • fclose / 文件关闭,成功关闭返回值为0
  • feof 在文件读取已经结束的时候,判断文件为何结束(与ferror搭配)

到达文件末尾结束读取时返回非0值;

if (ferror(fp))
{puts("I/O error when reading");
}
else if (feof(fp))
{puts("End of the file reached successfully");
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/638032.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ctfshow反序列化(web254-web266)

目录 web254 web255 web256 web257 web258 web259 web260 web261 web262 web263 web264 web265 web266 web254 源码 <?php/* # -*- coding: utf-8 -*- # Author: h1xa # Date: 2020-12-02 17:44:47 # Last Modified by: h1xa # Last Modified time: 2020…

值得收藏的10个免费扫描PDF转可编辑文本的工具分享

随着技术的不断发展&#xff0c;数字化已成为我们日常生活中的一个重要方面。无论是工作还是个人使用&#xff0c;PDF 文件已成为文档管理中必不可少的元素。但是&#xff0c;某些 PDF 文件包含扫描图像&#xff0c;因此难以编辑或搜索文件中的特定内容。要克服此限制&#xff…

多进程共享的pthread_mutex_t

设置方式 要有一片多进程能一起访问的共享内存。共享内存如何获得本文不做介绍&#xff0c;请自行google。共享内存划一段大小为sizeof(pthread_mutex_t)的内存备用&#xff0c;记这片内存为mutex_reserve。把这片内存初始化为全0。用pthread_mutex_t的指针mutex_p指向mutex_r…

牛客小白月赛86 A - F

水盐平衡 思维判断一下浓度大小&#xff0c;再选择加水还是加盐。 signed main() {int T 1;T read();while (T--) {vector<int> a(5);for (int i 1; i < 4; i) a[i] read();int t1 a[1] * a[4], t2 a[2] * a[3];t1 > t2? puts("S"): puts("…

Winform使用Webview2(Edge浏览器核心)实现精美教程目录

TOC 简介 使用 Microsoft Edge WebView2 控件&#xff0c;可以使用基于Chromium的 Microsoft Edge 作为呈现引擎&#xff0c;在应用程序中托管 Web 内容。通过本地HTML作为界面实现精美软件。 WebView2优势具体参考 Web 生态系统和技能集。 利用 web 生态系统中存在的整个 w…

【力扣刷题练习】103. 二叉树的锯齿形层序遍历

题目描述&#xff1a; 给你二叉树的根节点 root &#xff0c;返回其节点值的 锯齿形层序遍历 。&#xff08;即先从左往右&#xff0c;再从右往左进行下一层遍历&#xff0c;以此类推&#xff0c;层与层之间交替进行&#xff09;。 题目解答&#xff1a; class Solution { p…

短信发送平台上线公告

亲爱的用户们&#xff1a; 我们满怀喜悦地向您宣告&#xff0c;经过精心筹备与严格测试&#xff0c;我们的全新在线短信发送平台已正式上线运营&#xff01; 这是一个专为高效便捷的短信沟通而生的平台。在这里&#xff0c;您可以轻松实现给他人发送短信的服务&#xff0c;无…

编程羔才生-前端访问后端出现read ECONNRESET

排查了原因后发现是node的版本太低的问题造成的&#xff0c;所以升级了下node版本&#xff0c;就好了&#xff01; 基本按照这个顺序排&#xff0c;但node的版本问题却是最后一个解决办法&#xff0c;所以签名时间都浪费了。所以分享! 根据网路资料&#xff0c;解决顺序&…

Python实现离散选择泊松模型(Poisson算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 泊松分布&#xff08;一种离散分布&#xff09;&#xff0c;泊松分布适合于描述单位时间内随机事件发生…

Ubuntu22.04安装GitLab

如果我们是自己本地进行开发,使用Git的简单版本管理功能即可。但如果要做协同开发,使用GitLab自己部署Git代码仓库,是一个不错的选择。 笔者曾使用过svn和Git,相比较而言,Git的使用体验更好。 那么我们接下来安装一下。 安装 首先是升级下包源信息 sudo apt update …

ESP32-HTTP_webServer库(Arduino)

ESP32-HTTP 介绍 ESP32是一款功能强大的微控制器&#xff0c;具有丰富的网络和通信功能。其中之一就是支持HTTP协议&#xff0c;这使得ESP32可以用于创建Web服务器。 HTTP是什么&#xff1f; HTTP&#xff08;Hyper Text Transfer Protocol&#xff09;&#xff0c;即超文本传…

Find My相机|苹果Find My技术与相机结合,智能防丢,全球定位

相机是一种利用光学成像原理形成影像并使用底片记录影像的设备&#xff0c;是用于摄影的光学器械。相机让我们能够记录下美丽的风景和珍贵的时刻。当我们到达一个迷人的地方,或者经历了一个特别难忘的时刻时,我们可以使用照相机来拍摄照片,记录下这些美好的回忆。照相机可以帮助…

【算法详解】力扣240.搜索二维矩阵II

一、 题目描述 力扣链接&#xff1a;力扣240.搜索二维矩阵II 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性&#xff1a; 每行的元素从左到右升序排列。 每列的元素从上到下升序排列。 二、思路分析 题目提到该矩阵是从左到右&am…

第90讲:MySQL数据库主从复制集群原理概念以及搭建流程

文章目录 1.MySQL主从复制集群的核心概念1.1.什么是主从复制集群1.2.主从复制集群中的专业术语1.3.主从复制集群工作原理1.4.主从复制中的小细节1.5.搭建主从复制集群的前提条件1.6.MySQL主从复制集群的架构信息 2.搭建MySQL多实例环境2.1.在mysql-1中搭建身为主库的MySQL实例2…

【学习iOS高质量开发】——对象、消息、运行期

文章目录 一、理解“属性”这一概念1.如何定义实例变量2.什么是不兼容现象&#xff0c;如何解决3.理解property关键字4.理解dynamic关键字5.属性特质1.原子性&#xff1a;2.读/写权限&#xff1a;3.内存管理语义 7.要点 二、在对象内部尽量直接访问实例变量1.直接访问和属性访问…

Redis 缓存与数据库双写不一致如何解决

Redis缓存与数据库双写不一致是一个常见的挑战&#xff0c;但可以通过一些方法来解决或减轻这种不一致性。以下是一些可能的解决方案&#xff1a; 事务处理&#xff1a; 在进行缓存和数据库双写时&#xff0c;确保它们被包含在同一事务中。这可以通过使用支持事务的数据库和Red…

高耐用性广西桉木工地模板 — 建筑模板专业批发厂家

对于任何建筑项目而言&#xff0c;选择合适的模板材料是确保工程质量和施工安全的基础。我们能强优品木业的广西桉木工地模板&#xff0c;以其卓越的耐用性和专业的批发供应&#xff0c;成为了建筑行业的优选。 产品特点 卓越耐用性&#xff1a;选择高品质广西桉木&#xff0c…

[EFI]ASUS Tuf Gamming B550m Plus+AMD Ryzen 5 4650G电脑 Hackintosh 黑苹果efi引导文件

硬件型号驱动情况主板 Asus TUF Gamming B550m Plus WIFI 处理器 AMD Ryzen 5 4650G 已驱动内存32GB (4 x 8GB) Asgard RGB 3200已驱动硬盘Samsung 970 Pro 512Gb已驱动显卡Sapphire RX 6600XT已驱动声卡ALCS-1200A已驱动网卡RTL8125 2.5GbE已驱动无线网卡蓝牙BCM94360CDSono…

注解实现校验接口传参是否超出取值范围

文章目录 1、定义注解2、使用注解3、其余校验实现思路2.04、其余校验实现思路3.0 写接口&#xff0c;Dto里很多字段要检验传参范围&#xff0c;自定义个注解来校验。 1、定义注解 注解定义代码&#xff1a; import javax.validation.Constraint; import javax.validation.Con…

meshgrid contour contourf

meshgrid contour contourf 参考video: https://www.bilibili.com/video/BV1qW411A775/?spm_id_from333.337.search-card.all.click&vd_sourced171c31a396363b8ea8c0e92a59cee6b 官方文档: https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.contourf.html#ma…