钓鱼网站的主要危害/大数据智能营销系统
1. 关于scanf
1.1 读入数字
scanf 的返回值表示成功输入的变量个数,当输入结束时,scanf将无法再次读取数据,返回0
# include <stdio.h>
# include <math.h>
# include <time.h># define M 1000000;
// compute the max, min, average value of a given list
int main(){int x, min = M, max = -M;int n = 0;int sum = 0;printf("%d", min); // scanf 读取结束后,则完成最后一次while循环。// windows的退出方法:回车-ctrl+z-回车 while(scanf("%d", &x) == 1){sum += x;n += 1;if (min > x){min = x;}if (max < x){max = x;}}printf("the max number in the list : %d\n", max);printf("the min number in the list : %d\n", min);printf("the average number in the list : %f\n", sum*1.0/n);return 0;
}
1.2 读入字符串
scanf(“%s”, s)
- 不需要&
- 读入的结果:一个不含空格、TAB、回车符的字符串,存入一个字符数组s
1.3 输出数字的小技巧:printf函数中,使用变量指定小数位数
printf("%.*f", str_len, number);// str_len表示小数位数,number为浮点数变量
printf函数中,输入确定位数的浮点数
printf("%5d", n); // (不超过五位时,)按照五位来打印,不足五位则补空格
printf("%05d", n); // (不超过五位时,)按照五位来打印,不足五位则补零
printf("%11.3f", f);// 打印数字占11位,保留小数点后3位,不足则补空格
printf("%011.3f", f);// 打印数字占11位,保留小数点后3位,不足则补零
2. 琐碎规范
2.1 一个在分母位置上平方溢出的解决方法
待解决问题:输入多组n, m,求1/n2+1/(n+1)2+ … +1/m2的结果。当输入n,m为0时,程序终止
输入范例1: 2 4
输入范例2: 65536 655360
范例2中,在分母部分,若采用1/(n*n),存放分母的int将会溢出;转而采取1/n/n的方法则可以使用浮点数避开溢出的可能
# include <stdio.h>int main(){int n, m, kase = 0;double sum = 0.0;while(scanf("%d %d", &n, &m) ){// time to endif (n==0 && m==0) break;// exchange the value if n is larger if (n>m){int t = m;m = n;n = t;} while(n <= m){// sum += 1.0/(n*n);sum += 1.0/n/n; // 防止溢出n += 1;}kase += 1;printf("Case %d: %.5f\n", kase, sum);}
}
2.2 floor() 关于浮点数的精度问题和四舍五入问题
在写函数的过程中,由于浮点数的计算精度问题,类似将1.0表示为1.00001或0.9999998,单纯的数值运算上,这种误差的问题不大。但涉及到取整数时,如使用 floor() 函数,就可能会将floor(1)的结果判为0。
常见的一个解决方法是写为 floor(a+0.5) 的格式。
初看是将分段函数的跃迁点从整数点移动到刻度为0.5的位置,有了类似四舍五入的功能,如[0.5, 1.5) 范围的浮点数将被floor() 判为1。
实际上,这是一个修正方法,并没有解决上述提出的浮点数在末位上的微小误差,而是将该误差由影响较大的1.0前后转移到了无甚影响的1.5附近,毕竟浮点数误差再大也不能由0.5大,对吧?
2.3 慎用全局变量
在函数内部定义的变量称为局部变量,反之为全局变量
全局变量定义、使用方便,但其并不会虽函数的结束而释放或重置。
这意味着,若有两处依次调用同一全局变量并修改其值,即便是相同的语句,其结果也可能不同
# include <stdio.h>int t = 0;
int g(){ return ++t; }int main(){int a, b;a = g();b = g();printf("%d %d", a, b);return 0;
}
输出结果为
1 2
3 使用文件完成输入输出
3.1 使用文件输入输出——重定向(freopen)
# define LOCAL
# include <stdio.h>
# include <math.h>
# include <time.h># define M 1000000
// compute the max, min, average value of a given list
int main(){# ifdef LOCAL // 若定义了LOCAL变量freopen("data.in", "r", stdin);freopen("data.out", "w", stdout);# endif //编译结束int x, min = M, max = -M;int n = 0;int sum = 0; // scanf 读取结束后,则完成最后一次while循环。// windows的退出方法:回车-ctrl+z-回车 while(scanf("%d", &x) == 1){sum += x;n += 1;if (min > x){min = x;}if (max < x){max = x;}}printf("the max number in the list : %d\n", max);printf("the min number in the list : %d\n", min);printf("the average number in the list : %f\n", sum*1.0/n);return 0;
}
3.2 使用文件输入输出——fopen
# include <stdio.h># define M 1000000
// compute the max, min, average value of a given list
int main(){FILE *fin, *fout;// 声明变量 fin = fopen("data.in", "rb");fout= fopen("data.out", "wb");int x, min = M, max = -M;int n = 0;int sum = 0; // fcanf三个参数:从哪读, 什么类型,赋给哪个参数 while(fscanf(fin, "%d", &x) == 1){sum += x;n += 1;if (min > x){min = x;}if (max < x){max = x;}}// 同样说明输出的位置 fprintf(fout, "the max number in the list : %d\n", max);fprintf(fout, "the min number in the list : %d\n", min);fprintf(fout, "the average number in the list : %f\n", sum*1.0/n);// 关闭文件 fclose(fin);fclose(fout);return 0;
}
在fopen条件下,灵活性较大,可以反复打开并读写文件
当我们想要再次修改为标准输入输出,如下修改fin,fout,fclose即可
# include <stdio.h>
# define M 1000000
// compute the max, min, average value of a given list
int main(){FILE *fin, *fout;// 声明变量,直接定位到标准输入输出
// fin = fopen("data.in", "rb");
// fout= fopen("data.out", "wb");fin = stdin;fout = stdout; int x, min = M, max = -M;int n = 0;int sum = 0; // fcanf三个参数:从哪读, 什么类型,赋给哪个参数 while(fscanf(fin, "%d", &x) == 1){sum += x;n += 1;if (min > x){min = x;}if (max < x){max = x;}}// 同样说明输出的位置 fprintf(fout, "the max number in the list : %d\n", max);fprintf(fout, "the min number in the list : %d\n", min);fprintf(fout, "the average number in the list : %f\n", sum*1.0/n);// 无需关闭文件
// fclose(fin);
// fclose(fout);return 0;
}
4. 数组和字符串
4.1 关于较大数组的定义位置
一般只有当定义在main函数外面时,数组才能开得很大
4.2 复制数组中部分元素到另一个数组memcpy && 数组归零memset
# include <stdio.h>
# include <string.h>
int main(){double a[10];double b[10];// 将数组 a 归零 memset(a, 0, sizeof(a));for (int i =0; i<10; ++i){a[i] = i;}for (int i =0; i<10; ++i){b[i] = i + 10;}
// // 复制所有 a 中的元素到 b
// memcpy(b, a, sizeof(a));// 复制 3个 a中的元素到 b memcpy(b, a, sizeof(double)*3);for (int i=0; i<10; ++i){printf("%f ", b[i]);}return 0;
}
关于memset,其对数组做初始化的取值,仅限于0和-1。
这是由于,memset是在内存上逐字节进行的赋值,4字节的int经过memset赋值为1后,取到的二进制为00000001 00000001 00000001 00000001,转化为十进制并非为1,而这个值在long long 等其他类型的数据上就又有不同了。能够初始化为0和-1纯属巧合
4.3 strlen, sprintf, strchr, strcpy, strcmp, strcat
- 字符串(字符数组)s标记的长度可能有很长,其中有些实际存有数据,而另一些位置的内容是不确定的,而函数strlen()可以获取字符串s的实际长度。
- 类似于printf在屏幕上打印、fprintf在文件上打印,sprintf可以将内容输出到字符串
- strchr(s, tmp[i])可以在一个字符串s中查找单个字符tmp[i]。若未找到,则返回值为NULL;若找到该字符,则返回该字符及之后的字符串
- char *strcpy(char *dest, const char *src):将src所指向的字符串复制到dest
- int strcmp(const char *str1, const char *str2):将str1所指向的字符串与str2所指向的字符串进行比较——大于0则str1大于str2(不一定是1);小于0则小于;等于0则等于
- char *strcat(char *dest, const char *src):将src所指向的字符串追加到dest所指向的字符串的末尾,返回值为一个指向最终目标字符串dest的指针
4.4 getchar()逐个读入字符
getchar()可以从标准输入读取到一个字符时,将返回一个int类型。
这是因为,当文件结束时,将返回一个特殊标记 EOF ,因为EOF并非一个char,如果返回一个char,将无法吧特殊的EOF和普通字符区分开。
其实,getchar()等价于将 fgetc(fin) 中的fin替换为stdin
# include <stdio.h>
// replace the ' " ' with ' `` ' and ' !! ' in turn.
int main(){int c, q = 1;// getchar的返回值为int类型,故用int c记录while ((c = getchar()) != EOF ){if (c == '"'){// 因为双引号的出现,必然是前后相邻两个成对出现,这与括号的使用过程中可层层嵌套的用法不同。// 所以可以通过改变布尔值来交替输出两种符号printf("%s", q ? "``" : "!!");q = !q;}else printf("%c", c);}return 0;
}
4.5 isalpha、 isdigit、isprint
isalpha() : 判断字符是否为字母
isdigit() :判断字符是否为数字
isprint():检查所传的字符是否是可打印的,可打印的比如’k’、空格等,返回true;不可打印的比如\t,返回false
toupper()
tolower()
上述函数都在ctype.h中声明
相关文章:

