算法的概念
算法的概念
了解算法的概念与描述。
算法是解决一类问题的有穷、确定、可执行步骤序列:步数有限、每一步含义唯一、用现有运算能做完,并且有明确的输入与输出。算法不是某一种编程语言,也不是某一份源文件——同一算法可以用自然语言、流程图、伪代码或 C++ 写出多种形态。评价时还会看是否对所有合法输入都能停机、步骤是否含糊。三级把「算法是什么」与后面的枚举、模拟分开:本叶子只建立概念,不要求已经会套某一种策略。
客观题常判断说法:算法必须能在有限步结束、算法与程序是否同一事物、有没有输入是否仍算算法。判断题会把「程序编译通过」说成「算法正确」,或把无限循环包装成算法。认证标准规定考试时长为 120 分钟,这类题读完题干对性质即可,不必写代码。
// 求三个整数中的最大值:步骤有穷、每步确定
int max3(int a, int b, int c) {
int m = a;
if (b > m) m = b;
if (c > m) m = c;
return m;
}
先问「步骤清不清楚、会不会停」,再谈快慢;把算法等同于一段能运行的 C++,容易在判断题上失分。
高级语言编写的程序需要经过以下( )操作,可以生成在计算机上运行的可执行代码。
以下哪个不是 C++ 语言中的运算符?( )
原文保真说明:来源改写 1 处(照原卷保留,未作修改)
来源题面被改写多余符号选项 3
原卷作
*,常规写法应为\*洛谷有题把选项 C 写成 Markdown 转义 \\*;官方 PDF 第 2 页印作 *。已按页面图像恢复。
已按官方原件恢复:现为原卷原文
域名是由一串用点分隔的名字来标识互联网上一个计算机或计算机组的名称,CCF 编程能力等级认证官方网站的域名是 gesp.ccf.org.cn,其中顶级域名是 gesp。
人们所使用的手机上安装的 App 通常指的是( )。
C++ 的数据类型转换让人很难琢磨透,下列代码输出的值是()。
int a=3;
int b=2;
cout<<a/b*1.0<<endl;
某公司新出了一款无人驾驶的小汽车,通过声控智能驾驶系统,乘客只要告诉汽车目的地,车子就能自动选择一条优化路线,告诉乘客后驶达那里。请问下面哪项不是驾驶系统完成选路所必须的。()
现代计算机是指电子计算机,它所基于的是()体系结构。
执行C++代码 cout<<(5&&2)<<endl; 后将输出 1。()
执行 C++ 代码 cout<<(5||2); 后将输出 1。()
小杨最近在准备考 GESP,他用的 Dev C++ 来练习和运行程序,所以 Dev C++ 也是一个小型操作系统。()
任何一个 while 循环都可以转化为等价的 for 循环()。
小杨的父母最近刚刚给他买了一块华为手表,他说手表上跑的是鸿蒙,这个鸿蒙是( )。
中国计算机学会(CCF)在 2024 年 1 月 27 日的颁奖典礼上颁布了王选奖,王选先生的重大贡献是( )。
小杨今年春节回奶奶家了,奶奶家的数字电视要设置 ip 地址并接入到 WIFI 盒子才能收看节目,那这个 WIFI 盒子具有路由器的功能。( )
任何一个 for 循环都可以转化为等价的 while 循环( )。
小杨父母带他到某培训机构给他报名参加 CCF 组织的 GESP 认证考试的第 1 级,那他可以选择的认证语言有( )种。
GESP 测试是对认证者的编程能力进行等级认证,同一级别的能力基本上与编程语言无关。
下列代码中,输出结果是( )
#include<iostream>
using namespace std;
int main()
{
double a=0.9;
double b=1.0;
if(((b-a)==0.1))
{
cout<<"Equal"<<endl;
}
else
{
cout<<"Not equal"<<endl;
}
}
原文保真说明:来源改写 1 处(照原卷保留,未作修改)
来源题面被改写措辞改写题干
原卷作
if(((b-a)==0.1))洛谷有题写成 if ((b - a) == 0.1),少一层括号并加了空格;官方 PDF 第 1 页为 if(((b-a)==0.1)),已按页面恢复。
已按官方原件恢复:现为原卷原文
下列程序输出的是 A。( )
char x=65;
x++;
cout<<x++<<endl;
工人工作一天,会得到一个金环作为工资报酬,某个工作需要 15 天完成,一条 15 个环的金环项链,为了严格执行每天工作结束时,完成对工人工资的结算,最少需要将金环项链剪裁成几段,每段几个金环( )
原文保真说明:来源改写 1 处(照原卷保留,未作修改)
来源题面被改写数值印错选项 3
原卷作
$3$、$3$、$3$、$3$、$2$、$1$洛谷有题选项 C 少写一段 3(写成 3、3、3、2、1);官方 PDF 第 7 页为 3、3、3、3、2、1,已恢复。
已按官方原件恢复:现为原卷原文
自然界中,最小的素数是 2。
判断一个三角形是否成立的条件只有:任意两边长度之和大于第三条边的长度
C++语句 cout << (n % 15 == 0 ? "YES" : "NO"); 能够判断一个整数能否被 3 和 5 同时整除
有 $ n $ 个同学,从中抽取任意个人数来参加学校组织的大合唱,共有 $ 2^n $ 种方法
sort 可以直接用于排序 set 中的元素。
在数学纸面计算中,pow(2, 3) 的计算结果一定是 8,但是在 C++ 中,如果遇到数据类型是浮点数,那就不一定正确。
在 C++ 中,枚举的底层类型可以是非整型(如 float 或 double)。
函数声明 double f(); 返回 int 时,会自动转换为 double。
下列 C++ 表达式的结果为 true 的是( )。
要正确定义一个返回两个整数中较大值的函数 max,应该使用( )。
以下关于 C++ 函数的描述,正确的是( )。
以下关于 C++ 变量作用域的说法,错误的是( )。
以下关于 C++ 函数的说法,正确的是( )。
在 C++ 中,所有全局变量如果没有显式初始化,都会被自动初始化为 0。
在 C++ 中,++i 是一个左值表达式,而 i++ 是一个右值表达式。
对于 enum Color { RED, GREEN, BLUE };,RED 的类型是 int。
#define SQUARE(x) x * x 是一个安全的宏定义,SQUARE(2+3) 会正确计算出 25。
表达式 a > b ? a : b = 10; 一定是合法的 C++ 代码。
#include "file.h" 和 #include <file.h> 在编译器查找头文件时的搜索策略是完全相同的。
在同一个作用域内,extern 声明的变量可以多次定义。
以下关于 C++ 求最小值函数 min() 的描述,不正确的是( )
以下关于 C++ 中 abs() 函数的描述,正确的是( )
在 C++ 中,++ 和 -- 运算符只能用于整型变量,不能用于浮点数变量。
关于以下程序段,说法正确的是( )。
int x=10;
cout<<(x++) + (++x)<<endl;
某个初学 C++ 的学生,在对照参考程序写了一个程序以后,信心满满地进行编译,他敲进编译器的全部代码如下,这个程序能够正常编译运行。
1 #include<bits/stdc++.h>
2 using namespace std;
3 int main() {
4 cout << "Hello world!" << endl;
5 return 0;
6 }
原文保真说明:来源改写 1 处(照原卷保留,未作修改)
来源题面被改写版式题干
原卷作
4 cout << "Hello world!" << endl;,常规写法应为4 cout << "Hello world!" << endl;洛谷行号 4/5 后少一空格;已按官方 PDF 第 5 页列位重建恢复。原卷把行号印进代码正文(考生照抄参考程序时连行号一起敲了)。
已按官方原件恢复:现为原卷原文