蓝桥杯准备训练(lesson5 ,c++)

蓝桥杯准备训练(lesson5 ,c++)

单目操作符与第 2 章 C/C++输⼊输出(上)

8. 单⽬操作符

前⾯介绍的操作符都是双⽬操作符,即有2个操作数。除此之外还有⼀些操作符只有⼀个操作数,被称为单⽬操作符。如 ++、–、+(正)、-(负) 就是单⽬操作符。

8.1 ++和–

++ 是⼀种⾃增的操作符,⼜分为前置 ++ 和后置 ++ , – 是⼀种⾃减的操作符,也分为前置 –
和后置 –
请⼀定要注意:
• 前置 ++ 或者 后置 ++ ,都是让操作数⾃增1的
• 前置 – 或者 后置 – ,都是让操作数⾃减1的

8.1.1 前置++ 和 后置++

//案例1int x =10;int a =++x;//++的操作数是x,是放在x的前⾯的,就是前置++ cout << x <<" "<< a << endl;//案例2int x =10;int a = x++;//++的操作数是x,是放在x的后⾯的,就是后置++ cout << x <<" "<< a << endl;

⼩技巧:
前置++: 先+1,后使⽤
后置++:先使⽤,后+1

8.1.2 前置-- 和 后置–

//案例1int y =10;int b =--y;//--的操作数是y,是放在y的前⾯的,就是前置-- cout << y <<" "<< b << endl;//案例2int y =10;int b = y--;//--的操作数是y,是放在y的后⾯的,就是后置-- cout << y <<" "<< b << endl;

⼩技巧:
前置 --: 先 - 1,后使⽤
后置 --:先使⽤,后 - 1

8.2 + 和 -

这⾥的 + 是正号, - 是负号,都是单⽬操作符。
运算符 + 对正负值没有影响,是⼀个完全可以省略的运算符,但是写了也不会报错。

int a =+10;//等价于 int a = 10;

运算符 - ⽤来改变⼀个值的正负号,负数的前⾯加上 - 就会得到正数,正数的前⾯加上 - 会得到负

int a =10;int b =-a;int c =-10; cout << b << c << endl;//这⾥的b和c都是-10int a =-10;int b =-a; cout << b << endl;//这⾥的b是10

第 2 章 C/C++输⼊输出(上)

1. getchar 和 putchar

getchar() 和 putchar() 是属于 C 语⾔的库函数,C++是兼容 C 语⾔的,所以 C++ 中只要正确包
含头⽂件也可以正常使⽤这两个函数。

1.1 getchar()

函数原型如下:
int getchar ( void );

getchar() 函数返回⽤⼾从键盘输⼊的⼀个字符,使⽤时不带有任何参数。
程序运⾏到这个命令就会暂停,等待⽤⼾从键盘输⼊,等同于使⽤ cin 或 scanf() ⽅法读取⼀个字
符。
它的原型定义在头⽂件 。

#include<cstdio>#include<iostream>usingnamespace std;intmain(){int ch; ch =getchar(); cout << ch << endl; cout <<(char)ch << endl;return0;}

getchar() 不会忽略起⾸的空⽩字符,总是返回当前读取的第⼀个字符,⽆论是否为空格。
如果读取失败,返回常量 EOF ,由于 EOF 通常是 -1 ,所以返回值的类型要设为 int ,⽽不是
char 。
如何让 getchar() 函数读取失败,返回 -1 呢?其实需要在输⼊字符之前,直接按 Ctrl+z 就可
以。

#include<cstdio>#include<iostream>usingnamespace std;intmain(){int ch; ch =getchar(); cout << ch << endl;return0;}
在这里插入图片描述


getchar() 通常和 putchar() 是⼀对⼉,配合使⽤的。

1.2 putchar()

int putchar( int character );

putchar() 函数将它的参数字符输出到屏幕,它的原型定义在头⽂件 。

#include<cstdio>intmain(){int ch =0; ch =getchar();putchar(ch);return0;}

操作成功时, putchar() 返回输出的字符,否则返回常量 EOF 。