C++从头再来:知识点速通
1. 关于scanf 1.1 读入数字 scanf 的返回值表示成功输入的变量个数,当输入结束时,scanf将无法再次读取数据,返回0 # include <stdio.h> # include <math.h> # include <time.h># define M 1000000; // compute the max,…...

LearnDash Groups学习群组:您需要了解的一切
大约131k 网站使用 LearnDash。因此,毫无疑问,LearnDash是 WordPress 领域中最受欢迎的 LMS。而且,这是因为它具有强大的功能。但让它更受欢迎的是它与大多数第 3 方扩展很好地集成,并且比现有的任何其他 LMS 都更灵活。群组和群组…...

软件开发过程中遇到一个傻嘚业主能让你抓狂
背景 之前的一个网站交付了之后,业主一直未验收,今天忽然间开始了他的扯淡需求调整。 问题1 有一个问题是pdf文件上传显示问题,目前是pdf有一个封面要上传,排序字段可自动调整控制。但是就这么好用的功能,被他给pas…...

信创系统借力小程序应用生态的可能性
随着国内市场需求的不断增长,国产操作系统的应用也开始逐步发展壮大。国产操作系统在与其他操作系统的竞争中,越来越受到用户的青睐。国产操作系统作为一个全新的市场,给应用开发带来了新的机遇和挑战。本文将从国产操作系统应用的现状分析、…...

