【PTA】20 - 分流考试真题(已完结)
目录
一、判断题
二、选择题
三、函数题
6-1 统计个位数字
6-2 求整数数组中的最大值
★6-3 整理奇偶数增强篇 - 双指针
6-4 统计字符串中数字字符的个数
6-5 求n×n方阵主副对角线元素之和
6-6 十进制转换二进制
6-7 在带头结点的单链表表尾处插入一个新元素 - 数据结构
四、编程题
★7-1 找鞍点
7-2 找出总分最高的学生 - 结构体
7-3 求数列之和[A]
一、判断题
1-1 十进制数 2019 对应的二进制表示为 0111 1100 0011。 ( F )
应该是0111 1110 0011
1-2 从信息的输入输出角度来说,磁盘驱动器和磁带机既可以看作输入设备,又可以看作输出设备 ( T )
1-3 #include <stdio.h>是一条编译预处理命令 。 ( T )
1-4 宏定义不存在类型问题,宏名无类型,它的参数也无类型。 ( T )
1-5 一个数组是由连续的一块内存单元组成的,指针变量就是这块连续内存单元的首地址。 ( F )
1-6 在使用结构指针时,->被称为指向运算符。 ( T )
1-7 C 程序中的注释相当于空白字符。 ( T )
1-8 如果数据规模为n,冒泡排序的时间复杂度是O(n2)。 ( T )
void bubbleSort(int a[])
{for(int i=0;i<a.length-1;i++) //控制比较轮次,一共 n-1 趟for(int j=0;j<a.length-1-i;j++) //控制两个挨着的元素进行比较if(a[j] > a[j+1]){int temp = a[j];a[j] = a[j+1];a[j+1] = temp;}
}
1-9 Non recursive programs are generally faster than equivalent recursive programs. However, recursive programs are in general much simpler and easier to understand.
( T )
非递归程序通常比等效的递归程序快。 然而,递归程序通常要简单得多,也更容易理解。
1-10 In most restaurants, we follow one principle called "First come, first served". This principle can be implemented by a stack. ( F )
在大多数餐馆,我们都遵循一个叫做“先到先得”的原则。这个原理可以通过堆栈来实现。
错 栈是先进后出
二、选择题
2-1 下列各种进制的数中最小的数是 ( D )
A.二进制数(11010111)B
B.八进制数(332)O
C.十六进制数(8B)H
D.十进制数(130)D
全部转化为10进制
A 215 B 218 C 139 D 130
2-2 常说一台微机的内存容量为2G,指的是( A )
A.2G字节
B.2G比特
C.2G字长
D.2G字
2-3 ______不是操作系统关心的主要问题. ( D )
A.管理计算机裸机
B.设计,提供用户程序与计算机硬件系统的界面
C.管理计算机系统资源
D.高级程序设计语言的编译器
2-4 内存中每个基本单位,都被赋予一个唯一的序号,称为______ ( A )
A.地址
B.字节
C.字段
D.容量
2-5 数字字符"8"的ASCII码的十进制是56,那么数字字符"1"的ASCII码的十进制是___D___
A.54
B.58
C.60
D.49
2-6 以下关于线性表的叙述中正确的是 ( D )
A.每个元素都有一个前趋和后继元素
B.线性表中至少有一个元素
C.线性表中元素的排列次序必须是由小到大或由大到小
D.除第一个和最后一个元素外,其余每个元素都有一个且仅有一个前趋和后继元素
2-7 在单链表中,将 s 所指新结点插入到 p 所指结点之后,其语句应该为 ▁▁B▁▁▁ 。
A.p->next = s; s->next = p->next;
B.s->next = p->next; p->next = s;
C.s->next = p->next; p->next = s->next;
D.p->next = s->next; s->next = p->next;
2-8 已知二维数组 A 按行优先方式存储,每个元素占用 1 个存储单元。若元素 A[0][0] 的存储地址是 100,A[3][3] 的存储地址是 220,则元素 A[5][5] 的存储地址是: ( B )
A.295
B.300
C.301
D.306
按行优先 设每行有n个元素 由A[0][0]和A[3][3]的存储地址可知A[3][3]是二维数组A中的第121个元素 则n×3+4=121 (4是0 1 2 3)则n=39 则A[5][5]=5×39+5+100=300 (5是0 1 2 3 4)
2-9 Given the popping sequence of a stack as { 1, 2, 3, 4, 5, 6 }. Among the following, the impossible pushing sequence is: ( D )
A.3 2 1 6 5 4
B.6 5 1 2 3 4
C.6 5 4 1 2 3
D.4 6 5 1 3 2
2-10 The following list is a series of operations for a stack: ( C )
- push 1
- push 2
- push 3
- pop
- pop
- push 4
- push 5
- pop
- push 6
- push 7
- pop
- pop
- pop
- push 8
- pop
- push 9
- pop
- pop
Which is the correct pop-up sequence?
A.1 2 3 4 5 6 7 8 9
B.9 8 7 6 5 4 3 2 1
C.3 2 5 7 6 4 8 9 1
D.3 2 5 7 4 6 9 8 1
2-11 队列的“先进先出”特性是指( D ) 。
A.最早插入队列中的元素总是最后被删除
B.当同时进行插入、删除操作时,总是插入操作优先
C.每当有删除操作时,总是要先做一次插入操作
D.每次从队列中删除的总是最早插入的元素
2-12 微型计算机采用总线结构连接CPU.内存和外设,总线由三部分组成,它包括__C___
A.控制总线.地址总线和运算总线
B.地址总线.逻辑总线和信号总线
C.数据总线.地址总线和控制总线
D.数据总线.传输总线和通信总线
2-13 摩尔定律是指___C____。
A.芯片集成晶体管的能力每年增长一倍,其计算能力也增长一倍
B.芯片集成晶体管的能力每两年增长一倍,其计算能力也增长一倍
C.芯片集成晶体管的能力每18个月增长一倍,其计算能力也增长一倍
D.芯片集成晶体管的能力每6个月增长一倍,其计算能力也增长一倍
2-14 算法的时间复杂度取决于( A )
A.问题的规模
B.计算环境
C.程序的执行时间
D.计算机cpu
2-15 将十六进制数586转换成16位的二进制数,应该是___C__。
A.0000 0101 1000 0110
B.0110 1000 0101 0000
C.0101 1000 0110 0000
D.0000 0110 1000 0101
0101 1000 0110 0000 (每一位8 4 2 1法)
2-16 哪一种语言被称为低级语言? ( B )
A.C++
B.汇编语言
C.Java
D.Python
2-17 第一代电子计算机采用的电子元器件是( B )
A.晶体管
B.电子管
C.集成电路
D.大规模集成电路
1.代采用电子管
2.代采用晶体管
3.代采用中小规模集成电路
4.代采用超大规模集成电路
2-18 对算法的正确描述是__D__。
A.解决一个问题只有一种算法
B.对于所有问题都能找到实际可行的算法
C.算法包含语句越少,算法越先进
D.解决一个问题可以有多种算法
2-19 最近我国研制成功的具有自己知识产权的微处理器的名称是( C )。
A.奔芯
B.长城芯
C.龙芯
D.新芯
2-20 微型计算机的性能主要取决于( C )。
A.内存
B.主板
C.中央处理器
D.硬盘
三、函数题
6-1 统计个位数字
本题要求实现一个函数,可统计任一整数中某个位数出现的次数。例如-21252中,2出现了3次,则该函数应该返回3。
函数接口定义:
int Count_Digit ( const int N, const int D );
其中
N
和D
都是用户传入的参数。N
的值不超过int
的范围;D
是[0, 9]区间内的个位数。函数须返回N
中D
出现的次数。裁判测试程序样例:
#include <stdio.h> int Count_Digit ( const int N, const int D ); int main() { int N, D; scanf("%d %d", &N, &D); printf("%d\n", Count_Digit(N, D)); return 0; } /* 你的代码将被嵌在这里 */
输入样例:
-21252 2
输出样例:
3
int Count_Digit ( const int N, const int D )
{int x,cnt=0;int n=N; //这里替换是因为 上面是const int 即N是不能改变的量if(n<0) n*=-1; //这里负数要变成正数do{x=n%10;if(x==D) cnt++;n/=10;}while(n); //这里用do while 是为了包含N=0 D=0的情况return cnt;
}
6-2 求整数数组中的最大值
用指针作函数参数,求一维整数数组中的最大元素。
函数接口定义:
int findMax(int *p,int n);
p为指向数组的指针,n 为数组元素个数。函数值为数组元素的最大值。
裁判测试程序样例:
#include <stdio.h>void ArrayRead(int *p,int n) //向数组中输入数据 {for(int i=0;i<n;i++)scanf("%d",&p[i]); }/* 你编写的函数放在这里 */int main() {int n;scanf("%d",&n); //输入数组元素个数int a[n]; //声明一个具有n个元素的数组aArrayRead(a,n); //给数a组输入数据printf("Max = %d\n",findMax(a,n));return 0; }
输入样例:
10 27 58 41 25 28 98 16 65 87 62
输出样例:
Max = 98
int findMax(int *p,int n) //这个指针p指向主函数传来的a数组
{int max=p[0];for(int i=1;i<n;i++)if(max<p[i]) max=p[i];return max;
}
★6-3 整理奇偶数增强篇 - 双指针
本题要求实现一个函数,将数组中的奇数元素排在前半段,偶数排在后半段。
此方法采用从前往后找偶数,再从后往前找奇数的方法,找到后两者交换。
如1,2,3,4,7,6,5经过函数整理后变成1,5,3,7,4,6,2。其中2和5进行了交换,4和7进行了交换。
函数接口定义:
void oddeven(int a[],int n);
其中 n 为数据元素个数。
裁判测试程序样例:
#include <stdio.h> #define N 20void oddeven(int a[],int n);int main() {int a[N],i,n;scanf("%d",&n);for(i=0;i<n;i++)scanf("%d",&a[i]);oddeven(a,n);for(i=0;i<n;i++)printf("%d ",a[i]);return 0; }/* 请在这里填写答案 */
输入样例:
7 1 2 3 4 7 6 5
输出样例:
1 5 3 7 4 6 2
void oddeven(int a[],int n)
{int t,l=0,r=n-1; //l是左指针 r是右指针while(l<r){while(a[l]%2!=0) l++; //遇到偶数停止while(a[r]%2==0) r--; //遇到奇数停止if(l<r){t=a[l];a[l]=a[r];a[r]=t;}}
}
6-4 统计字符串中数字字符的个数
编写函数,统计字符串中数字字符的个数。字符串的长度不超过1000。函数的接口定义如下:
函数接口定义:
int DigitalStatistics(char *p);
p是指向字符串的指针。函数的返回值是统计结果。
裁判测试程序样例:
#include <stdio.h> #include <string.h> /* 你编写的函数放在这里 */ int main() {char str[10001];gets(str);printf("Digital = %d\n",DigitalStatistics(str));return 0; }
输入样例:
123tygxui70xA
输出样例:
Digital = 5
int DigitalStatistics(char *p)
{int digital=0;for(int i=0;p[i]!='\0';i++){if(p[i]>='0'&&p[i]<='9')digital++;}return digital;
}
6-5 求n×n方阵主副对角线元素之和
给定一个n×n的方阵(1⩽n⩽10),本题要求计算该方阵主对角线和副对角线所有元素之和。主对角线为从方阵的左上角至右下角的连线,副对角线为从方阵的右上到左下角的连线。
要求:
编写函数按照题意计算元素之和。
函数接口定义:
int sumMatrix(int (*a)[N],int n);
指针
a
指向了一个10×10的方阵,n
为a指向的矩阵的阶数裁判测试程序样例:
#include<stdio.h> #define N 10 void createMatrix(int (*a)[N],int n) {for(int i=0; i<n; i++){for(int j=0; j<n; j++){scanf("%d",&a[i][j]);}} }/* 请在这里填写答案 */int main() {int a[N][N];createMatrix(a);printf("%d\n",sumMatrix(a));return 0; }
输入格式:
在第一行给出方阵的阶数n,随后给出n行数,每行n个数,表示方阵中的元素。
输出格式:
输出求和结果
输入样例:
10 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10
输出样例:
110
int sumMatrix(int (*a)[N],int n)
{int sum=0;for(int i=0;i<n;i++)for(int j=0;j<n;j++){if(i==j||i+j==n-1)sum+=a[i][j];}return sum;
}
6-6 十进制转换二进制
本题要求实现一个函数,将非负整数n转换为二进制后输出。
函数接口定义:
void dectobin( int n );
裁判测试程序样例:
#include <stdio.h>void dectobin( int n );int main() {int n;scanf("%d", &n);dectobin(n);return 0; }/* 你的代码将被嵌在这里 */
输入样例:
10
输出样例:
1010
void dectobin( int n )
{int sum=0,t=1;while(n){sum+=n%2*t;t*=10;n/=2;}printf("%d",sum);
}
6-7 在带头结点的单链表表尾处插入一个新元素 - 数据结构
本题要求实现一个函数,在带头结点的单链表表尾处插入一个新元素e。
函数接口定义:
void insert ( LinkList L,ElemType e);
L是单链表的头指针,e是插入的数据元素。
裁判测试程序样例:
#include <stdio.h> #include <stdlib.h>typedef int ElemType;typedef struct LNode {ElemType data;struct LNode *next; }LNode,*LinkList;LinkList Create(); void print(LinkList L); void insert ( LinkList L,ElemType e);int main() {int e;LinkList L = Create();print(L);printf("\n");scanf("%d",&e);insert(L,e);print(L);return 0; }LinkList Create() {LinkList L,p,s;ElemType e;L = (LinkList)malloc(sizeof(LNode));p=L;scanf("%d",&e);while(e!=-1){s = (LinkList)malloc(sizeof(LNode));s->data=e;p->next = s;p=s;scanf("%d",&e);}p->next=NULL;return L; }void print(LinkList L) {LinkList p;p=L->next;while (p){printf("%d ", p->data);p =p->next;} }/* 请在这里填写答案 */
输入样例:
1 2 3 4 5 6 -1 100
输出样例:
1 2 3 4 5 6 1 2 3 4 5 6 100
void insert ( LinkList L,ElemType e)
{LinkList p,q;q = (LinkList)malloc(sizeof(LNode));q->data = e;q->next = NULL;p = L;while(p ->next!= NULL)p = p->next;p->next = q;
}
四、编程题
★7-1 找鞍点
一个矩阵元素的“鞍点”是指该位置上的元素值在该行上最大、在该列上最小。
本题要求编写程序,求一个给定的n阶方阵的鞍点。
输入格式:
输入第一行给出一个正整数n(1≤n≤6)。随后n行,每行给出n个整数,其间以空格分隔。
输出格式:
输出在一行中按照“行下标 列下标”(下标从0开始)的格式输出鞍点的位置。如果鞍点不存在,则输出“NONE”。题目保证给出的矩阵至多存在一个鞍点。
输入样例1:
4 1 7 4 1 4 8 3 6 1 6 1 2 0 7 8 9
输出样例1:
2 1
输入样例2:
2 1 7 4 1
输出样例2:
NONE
#include <stdio.h>
int main()
{int i,j,k,n,a[100][100];scanf("%d",&n);for(i=0;i<n;i++)for(j=0;j<n;j++)scanf("%d",&a[i][j]);for(i=0;i<n;i++)for(j=0;j<n;j++){ int max=a[i][j],min=a[i][j];for(k=0;k<n;k++){if(max<a[i][k]) max=a[i][k];if(min>a[k][j]) min=a[k][j];}if(max==a[i][j]&&min==a[i][j]){printf("%d %d",i,j);return 0;}}printf("NONE");
}
7-2 找出总分最高的学生 - 结构体
给定N个学生的基本信息,包括学号(由5个数字组成的字符串)、姓名(长度小于10的不包含空白字符的非空字符串)和3门课程的成绩([0,100]区间内的整数),要求输出总分最高学生的姓名、学号和总分。
输入格式:
输入在一行中给出正整数N(≤10)。随后N行,每行给出一位学生的信息,格式为“学号 姓名 成绩1 成绩2 成绩3”,中间以空格分隔。
输出格式:
在一行中输出总分最高学生的姓名、学号和总分,间隔一个空格。题目保证这样的学生是唯一的。
输入样例:
5 00001 huanglan 78 83 75 00002 wanghai 76 80 77 00003 shenqiang 87 83 76 10001 zhangfeng 92 88 78 21987 zhangmeng 80 82 75
输出样例:
zhangfeng 10001 258
#include <stdio.h>struct student
{char sn[10];char name[20];int s1,s2,s3;int sum;
};int main()
{struct student stu[100];int N,i;scanf("%d",&N);for(i=0;i<N;i++){stu[i].sum=0;scanf("%s %s %d %d %d",&stu[i].sn,&stu[i].name,&stu[i].s1,&stu[i].s2,&stu[i].s3);stu[i].sum = stu[i].s1+stu[i].s2+stu[i].s3;}int max=stu[0].sum;int k=0;for(i=1;i<N;i++){if(max<stu[i].sum){ max=stu[i].sum;k=i;}}printf("%s %s %d",stu[k].name,stu[k].sn,stu[k].sum);
}
7-3 求数列之和[A]
给定一个数字A (1⩽A⩽9)以及一个非负整数N (0⩽N⩽15),编程计算sum=A+AA+AAA+⋯+AA⋯A(N个A), 例如当A=2,N=3时,S=2+22+222=246。
输入格式:
在一行内输入数字A与非负整数N。数与数之间用空格间隔。
输出格式:
按照
S = xxx
的格式输出其N项之和S的值。输入样例:
2 3
输出样例:
在这里给出相应的输出。例如:
S = 246
#include <stdio.h>
#include <math.h>int main()
{int N,A;double sum=0,S=0;scanf("%d %d",&A,&N);for(int i=0;i<N;i++){sum+=A*pow(10,i);S+=sum;}printf("S = %.0f",S);}
【PTA】20 - 分流考试真题(已完结)相关推荐
- 【2023年最新版考试真题分享】 Apsara Clouder云计算专项技能认证:云服务器ECS入门【已通过】
[2023年最新版考试真题分享] Apsara Clouder云计算专项技能认证:云服务器ECS入门[已通过] 考试入口:https://edu.aliyun.com/certification/cl ...
- 2009年出现的计算机术语,2009年计算机一级考试真题及答案
2009年计算机一级考试真题及答案 一.选择题 1.在计算机领域中通常用MIPS来描述______. A.计算机的运算速度 B.计算机的可靠性 C.计算机的可运行性 D.计算机的可扩充性 2.微型计算 ...
- c语言省二历年真题讲解安徽,安徽省计算机等级二考试真题C语言年12月.doc
安徽省计算机等级二考试真题C语言年12月 机密☆启用前 二〇一三年下半年全国高等学校(安徽考区) 计算机水平考试试卷 (二级 C语言程序设计) 考生须知: 1.请将准考证号末两位填在试卷第2页右上方的 ...
- 安徽省2012年下半年计算机水平考试(二级 c语言程序设计),安徽省计算机等级级考试真题C语言2012年12月.doc...
安徽省计算机等级级考试真题C语言2012年12月,安徽省c语言二级考试,安徽省公务员考试真题,安徽省遴选考试真题,计算机等级二级c语言,c语言二级考试真题,江苏省计算机等级真题,安徽省二级c语言,计算 ...
- 计算机二级ms真题及答案网盘,全国计算机二级MS Office考试真题及答案
计算机二级考试是全国计算机等级考试四个等级中的一个等级,下面小编整理了计全国计算机二级MS Office考试真题及答案,大家快来检测吧! 选择题 1.下列叙述中错误的是(). A.对于各种特定的输入, ...
- 全国计算机等级考试office无纸化考试,全国计算机等级考试真题汇编与专用题库 二级MS Office高级应用 2016年无纸化考试专用...
<全国计算机等级考试真题汇编与专用题库--二级MS Office高级应用>是依据教育部考试中心颁布的<全国计算机等级考试大纲>及无纸化真考题库编写而成的.<全国计算机等级 ...
- 陕师大民教育计算机试题,陕师大计算机研究生考试真题2010年试题.doc
陕师大计算机研究生考试真题2010年试题 ?注意事项: 1.? 请将答案直接做到答题纸上,做在试题纸上无效. 除答题纸上规定的位置外,不得在卷面上出现姓名.准考证号或其它标志,否则按违纪处理. 本试题 ...
- Apsara Clouder云计算专项技能认证:云服务器ECS入门[考试真题分享]
Apsara Clouder云计算专项技能认证:云服务器ECS入门[认证考试真题分享](答案仅供参考) 单选13道题 1.下列哪一个不是重置ECS密码的步骤? A.查看实例详情 B.进入控制台 C.远 ...
- html测试题英语,北大PKU-GATE考试真题-题库
原标题:北大PKU-GATE考试真题-题库 一.关于报名 1.报名时间 2019年北京大学博士招考报名即将开始,今年研究生院并没有规定统一的网上报名时间,而是让各个学院自行设定.绝大部分学院开始报名的 ...
最新文章
- 算法回顾(三) 二分查找
- 记一次Socket.IO长链服务的性能压测
- roobo机器人怎么唱歌_日本“观音”机器人问世,可以陪僧人念佛经
- 数据库原理与应用(SQL Server)笔记 第八章 用户自定义数据类型与变量
- Angular ngTemplateOutlet 元素的学习笔记
- C语言 memset函数简单实现
- 《神经网络与深度学习》最新版!
- BZOJ2460: [BeiJing2011]元素(线性基+贪心)
- safari浏览器中的菜单栏中,显示[开发]按钮
- Windows Server 2012安装vc++组件失败
- JavaWEB开发国际化
- TLS回调函数以及反调试简单使用
- Java实现多元t分布函数(Multivariate t distributions)
- 五大主流浏览器内核的源起以及国内各大浏览器内核总结
- 2021年最好用&完全免费的图片压缩网站、软件推荐(包括GIF)
- 贪吃蛇java游戏代码_java实现贪吃蛇游戏代码(附完整源码)
- 《自然》:深度学习超分辨显微成像方法
- R语言ggplot2可视化格式化轴标签:用逗号格式化ggplot2轴标签、在轴标签数值中加入符号标签(货币符号)
- Egret之Eui.Button换肤
- 第一章:python入门储备知识