⼩提⽰:
这⾥⼤家先学会这两个函数的使⽤,在后期算法课的模块,会学到快速读写,到时候就会⽤
到这两个函数。

2. scanf 和 printf

scanf() 和 printf() 是属于C语⾔的库函数,C++是兼容 C 语⾔的,所以 C++ 中只要正确包含头
⽂件也可以正常使⽤这两个函数。⽽且这两个函数在算法竞赛题⽬中使⽤的⾮常频繁,尤其是在输出
格式控制中,所以接下来我们这⾥认真学习⼀下。

2.1 printf

printf() 函数原型如下:
int printf ( const char * format, … );

2.1.1 基本⽤法

printf() 的作⽤是将参数⽂本输出到屏幕。
它名字⾥⾯的 f 代表 format (格式化),表⽰可以定制输出⽂本的格式。

#include<cstdio>intmain(){printf("Hello World");return0;}

上⾯命令会在屏幕上输出⼀⾏⽂字“Hello World”。
printf() 不会在⾏尾⾃动添加换⾏符,运⾏结束后,光标就停留在输出结束的地⽅,不会⾃动换
⾏。
为了让光标移到下⼀⾏的开头,可以在输出⽂本的结尾,添加⼀个换⾏符 \n 。

如果⽂本内部有换⾏,也是通过插⼊换⾏符来实现,如下⽅代码:

#include<cstdio>intmain(){printf("Hello\nWorld\n");printf("Hello\n");printf("World\n");return0;}

2.1.2 占位符

printf() 可以在输出⽂本中指定占位符。
所谓 “占位符”,就是这个位置可以⽤其他值代⼊。

#include<cstdio>// 输出 There are 3 applesintmain(){printf("There are %d apples\n",3);return0;}

上⾯⽰例中, There are %d apples\n 是输出⽂本,⾥⾯的 %d 就是占位符,表⽰这个位置要
⽤其他值来替换。占位符的第⼀个字符⼀律为百分号 % ,第⼆个字符表⽰占位符的类型, %d 表⽰这
⾥代⼊的值必须是⼀个整数。
printf() 的第⼆个参数就是替换占位符的值,上⾯的例⼦是整数 3 替换 %d 。执⾏后的输出结果
就是 There are 3 apples 。
常⽤的占位符除了 %d ,还有 %s 表⽰代⼊的是字符串。

#include<cstdio>intmain(){printf("%s will come tonight\n","zhangsan");return0;}

上⾯⽰例中, %s 表⽰代⼊的是⼀个字符串,所以 printf() 的第⼆个参数就必须是字符串,这个例
⼦是 zhangsan 。执⾏后的输出就是 zhangsan will come tonight 。

输出⽂本⾥⾯可以使⽤多个占位符。

#include<cstdio>intmain(){printf("%s says it is %d o'clock\n","lisi",21);return0;}

上⾯⽰例中,输出⽂本 %s says it is %d o’clock 有两个占位符,第⼀个是字符串占位
符 %s ,第⼆个是整数占位符 %d ,分别对应 printf() 的第⼆个参数( lisi )和第三个参数
( 21 )。执⾏后的输出就是 lisi says it is 21 o’clock 。
printf() 参数与占位符是⼀⼀对应关系,如果有 n 个占位符, printf() 的参数就应该有 n +
1 个。如果参数个数少于对应的占位符, printf() 可能会输出内存中的任意值。
占位符列举:
printf() 的占位符有许多种类,与数据类型相对应。
下⾯列出常⽤的占位符,⽅便查找,具体含义在后⾯章节介绍。