ISFP型人格的优势和劣势分析(mbti性格测试)
isfp型人格的优势分析ISFP在艺术上具有令人惊叹的天分,他们充沛且敏锐的情感能够轻易捕捉到那些细腻的情感变化。他们具有强大的表现力和感染力,能够通过自己的作品,将情感描绘出来并令观众感同身受,这使得他们在艺术和人文领域能…...

电影《断网》观后感
上周看了电影《断网》这部电影,题材是网络攻击与防范的故事,这样的题材距离我们很远,又离我们很近,我们每天都在用网络,生活中也离不开网络,所以它离我们很近,但是真正涉及到网络攻击时…...

查看python第三方库的依赖pkgs
课题组的服务器不给连外网,安装python第三方库就只能手动离线安装。但是python第三方库可能会迭代依赖,单纯的pip show [pkg]是看不出来的…… 参考链接:查看python第三方库的依赖 https://blog.csdn.net/qq_38316655/article/details/127943…...

CF756div3 vp
又被薄纱了,rk就不放了,好丢人QwQDashboard - Codeforces Round 756 (Div. 3) - CodeforcesA. Make Even小分类讨论题意:给定一个数,每次操作可以选取其前缀然后翻转其前缀,问你最少操作几次可以把该数变为偶数思路&am…...

