pta选择、填空错题集合

合集下载

pta选择题(共112题应化C语言老师提供)

pta选择题(共112题应化C语言老师提供)

1. C 语言程序中可以对程序进行注释,注释部分必须用什么符号括起来?(2分)A.'{' 和‘}'B.'[' 和']'C.'/*' 和'*/'D.'*/' 和'/*'2.o作者:往年试卷o单位:浙江大学下列运算符中,优先级最低的是____。

(2分)B.*C.!=D.+E.=3.o作者:往年试卷o单位:浙江大学若变量已正确定义,表达式 (j=3, j++) 的值是____。

(2分)B. 3C. 4D. 5E. 64.o作者:往年试卷o单位:浙江大学98, b语法不合法98, 9998, cB.正数C.负数D.0E.不确定的数6.o作者:往年试卷o单位:浙江大学数组定义为 int a[3][2]={1, 2, 3, 4, 5, 6},数组元素____的值为6。

(2分)B.a[3][2]C.a[2][1]D.a[1][2]E.a[2][3]7.o作者:往年试卷o单位:浙江大学要调用数学函数时,在#include命令行中应包含____。

(2分)B."stdio.h"C."string.h"D."math.h"E."ctype.h"8.o作者:往年试卷o单位:浙江大学判断i 和j 至少有一个值为非0的表达式是____。

(2分)B.i!=0 && j!=0C.i+j!=0D.i || jE.i&&j9.o作者:往年试卷o单位:浙江大学若a是基本整型变量,c是单精度实型变量,输入语句____是错误的。

(2分)B.scanf("%d,%f”, &a, &c);C.scanf("d=%d, c=%f”, &a, &c);D.scanf("%d%f”, &a, &c);E.scanf("%d%f”, a, c);10.o作者:往年试卷o单位:浙江大学下列运算符中优先级最低的是__. (2分)B.IIC.>=D.!=E.~11.o作者:往年试卷o单位:浙江大学若变量已正确定义并赋值,符合C语言语法的表达式是 __. (2分)B.a=2++C.a=3,5D.a=a+1=3E.12.3%412.o作者:往年试卷o单位:浙江大学表达式__不能用于判断“x和y不同时为零”。

(山东科技大学)PTA数据结构答案与解析

(山东科技大学)PTA数据结构答案与解析

3.函数题 4.编程题
线性表应用
1.单选题
2-1 采用多项式的非零项链式存储表示法,如果两个多项式的非零项分别为N1和N2个,最高项指数分别为M1和M2, 则实现两个多项式相乘的时间复杂度是:(2分) 1. O(N1×N2) 2. O(M1×M2) 3. O(N1+N2) 4. O(M1+M2) 解析:略 答案: A
3. 任一结点无左孩子 4. 任一结点无右孩子 解析:思路同2-15,在此不再阐述 答案: D 2-17 设n、m为一棵二叉树上的两个结点,在中序遍历时,n在m前的条件是 (3分) 1. n在m左方 2. n在m右方 3. n是m祖先 4. n是m子孙 解析:由显然易得,选A 答案: A 2-18 给定二叉树如下图所示。设N代表二叉树的根,L代表根结点的左子树,R代表根结点的右子树。若遍历后的结点序 列为3、1、7、5、6、2、4,则其遍历方式是: (2分)
1. c 2. d 3. f 4. g解析:模拟一遍求解即可 答案: B 单位: 浙江大学 2-5 在下述结论中,正确的是: (2分) ① 只有2个结点的树的度为1; ② 二叉树的度为2; ③ 二叉树的左右子树可任意交换; ④ 在最大堆(大顶堆)中,从根到任意其它结点的路径上的键值一定是按非递增有序排列的。 1. ①④ 2. ②④ 3. ①②③ 4. ②③④
1. NRL 2. RNL 3. LRN 4. RLN 解析:由显然易得,选B 答案: B 2-19 设高为h的二叉树(规定叶子结点的高度为1)只有度为0和2的结点,则此类二叉树的最少结点数和最多结点数分 别为: (3分) 1. 2. 3. 4. , , , ,
解析:由二叉树结点数性质,易得B答案正确, 容易误选D,当除根节点之外,每层有两个节点的时候,结点数是最 少的(不方便画图就不画了,自行理解)

pta数据结构期末复习题

pta数据结构期末复习题

pta数据结构期末复习题一、选择题(每题2分,共20分)1. 在数据结构中,线性结构的特点是什么?A. 元素之间存在一对一的关系B. 元素之间存在一对多的关系C. 元素之间存在多对多的关系D. 元素之间存在一对一或多对多的关系2. 栈(Stack)是一种后进先出(LIFO)的数据结构,以下哪个操作不是栈的基本操作?A. 入栈(Push)B. 出栈(Pop)C. 查看栈顶元素(Top)D. 排序(Sort)3. 在二叉树中,度为2的节点最多有多少个子节点?A. 1B. 2C. 3D. 44. 哈希表的冲突解决方法不包括以下哪项?A. 开放寻址法B. 链接法C. 线性探测法D. 冒泡排序法5. 图的遍历算法中,深度优先搜索(DFS)使用的是哪种数据结构来实现?A. 队列B. 栈C. 链表D. 树二、填空题(每空2分,共20分)6. 在链表中,每个节点通常包含数据部分和______。

7. 排序算法中,冒泡排序的时间复杂度为______。

8. 快速排序算法的平均时间复杂度为______。

9. 哈夫曼编码是一种______编码方法。

10. 在图的表示方法中,邻接矩阵适用于______图。

三、简答题(每题10分,共30分)11. 简述线性表和非线性表的区别。

12. 解释什么是二叉搜索树,并说明其特点。

13. 描述图的深度优先搜索(DFS)和广度优先搜索(BFS)的区别。

四、计算题(每题15分,共30分)14. 给定一个数组A = [3, 7, 5, 1, 9, 8],请使用选择排序算法对其进行排序,并给出排序过程中的每一步状态。

15. 假设有一个无向图,包含顶点A, B, C, D, E,边的权重如下:(A,B): 1, (B,C): 2, (C,D): 3, (D,E): 4, (A,E): 5。

请使用克鲁斯卡尔算法(Kruskal's algorithm)找到该图的最小生成树。

五、编程题(共10分)16. 编写一个函数,实现单链表的反转,并说明其时间复杂度。

PTA选择题汇总

PTA选择题汇总

For the following declarations of structure and variables, the correct description of the expression *p->str++; is __. (2 分) B. ++ acts on the pointer str For the following declarations, assignment expression __ is not correct. (2 分) B. p->name =
Among the following assignments or initializations, __ is wrong. (2 分) B. char s[10]; s="hello";
Among the following expressions in C, __ is correct. (2 分) D. 2==(3/2)
按照标识符的要求,( )不能组成标识符。 (2 分) A. 连接符
表达式 strcmp("box", "boss") 的值是一个____。(2 分) A. 正数
表达式( )的值是 0。 (2 分) A. 3/5
表达式__不能用于判断“x 和 y 不同时为零”。 (2 分) C. !(x==0 || y==0)
表达式__的值是 0。 (2 分) C. 3/5
表达式 5>3>1 值是__. (2 分) A. 0 表达式 8>6>3 值是( )。 (2 分) A. 0
不正确的赋值或赋初值的方式是____。 (2 分) C. char str[10];str="string";

pta选择填空错题集合

pta选择填空错题集合

1、以下选项中不正确的整型常量就是(D)、(2分)A.12LB.-10C.012D.2,900//u就是unsigned的意思,代表无符号整型带L的就是长整型字面值常量,不带的就是整型字面值常量。

2、若,则表达式(B)。

(2分)A 2、5B 2、0C 2D 33、在C语言中,数字029就是一个(D )。

(2分)A.八进制数B.十进制数C.十六进制数D.非法数//0开头表示8进制,但8进制没有字符9的。

0x开头表示十六进制。

4、以下名字,不能作为C语言标识符的就是:C (2分)A.ThisIsQingdaoUniversityB.$$C.monkey~1D._//c语言也就是要瞧编译器的,在vs2012中默认的编译器以美元符号开头的标识符就是可以的。

5、if(a=5) 就是允许的。

T (1分)T F//if判断为真。

6、增1减1运算符的前缀运算与后缀运算的表达式值就是相同的。

(1分)T F//表达式值不一样,执行过后变量值一样。

7、C语言程序就是从源文件的第一条语句开始执行的。

F (1分)T F//从main开始。

8、break语句只能用于循环语句中。

F (5分)T F//switch语句也可用。

9、表达式1。

T (5分)T F//真为1,假为0, 无论(3<x) 就是真就是假都小于5、10、结构化程序设计规定的基本控制结构包括顺序、选择、循环。

T (1分)T F11、当a=1,b=3,c=5,d=4,x=0 时,执行完下面一段程序后x的值就是(B ) (1分)A.7B. 2C. 3D. 612、在C语言中,要求运算数必须就是整型的运算符就是( A)。

(4分)A.%B./C.<D.!13、使用“scanf("X=%f,y=%f",&x,&y)”,要使X,y均为1、25,正确的输入就是( C ) (4分)A.1、25,1、25B.1、25 1、25C.X=1、25,y=1、25D.X=1、25 y=1、25//格式一致14、如果函数定义出现在函数调用之前,可以不必加函数原型声明。

PTA程序设计答案

PTA程序设计答案

PTA所有答案工业gc1601学习小组一、判断题二、选择题三、函数题4-3 求m到n之和 (10分)答案:int sum(int m, int n){int s=0,i;for(i=m;i<=n;i++)s+=i;return s;}4-34 简单输出整数 (10分)答案:void PrintN ( int N ){int i;for(i=1;i<=N;i++)printf("%d\n",i); }4-36 简单求和 (10分)答案:int Sum ( int List[], int N ){ int i,s=0;for(i=0;i<N;i++)s+=List[i];return s;}4-40 简单阶乘计算 (10分)答案:int Factorial( const int N ){ int i, s=1;if( N < 0 )return 0;else if( N == 0)return 1;else {for(i=1; i<=N; i++)s*=i;return s;}}4-43 找两个数中最大者 (10分)答案:int max( int a, int b ){ int max;if(a >= b)max = a;elsemax = b;return max;}4-44 数字金字塔 (15分)答案:void pyramid(int n){int i, j, space;for(i=1; i <= n; i++){space = n - i;for(j=0; j < space; j++)printf(" ");for(j=0; j < i; j++)printf("%-2d", i);printf("\n");}}4-45 判断奇偶性 (10分)答案:int even( int n ){if( n%2==0 )return 1;elsereturn 0;}4-46 使用函数求奇数和 (15分)答案:int even( int n ){if( n%2==0 )return 1;elsereturn 0;}int OddSum( int List[], int N ){int i;int oddsum = 0;for(i=0; i<N; i++)if(even(List[i])==0)oddsum += List[i];return oddsum;}4-47 使用函数计算两点间的距离 (10分)答案:double dist(double x1, double y1, double x2, double y2){ double d;d = sqrt((x1 - x2)*(x1 - x2) + (y1 - y2)*(y1 - y2));return d;}4-48 使用函数求素数和 (20分)答案:int prime( int p ){int i,j,count =0;for(j=2;j<p;j++)if(p%j==0)4-20 使用函数输出水仙花数 (20分)答案:int narcissistic(int number){int i, j, digit, power, powerSum, integer, count, flag; count = 0;integer = number;while (integer > 0){integer = integer / 10;count++;}4-21 使用函数求余弦函数的近似值 (15分)答案:double funcos( double e, double x ) { double sum=0,d=100;int i=0,j;double cj;int count=0;while(d>e){count++;if(count%2!=0) {cj=1;for(j=1; j<=i; j++)cj=cj*j;d=pow(x,i)/cj;4-49 分类统计字符个数 (15分)答案:void StringCount( char s[] ){int i;int n1 = 0, n2 = 0, n3 = 0, n4 = 0;for (i = 0; s[i] != '\0'; i++){if ((s[i] >= 'a'&&s[i] <= 'z') || (s[i] >= 'A'&&s[i] <= 'Z')) n1++;else if (s[i] == ' ' ||s[i] == '\n')n2++;else if (s[i] >= '0'&&s[i] <= '9')n3++;else n4++;}printf("letter = %d, blank = %d, digit = %d, other = %d",n1,n2,n3,n4);}4-7 使用函数求特殊a串数列和 (20分)答案:int fn( int a, int n ){int x,p=0,i;for(i=0; i<n; i++){x= a * pow(10,i);p = p + x;}return p;}int SumA( int a, int n ){int k;int sum=0;for(k=0; k<n+1; k++)sum = sum + fn( a , k );return sum;}4-22 使用函数输出指定范围内的完数 (20分)。

PTA题目集4~6总结

PTA题目集4~6总结

PTA题⽬集4~6总结前⾔:题⽬集四:此次题⽬集四共有三题,题量较少但是题⽬难度及复杂度较⼤。

第⼀题为⽔⽂数据校验及处理,本题主要考察正则表达式的使⽤及接⼝的使⽤,对正则表达式及接⼝使⽤要求较⾼,题⽬较复杂;第⼆题为⽇期问题⾯向对象聚合⼀,本题主要考察对类的封装,题⽬对get和set的运⽤较多,对this及super关键字的使⽤有⼀定的要求,题⽬总体较复杂;第三题为图形继承,本题主要考察java中的继承的使⽤,对⽅法的重写也有所考察,难度与复杂度相对⼀般。

题⽬集五:此次题⽬集共有五题,题量较多但是难度不⼀。

第⼀题为找出最长单词,本题主要考察字符串的字符长度⽐较,同时还需要运⽤split将单词分隔开,题⽬较简单;第⼆题为合并两个有序数组为新的有序数组,本题主要考察数组的运⽤及数据的排序,题⽬较简单;第三题为对整形数据排序,本题主要考察插⼊排序、选择排序和冒泡排序的算法,题⽬较简单;第四题为统计java程序中关键词的出现次数,本题主要考察正则表达式的使⽤及接⼝的使⽤,对正则表达式及接⼝使⽤要求较⾼,题⽬较复杂;第五题为⽇期问题⾯向对象聚合⼆,和上次题⽬集的第⼆题考察内容⼤致⼀直,不过对⽇期类的设计与联系有了⼀定程度的改变,有了上次作业的经验,此次作业相对较简单。

题⽬集六:此次题⽬集共有六题,题量较多但是难度较⼩。

第⼀题为正则表达式训练-QQ号校验,本题主要考察正则表达式的使⽤,题⽬相对较简单;第⼆题为字符串训练-字符排序,本题主要考察字符串与字符数组的转化,题⽬相对较简单;第三题为正则表达式训练-验证码校验,本题主要考察正则表达式的使⽤,题⽬相对较简单;第四题为正则表达式训练-学号校验,本题同样考察正则表达式,复杂程度较前两题有所提⾼,题⽬难度偏低;第五题为图形继承与多态,本体主要考察java中的继承与多态,还包括ArrayList的常⽤⽅法及和数组的关系的使⽤,难度和复杂度较⼤;第六题为实现图形接⼝及多态性,主要需要实现类的封装性、继承性和多态性,综合性较强,但复杂度⼀般。

PTA程序设计答案

PTA程序设计答案
int i;
double m=1;
if(n==0)
return m;
else{
for(i=1; i<=n; i++)
m = m*i;
return m;
}
}
double factsum( int n ){
int j;
double sum=0;
if(n>0)
for(j=1; j<=n; j++)
sum += fact(j);
else{
t=n;
dectobin(n=n/2);
for(i=n-m-1; i>=0; i--)
a[i+m]=a[i];
for(i=0; i<m; i++)
a[i]=s[i];
}
return 0;
}
4-54 删除字符 (20分)
答案:
void delchar( char *str, char c ){
int i=0, j=0;
for (;str[i]!='\0';i++)
space = n - i;
for(j=0; j < space; j++)
printf(" ");
for(j=0; j < i; j++)
printf("%-2d", i);
printf("\n");
}
}
4-45 判断奇偶性 (10分)
答案:
int even( int n ){
if( n%2==0 )
if(count%2!=0) {
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.以下选项中不正确的整型常量是(D). (2分)
A.12L
B.-10
C.012
D.2,900
//u是unsigned的意思,代表无符号整型带L的是长整型字面值常量,不带的是整型字面值常量。

2.若B)。

(2分)
A 2.5
B 2.0
C 2
D 3
3.在C语言中,数字029是一个(D )。

(2分)
A.八进制数
B.十进制数
C.十六进制数
D.非法数
//0开头表示8进制,但8进制没有字符9的。

0x开头表示十六进制。

4.以下名字,不能作为C语言标识符的是:C (2分)
A.ThisIsQingdaoUniversity
B.$$
C.monkey~1
D._
//c语言也是要看编译器的,在vs2012中默认的编译器以美元符号开头的标识符是可以的。

5.if(a=5) 是允许的。

T (1分)
T F
//if判断为真。

6.增1减1运算符的前缀运算和后缀运算的表达式值是相同的。

(1分)
T F
//表达式值不一样,执行过后变量值一样。

7.C语言程序是从源文件的第一条语句开始执行的。

F (1分)
T F
//从main开始。

8.break语句只能用于循环语句中。

F (5分)
T F
//switch语句也可用。

9.1。

T (5分)
T F
//真为1,假为0,无论 (3<x) 是真是假都小于 5.
10.结构化程序设计规定的基本控制结构包括顺序、选择、循环。

T (1分)
T F
11.当a=1,b=3,c=5,d=4,x=0 时,执行完下面一段程序后x的值是(B)(1分)
A.7
B. 2
C. 3
D. 6
12.在C语言中,要求运算数必须是整型的运算符是(A)。

(4分)
A.%
B./
C.<
D.!
13.使用“scanf("X=%f,y=%f",&x,&y)”,要使 X,y均为1.25,正确的输入是( C ) (4分)
A. 1.25,1.25
B. 1.25 1.25
C.X=1.25,y=1.25
D.X=1.25 y=1.25
//格式一致
14.如果函数定义出现在函数调用之前,可以不必加函数原型声明。

T (1分)
T F
//1,要么是先使用,就不需要再定义函数了
例如:
void p()
{
//
}
void main()
{
p();
}
....
2,先定义再使用,这时候,必须先要定义函数,不然编译器不识别此函数的
void p();
void mian()

p();
}
void p()
{
//

//
15.有说明语句__。

(2分)
A.
B.
C.
D.
16.对于定义0为数字零),求字符串str的长度len和数组str的大小size,len和size分别是:C (2分)
A.12 ,13
B. 3 ,11
C. 3 ,9
D. 3 ,4
//\n\0在字符串中占一个字符 \000后面八进制数表示ascii的符
号。

17.有两个字符数组a,b,则以下正确的输入语句是(B) (1分)
A.
B.
C.
D.
//不要地址符。

18.静态变量的作用域是整个文件。

F (2分)
T F
//
对于C语言,静态变量也分全局静态变量和局部静态变量,对于全局静态变量,它的作用域是整个文本。

但是如果是局部静态变量则它的作用域仅仅是定义它的区域。

19.根据声明C)。

(2分)
A.a[9]
B.p[5]
C.a++
D.*p++
//D a是常量不能自增
20.__。

(2分)
A.
B.
C.
D.
//scanf("%d",p->age);这个是错误的,因为scanf输入时,要将值放到地址里,所以要加上&,&表示取址。

scanf("%s",pup[0].name);这一项是正确的,因为name本身就是字符数组,所以它的数组名就是字符串的首地址,所以符合要求;
scanf("%d",&pup[0].age); c)scanf("%d",&(p->sex));这两项也是正确的,解释和第一项一样。

21.在基类型相同的两个指针变量之间,不能进行的运算是(D)。

(2分)
A.<
B.=
C.+
D.–
//指针存的是内存的地址值, 假如两个指针, 一个指向0x80008000, 一个指向0x80008020;
A: 可以判断这两个指针哪个指向后面, 哪个指向前面.
B: 判断两个指针是否指向同一块内存地址
C: 指向相加, 那么大个数代表什么? 可能都越界了内存区域.
D: 相减得到两个指针的差值. 即他们之间相差多少.
22.以下哪个定义中的 C (2分)
A.
B.
C.
D.
//*p[10]是指针数组,其每个元素是指针。

23.直接访问就是直接利用变量的地址直接进行访问。

T (2分)
T F
//1.直接访问
按照C的方式,如果定义一个变量,系统会给这个变量分配一块内存,变量有两个属性,变量值和变量地址。

变量地址指示了该变量在内存中的存储位置,变量值是这块内存中的内容。

要访问这块内存空间上的内容,可以直接使用变量名。

2.间接访问
间接访问的含义是先从其它内存空间获得要访问的内存地址,根据得到的地址访问目的地址。

我来打个比方吧:
a. 直接访问某个地址,就相当于你知道某个物品放在某个抽屉里,然后你去那个抽屉,然后访问你的物品。

b. 间接访问就是,你知道某个抽屉放着一个纸条,纸条写着:某某物品存放于某某另外一个抽屉。

这样的话
a里面的抽屉,就是变量,
b里面存放纸条的抽屉,就是指针,指针的值,就是那个纸条,纸条指向另外一个抽屉(变量),另外一个抽屉存放的东西,就是一个变量的值。

24.函数的实参可以是常量,变量或表达式。

T (1分)
T F
25.在C 语言中,常量和变量都有数据类型。

T (1分)
T F
//常量:数值、字符、字符串。

则下面描述中正确的是(C)。

(2分)
A. 10 次
B.循环是无限循环
C.循环体语句一次也不执行
D.循环体语句执行一次
//赋值表达式的返回值为赋值符号右边的值。

m=0返回给while的是0,即假。

相关文档
最新文档