占位符
介绍
%d ⼗进制整数。
%lld ⼗进制 long long int 类型。
%f ⼩数(包含float类型和double类型)。
%Lf long double 类型浮点数。
%c 字符。
%s 字符串。
%a ⼗六进制浮点数,字⺟输出为⼩写。
%A ⼗六进制浮点数,字⺟输出为⼤写。
%e 使⽤科学计数法的浮点数,指数部分的e为⼩写。
%E 使⽤科学计数法的浮点数,指数部分的E为⼤写。
%i 整数,基本等同于%d。
%g 6个有效数字的浮点数。整数部分⼀旦超过6位,就会⾃动转为科学计数法,指数部分的e为⼩写。
%G 等同于%g,唯⼀的区别是指数部分的E为⼤写。
%hd ⼗进制 short int 类型。
%ho ⼋进制 short int 类型。
%hx ⼗六进制 short int 类型。
%hu unsigned short int 类型。
%ld ⼗进制 long int 类型。
%lo ⼋进制 long int 类型。
%lx ⼗六进制 long int 类型。
%lu unsigned long int 类型。
%llo ⼋进制 long long int 类型。
%llx ⼗六进制 long long int 类型。
%llu unsigned long long int 类型。
%Le 科学计数法表⽰的 long double 类型浮点数。
%n 已输出的字符串数量。该占位符本⾝不输出,只将值存储在指定变量之中。
%o ⼋进制整数。
%p 指针。
%u ⽆符号整数(unsigned int)。
%x ⼗六进制整数。
%zd size_t类型。
%% 输出⼀个百分号。

2.1.3 格式化输出

printf() 可以定制占位符的输出格式。

2.1.3.1 限定宽度

printf() 允许限定占位符的最⼩宽度。

#include<cstdio>intmain(){printf("%5d\n",123);// 输出为 " 123"return0;}

上⾯⽰例中, %5d 表⽰这个占位符的宽度⾄少为5位。如果不满5位,对应的值的前⾯会添加空格。
输出的值默认是右对⻬,即输出内容前⾯会有空格;如果希望改成左对⻬,在输出内容后⾯添加空
格,可以在占位符的 % 的后⾯插⼊⼀个 - 号。

#include<cstdio>intmain(){printf("%-5d\n",123);// 输出为 "123 "return0;}

上⾯⽰例中,输出内容 123 的后⾯添加了空格。
对于⼩数,这个限定符会限制所有数字的最⼩显⽰宽度。

#include<cstdio>// 输出 " 123.450000"intmain(){printf("%12f\n",123.45);return0;}

上⾯⽰例中, %12f 表⽰输出的浮点数最少要占据12位。由于⼩数的默认显⽰精度是⼩数点后6位,
所以 123.45 输出结果的头部会添加2个空格

2.1.3.2 限定⼩数位数

输出⼩数时,有时希望限定⼩数的位数。举例来说,希望⼩数点后⾯只保留两位,占位符可以写
成 %.2f 。

#include<cstdio>// 输出 Number is 0.50intmain(){printf("Number is %.2f\n",0.5);return0;}

上⾯⽰例中,如果希望⼩数点后⾯输出3位( 0.500 ),占位符就要写成 %.3f 。
这种写法可以与限定宽度占位符,结合使⽤。

#include<cstdio>// 输出为 " 0.50"intmain(){printf("%6.2f\n",0.5);return0;}

上⾯⽰例中, %6.2f 表⽰输出字符串最⼩宽度为6,⼩数位数为2。所以,输出字符串的头部有两个
空格。
最⼩宽度和⼩数位数这两个限定值,都可以⽤ * 代替,通过 printf() 的参数传⼊。

#include<cstdio>intmain(){printf("%*.*f\n",6,2,0.5);return0;}// 等同于printf("%6.2f\n", 0.5);

上⾯⽰例中, %*.*f 的两个星号通过 printf() 的两个参数 6 和 2 传⼊。

Read more

昔日AI绘画框架王者Stable Diffusion WebUI,已死

昔日AI绘画框架王者Stable Diffusion WebUI,已死

写在前面 【WeThinkIn出品】栏目分享Rocky的认知思考与经验感悟,范围涵盖但不限于AI行业。 欢迎大家关注Rocky的公众号:WeThinkIn 欢迎大家关注Rocky的知乎:Rocky Ding AIGC算法工程师面试面经秘籍分享:WeThinkIn/Interview-for-Algorithm-Engineer欢迎大家Star~ 获取更多AI行业的前沿资讯与干货资源 AIGC时代的 《三年面试五年模拟》AI算法工程师求职面试秘籍独家资源:【三年面试五年模拟】AI算法工程师面试秘籍 Rocky最新撰写10万字Stable Diffusion 3和FLUX.1系列模型的深入浅出全维度解析文章:深入浅出完整解析Stable Diffusion 3(SD 3)和FLUX.1系列核心基础知识 AIGC算法岗/开发岗面试面经交流社群(涵盖AI绘画、AI视频、大模型、AI多模态、数字人等AIGC面试干货资源)欢迎大家加入:https://t.zsxq.com/33pJ0 大家好,我是Rocky。 “还记得我们第一次打开Stable Diffusion WebUI,用上第

