哪些网站做面试题,有专门做ppt的网站,本地怎样做网站,上饶建设网站目录
亲身体验
江苏卷
选择题
阅读程序题
阅读程序(1#xff09;
判断题
单选题
阅读程序(2)
判断题
单选题
阅读程序(3)
判断题
单选题
完善程序题
完善程序(1)
完善程序(2)
2023CSP-J江苏卷详解
小结 亲身体验
2023年的CSP-J是在9月16日9:30--11:30进行…目录
亲身体验
江苏卷
选择题
阅读程序题
阅读程序(1
判断题
单选题
阅读程序(2)
判断题
单选题
阅读程序(3)
判断题
单选题
完善程序题
完善程序(1)
完善程序(2)
2023CSP-J江苏卷详解
小结 亲身体验
2023年的CSP-J是在9月16日9:30--11:30进行的。而我是南京的统一考点在北京东路30号。
提前半个小时学校门口就被围的水泄不通了放眼望去人头攒动96%都是初中生这不禁让我
一个小学生有亿点点紧张。
考试进入考场需要检查是否带了违禁物品座位号是蛇字形贴的十分公平。
开始考试前会有广播提醒注意事项考试是答题纸形式题目数量还是和2022年一样。
好的废话不多说直接开始讲题解析在最后。
江苏卷
选择题
一、 单项选择题共15题每题2分共计30分每题有且仅有一个正确选项
1.在C中下面哪个关键字用于声明变量其值不能被修改
A.unsigned
B.const
C.static
D.mutable
2.八进制数12345670和07654321的和为
A.(22222221)8
B.(21111111)8
C.(22111111)8
D.(22222211)8
3.阅读下述代码请问修改data的value成员以存储3.14正确的方式是
union Data{int num;float value;char symbol;
};
union Data data;
A.data.value3.14;
B.value.data3.14;
C.data-value3.14;
D.value-data3.14;
4.假设有一个链表的节点定义如下
struct Node {int data;Node* next;
};
现在有一个指向链表头部的指针Node* head。如果想要在链表中插入一个新节点其成员data的值为42并使新节点成为链表的第一个节点下面哪个操作是正确的
A. Node* newNode new Node; newNode-data 42; newNode-next head; head newNode;
B. Node* newNode new Node; head-data 42; newNode-next head; head newNode;
C. Node* newNode new Node; newNode-data 42; head-next newNode;
D. Node* newNode new Node; newNode-data 42; newNode-next head;
5. 根节点的高度为1一根拥有2023个节点的三叉树高度至少为 。
A. 6
B. 7
C. 8
D. 9
6. 小明在某一天中依次有七个空闲时间段他想要选出至少一个空闲时间段来练习唱歌但他希望任意两个练习的时间段之间都有至少两个空闲的时间段让他休息则小明一共有 种选择时间段的方案。
A. 31
B. 18
C. 21
D. 33
7. 以下关于高精度运算的说法错误的是 。
A. 高精度计算主要是用来处理大整数或需要保留多位小数的运算。
B. 大整数除以小整数的处理的步骤可以是将被除数和除数对齐从左到右逐位尝试将除数乘以某个数通过减法得到新的被除数并累加商。
C. 高精度乘法的运算时间只与参与运算的两个整数中长度较长者的位数有关。
D. 高精度加法运算的关键在于逐位相加并处理进位。
8. 后缀表达式“6 2 3 - 3 8 2 / * 2 ^ 3 ”对应的中缀表达式是
A. ((6 - (2 3)) * (3 8 / 2)) ^ 2 3
B. 6 - 2 3 * 3 8 / 2 ^ 2 3
C. (6 - (2 3)) * ((3 8 / 2) ^ 2) 3
D. 6 - ((2 3) * (3 8 / 2)) ^ 2 3
9. 数(101010)2和(166)8的和为 。
A. (10110000)2
B. (236) 8
C. (158)10
D. (A0)16
10. 假设有一组字符{a,b,c,d,e,f}对应的频率分别为5%9%12%13%16%45%。请问以下哪个选项是字符a,b,c,d,e,f分别对应的一组哈夫曼编码
A. 111111101011001100
B. 10101001100001101000
C. 0000010100111011
D. 101010111101110001
11. 给定一棵二叉树其前序遍历结果为ABDECFG中序遍历结果为DEBACFG。请问这棵树的正确后序遍历结果是什么
A. EDBFGCA
B. EDBGCFA
C. DEBGFCA
D. DBEGFCA
12. 考虑一个有向无环图该图包括4条有向边(1,2)(1,3)(2,4)和(3,4)。以下哪个选项是这个有向无环图的一个有效的拓扑排序
A. 4231
B. 1234
C. 1243
D. 2134
13. 在计算机中以下哪个选项描述的数据存储容量最小
A. 字节byte
B. 比特bit
C. 字word
D. 千字节kilobyte
14. 一个班级有10个男生和12个女生。如果要选出一个3人的小组并且小组中必须至少包含1个女生那么有多少种可能的组合
A. 1420
B. 1770
C. 1540
D. 2200
15. 以下哪个不是操作系统
A. Linux
B. Windows
C. Android
D. HTML
阅读程序题
二、 阅读程序程序输入不超过数组成字符串定义的范围判断题正确填√错误填×除特殊说明外判断题1.5分选择题3分共计40分
阅读程序(1
01 #includeiostream
02 #includecmath
03 using namespace std;
04
05 double f(double a,double b,double c){
06 double s(abc)/2;
07 return sqrt(s*(s-a)*(s-b)*(s-c));
08 }
09
10 int main(){
11 cout.flags(ios::fixed);
12 cout.precision(4);
13
14 int a,b,c;
15 cinabc;
16 coutf(a,b,c)endl;
17 return 0;
18 } 假设输入的所有数都为不超过1000的正整数完成下面的判断题和单选题
判断题
16. 2分当输入为“2 2 2”时输出为“1.7321”
17. 2分将第7行中的s-b*s-c改为s-c*s-b不会影响程序运行的结果
18. 2分程序总是输出四位小数
单选题
19. 当输入为“3 4 5”时输出为
A. 6.0000 B. 12.0000 C. 24.0000 D. 30.0000
20. 当输入为“5 12 13”时输出为
A. 24.0000 B. 30.0000 C. 60.0000 D. 120.0000
阅读程序(2)
01 #includeiostream
02 #includevector
03 #includealgorithm
04 using namespace std;
05
06 int f(string x,string y){
07 int mx.size();
08 int ny.size();
09 vectorvectorintv(m1,vectorint(n1,0));
10 for(int i1;im;i){
11 for(int j1;jn;j){
12 if(x[i-1]y[j-1]){
13 v[i][j]v[i-1][j-1]1;
14 }else{
15 v[i][j]max(v[i-1][j],v[i][j-1]);
16 }
17 }
18 }
19 return v[m][n];
20 }
21
22 bool g(string x,string y){
23 if(x.size() ! y.size()){
24 return false;
25 }
26 return f(xx,y)y.size();
27 }
28
29 int main(){
30 string x,y;
31 cinxy;
32 coutg(x,y)endl;
33 return 0;
34 }
判断题
21. f函数的返回值小于等于minn,m。
22. f函数的返回值等于两个输入字符串的最长公共子串的长度。
23. 当输入两个完全相同的字符串时g函数的返回值总是true
单选题
24. 将第19行中的“v[m][n]”替换为“v[n][m]”那么该程序
A. 行为不变 B. 只会改变输出 C..一定非正常退出 D. 可能非正常退出
25. 当输入为 csp-j p-jcs 时,输出为( )
A. “0” 8. “1” C “T” D. “F”
26 当输入为“csppsc spsccp”时输出为
A. “T” B. “F” c. “0” 0. “1”
阅读程序(3)
01 #include iostream
02 #include cmath
03 using namespace std;
04
05 int solve1(int n){
06 return n*n;
07 }
08
09 int solve2(int n){
10 int sum0;
11 for(int i1;isqrt(n);i){
12 if(n%i0){
13 if(n/ii){
14 sumi*i;
15 }else{
16 sumi*i(n/i)*(n/i);
17 }
18 }
19 }
20 return sum;
21 }
22
23 int main(){
24 int n;
25 cinn;
26 coutsolve2(solve1(n)) solve1((solve2(n)))endl;
27 return 0;
28 }
假设输入的n是绝对值不超过1000的整数完成下面的判断题和单选题。
判断题
27. 如果输入的n为正整数solve2函数的作用是计算n所有的因子的平方和
28. 第13~14行的作用是避免n的平方根因子i或n/i进入第16行而被计算两次
29. 如果输入的n为质数solve2n的返回值为n²1
单选题
30. 4分如果输入的n为质数p的平方那么solve2n的返回值为
A. p²p1 B. n²n1 C. n²1 D. p42p²1
31. 当输入为正整数时第一项减去第二项的差值一定
A. 大于0 B. 大于等于0且不一定大于0 C. 小于0 D. 小于等于0且不一定小于0
32. 当输入为“5”时输出为
A. 651.625 B. 650.729 C. 651.676 D. 652.625
完善程序题
三、完善程序(单选题每小题3分共计 3 分)
完善程序(1)
(寻找被移除的元素)问题:原有长度为 n1公差为1等升数列将数列输到程序的数组时移除了一个元素导致长度为 n 的开序数组可能不再连续除非被移除的是第一个或最后之个元素。需要在数组不连续时找出被移除的元素。试补全程序。
01 #include iostream
02 #include vector
03
04 using namespace std;
05
06 int find missing(vectorint nums){
07 int left 0, right nums.size() - 1;
08 while (left right){
09 int mid left (right-left) / 2;
10 if (nums[mid] - mid ①) {
11 ②;
12 }else{
13 ③;
14 }
15 }
16 return ④;
17 }
18
19 int main() (
20 int n;
21 cin n;
22 vectorint nums(n);
23 for (int i 0; i n; i) cin nums[i];
24 int missing_number find_missing(nums);
25 if_(missing_number ⑤) {
26 cout Sequence is consecutive endl;
27 }else{
28 cout Missing number is ,missing numbeer endl;
29 }
30 return 0;
31 }
33. ①处应填
A. 1 B.nums[0] C.right D.left
34. ②处应填
A. leftmid1 B.rightmid-1 C.rightmid D.leftmid
35. ③处应填
A.leftmid1 B.rightmid-1 C.rightmid D.leftmid
36. ④处应填
A.leftnums[0] B.rightnums[0] C.midnums[0] D.right1
37. ⑤处应填
A.nums[0]n B.nums[0]n-1 C.nums[0]n1 D.nums[n-1]
完善程序(2)
编辑距离给定两个字符串每次操作可以选择删除Delete、插入Insert、替换Replace一个字符求将第一个字符串转换为第二个字符串所需要的最少操作次数。
#include iostream
#include string
#include vector
using namespace std;int min(int x,int y,int z){return min(min(x,y),z);
}int edit_dist_dp(string str1,string str2){int mstr1.length();int nstr2.length();vectorvectorint dp(m1,vectorint(n1)); for(int i0;im;i){for(int j0;jn;j){if(i0)dp[i][j](1);else if(j0)dp[i][j](2);else if((3))dp[i][j](4);elsedp[i][j]1min(dp[i][j-1],dp[i-1][j],(5)); }
}
return dp[m][n];
}
int main(){string str1,str2;cinstr1str2;coutMininum number of operation:edit_dist_dp(str1,str2)endl;return 0; }
38. ①处应填
A.j B.i C.m D.n
39. ②处应填
A.j B.i C.m D.n
40. ③处应填
A. str1[i-1]str2[j-1] B. str1[i]str2[j]
C. str1[i-1]!str2[j-1] D. str1[i]!str2[j]
41. ④处应填
A. dp[i-1][j-1]1 B. dp[i-1][j-1]
C. dp[i-1][j] D. dp[i][j-1]
42. ⑤处应填
A. dp[i][j] 1 B. dp[i-1][j-1]1
C. dp[i-1][j-1] D. dp[i][j]
到此本张试卷就结束了题目全部来自NOI公众号及自己整理下面开始讲解讲解为原创
2023CSP-J江苏卷详解
1.答案 A
解析const在C中是常量的意思其作用是声明一个变量值从头至尾不能被修改
2.答案 D
解析八进制加法即逢八进一列成竖式如下 3.答案 A
解析类似于结构体赋值
4.答案 A
解析链表的知识
5.答案 C
解析3^67293^72187718
6.答案 B
解析选一个空闲段来练习唱歌有7种方式选两个有432110种选三个有1种
7.答案 C
解析高精度的运算时间与较长和较短的数都有关系
8.答案 A
解析请看B站详细解释数据结构---前缀 中缀 后缀 表达式之间的转换_哔哩哔哩_bilibili 9.答案 D
解析先分别把二进制数和八进制数转换为十进制数接着依次比较选项
10.答案 A
解析哈夫曼编码通常情况下出现频率最多的字符往往用最短的编码。不会哈夫曼的看这个哈夫曼编码Huffman Coding原理详解-CSDN博客
11.答案 A
解析这题其实考试的时候是印刷错误的后来监考老师改正过来的。考察的是我们二叉树的知识。根据前序遍历我们知道根是A在把中序遍历以A为分界线我们变得出了左子树DEB和右子树CFG最后画出二叉树用左-右-根的方法遍历即可。
12.答案 B
解析对于拓扑排序有向边u-vu一定排在v的前面。符合条件的只有1,2,3,4
13.答案 B
1千字节1024字节1024x8比特
14.答案 A
解析分类讨论1女2男12x987……112x45540 2女1男11109……1*1066x10660 3女C(12,3)220 总共5406602201420
15.答案 D
解析HTML是超文本标记语言
小结
以上是选择题的讲解其他的讲解请看我的博客目前还没出来数据分析也会在以后博客提现欢迎订阅专栏这样就能看到我的数据分析了
祝大家能在CSP取得好成绩一起加油鸭