Linux命令·less
less 工具也是对文件或其它输出进行分页显示的工具,应该说是linux正统查看文件内容的工具,功能极其强大。less 的用法比起 more 更加的有弹性。在 more 的时候,我们并没有办法向前面翻, 只能往后面看,但若使用了 less …...

修改redis改key值不改过期时间
今天在做图片验证码的时候遇到一个问题。用redis的生命周期来存放,用户输入错误次数。 三十秒内输错三次就,等待三十分钟。 那么问题来了,如果说第一次输入错误,应该是 key为用户用,value 为 次数2 ex就为30秒 &…...

Spark的DataFrame使用
内容目录创建SparkSession对象从CSV文件中读取从JSON文件中读取从Parquet文件中读取从数据列表中创建DataFrame从字典列表中创建DataFrame选择一列选择多列过滤年龄大于30的数据过滤名字为Alice的数据可以使用and、or、not等操作符进行组合查询按照年龄分组并计算平均年龄和最大…...

【Flutter】入门Dart语言:操作符的基本用法
文章目录 一、前言二、常用的操作符1.算术操作符2.关系操作符3.逻辑操作符4.赋值操作符5.三元运算符三、总结一、前言 当我们在编写Flutter应用程序时,操作符是我们不可或缺的工具。它们是用于执行各种操作的关键字和符号,可以帮助我们简化代码并提高效率。熟练掌握各种类型…...

Linux线程概念
重新认识一下进程 在之前写过的与进程相关的博文中,都把进程看作是只有一个PCB的进程。如图: 而实际上,在Linux中,进程不止一个执行流,而是可能会有几个或很多个。同一个进程中,每一个执行流都指向同一个虚…...

C#基础教程10 方法
C#方法 方法的语法访问修饰符:返回类型:方法名称:参数列表:方法体:返回值:方法的调用参数传递按值传递按引用传递输出参数方法的重载总结方法是C#中最基本的代码结构之一。方法是一组可重复使用的代码,它接受输入,执行一些操作并返回结果。在本教程中,我们将深入了解C…...

java高性能并发计数器之巅峰对决
并发计数器各个方案介绍方案概述1. jdk5提供的原子更新长整型类 AtomicLong2. synchronized3. jdk8提供的 LongAdder 【单机推荐】4. Redisson分布式累加器【分布式推荐】方案介绍jdk5提供的原子更新长整型类 AtomicLong在JDK1.5开始就新增了并发的Integer/Long的操作工具类Ato…...

HTTPS简介
HTTPS是HTTP开启TLS传输协议,客户端要拿到服务端的公钥,用公钥加密数据后再进行传输,防止数据泄露后背篡改。它要解决两个问题:怎么保证公钥可信怎么加密数据公钥可信问题客户端从服务端获取公钥的时候,存在请求被拦截…...

K-means聚类
原理说明 Kmeans是一种常见的聚类算法,用于将相似的数据点归类到不同的群组中。Kmeans的原理如下: 初始化:Kmeans算法首先需要初始化一个用户指定数量的聚类中心点,通常是随机选取K个数据点作为聚类中心点。 分配:对…...

04-SQL基础(表管理,约束,多表连接,子查询)
本文章主要内容 1、表的管理:创建表,修改表结构,删除字段,修改字段,添加字段,删除表,添加表约束; 2、数据管理:新增记录,修改记录,删除记录&…...

统计学 一元线性回归
统计学 一元线性回归 回归(Regression):假定因变量与自变量之间有某种关系,并把这种关系用适当的数学模型表达出来,利用该模型根据给定的自变量来预测因变量 线性回归:因变量和自变量之间是线性关系 非线…...