By Ne0inhk
AIGC时代大模型幻觉问题深度治理:技术体系、工程实践与未来演进

AIGC时代大模型幻觉问题深度治理:技术体系、工程实践与未来演进

文章目录 * 一、幻觉问题的多维度透视与产业冲击 * 1.1 幻觉现象的本质特征与量化评估 * 1.2 产业级影响案例分析 * 二、幻觉问题的根源性技术解剖 * 2.1 数据污染的复合效应 * 2.1.1 噪声数据类型学分析 * 2.1.2 数据清洗技术实现 * 2.2 模型架构的先天缺陷 * 2.2.1 注意力机制的局限性 * 2.2.2 解码策略的博弈分析 * 2.3 上下文处理的边界效应 * 三、多层次解决方案体系构建 * 3.1 数据治理体系升级 * 3.1.1 动态数据质量监控 * 3.1.2 领域知识图谱构建 * 3.

By Ne0inhk
[源力觉醒 创作者计划]_文心一言 4.5开源深度解析:性能狂飙 + 中文专精

[源力觉醒 创作者计划]_文心一言 4.5开源深度解析:性能狂飙 + 中文专精

文章目录 * [源力觉醒 创作者计划]_文心一言 4.5开源深度解析:性能狂飙 + 中文专精 * 一. 部署实战:单卡环境的极速落地 * 1.1 🖥️ 环境配置の手把手教程 📝 * 部署准备:硬件与镜像 * 依赖安装:一行代码搞定 * 1.2 🚀 模型启动の参数与验证 ✅. * 二. 多场景能力验证:从工业到学术 * 2.1 🏥 医疗影像诊断:从模糊影像到病灶定位 * 2.2 🚦 交通流优化:动态拥堵预测与策略设计 * 2.3 🔍 考古文本破译:甲骨文符号的跨学科解读 * 三. 性能优化与问题解决 * 3.1 🚀 性能优化策略:让模型跑得更快 * 3.2 🛠️ 常见错误解决方案 * 四. 与同类模型对比 * 🍬 核心优势对比🍭 * 🍬 对比结论🍭 * 五、

By Ne0inhk
知网vs维普AIGC检测对比:哪个更严?实测数据告诉你答案

知网vs维普AIGC检测对比:哪个更严?实测数据告诉你答案

知网vs维普AIGC检测对比:哪个更严?实测数据告诉你答案 TL;DR:同一篇论文,知网和维普的AIGC检测结果可能相差20%-46%。实测发现维普检测更严格,知网相对宽松。以学校指定平台为准是第一原则。不管用哪个平台检测,用嘎嘎降AI或比话降AI处理后都能达标。 为什么知网和维普检测结果差这么多? 最近群里有个同学发了张图,把大家都震惊了:同一篇论文,知网AIGC检测结果是0%,维普检测结果是46.25%。这差距也太离谱了吧?他问我到底该信哪个,我说先别急,看看你们学校要求用哪个平台。果然,他们学校指定用维普,那就以维普为准。这个案例不是个例,我自己也测过,同一篇论文在知网可能是30%,在维普就变成50%了。知网维普AIGC检测对比的结果差异,主要是因为两个平台的检测算法不一样。 知网的AIGC检测系统用的是「知识增强AIGC检测技术」,它依托知网庞大的学术文献数据库,从语言模式和语义逻辑两个维度进行检测。简单说就是,知网更侧重判断你的内容是否符合学术写作的逻辑,如果你的论文「看起来像学术论文」,即使有些AI特征,它也可能放过。而维普的检测算法采用自然语言处理和机器学习,对

By Ne0inhk