【软件开发】基于PyQt5开发的标注软件
这里是基于PyQt5写的面向目标检测的各类标注PC端软件系统。目前现有的labelme软件和labelImg开源软件无法满足特殊数据集的标注要求,而且没有标注顺序的报错提示。当然我设计的软件就会不具有适用性了(毕竟从下面开发的软件可以明显看出来我做的基本上是…...

CSS3新特性
CSS3新特性前言css3选择器边框特性背景参考前言 css3作为css的升级版本,css3提供了更加丰富实用的规范。新特性有: css3选择器边框特性多背景图颜色与透明度多列布局与弹性盒模型布局盒子的变形过渡与动画web字体媒体查询阴影 css3选择器 css3选择器…...

35 openEuler搭建repo(yum)服务器-创建、更新本地repo源
文章目录35 openEuler搭建repo(yum)服务器-创建、更新本地repo源35.1 获取ISO发布包35.2 挂载ISO创建repo源35.3 创建本地repo源35.4 更新repo源35 openEuler搭建repo(yum)服务器-创建、更新本地repo源 使用mount挂载,…...

【三.项目引入axios、申明全局变量、设置跨域】
根据前文《二.项目使用vue-router,引入ant-design-vue的UI框架,引入less》搭建好脚手架后使用 需求: 1.项目引入axios 2.申明全局变量 3.设置跨域 简介:axios本质上还是对原生XMLHttpRequest的封装,可用于浏览器和nodejs的HTTP客…...

启动u盘还原成普通u盘(Windows Diskpart)
使用windows系统的diskpart 命令解决系统盘恢复成普通U盘的问题:1. 按Windows R键打开运行窗口。在搜索框中输入“ Diskpart ”,然后按 Enter 键。2. 现在输入“ list disk ”并回车。3. 然后输入“ select disk X ”(将 X 替换为可启动U盘的…...

深入理解机器学习——偏差(Bias)与方差(Variance)
分类目录:《深入理解机器学习》总目录 偏差(Bias)与方差(Variance)是解释学习算法泛化性能的一种重要工具。偏差方差分解试图对学习算法的期望泛化错误率进行拆解,我们知道,算法在不同训练集上学…...

分布式新闻项目实战 - 13.项目部署_持续集成(Jenkins) ^_^ 完结啦 ~
欲买桂花同载酒,终不似,少年游。 系列文章目录 项目搭建App登录及网关App文章自媒体平台(博主后台)自媒体文章审核延迟任务kafka及文章上下架App端文章搜索后台系统管理Long类型精度丢失问题定时计算热点文章(xxl-Job…...

Linux c/c++技术方向分析
一、C与C介绍 1.1 说明 c语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发,如嵌入式。C语言能以简易的方式编译、处理低级存储器。是一种高效率程序设计语言。 c(c plus plus)是一种计算机高级程序设计语言&a…...

JavaScript 高级3 :函数进阶
JavaScript 高级3 :函数进阶 Date: January 19, 2023 Text: 函数的定义和调用、this、严格模式、高阶函数、闭包、递归 目标: 能够说出函数的多种定义和调用方式 能够说出和改变函数内部 this 的指向 能够说出严格模式的特点 能够把函数作为参数和返…...

【项目】Java树形结构集合分页,java对list集合进行分页
Java树形结构集合分页需求难点实现第一步:查出所有树形集合数据 (需进行缓存处理)selectTree 方法步骤:TreeUtil类:第二步:分页 GoodsCategoryController分页getGoodsCategoryTree方法步骤:第三…...

java.lang.IllegalArgumentException: itemView may not be null
报错截图:场景介绍:在使用recycleView 自动递增数据,且自动滚动到最新行; 当数据达到273条 时出现ANR;项目中 全部的列表适配器使用的三方库:BaseRecyclerViewAdapterHelper (很早之前的项目&am…...