2019年潮南大学招收硕士研究生入学考试试题选择题
一、选择题
-
下列哪个不是int型常量? (D) A、2135u B、019 C、0x159G D、“123456” -
字符串结束符号是? (B) A、’ \t ’ B、‘ \0 ’ -
下列哪个不是算数运算符? -
int(*p)[4] (double) 是啥意思?
int(*p)[4]为指向数组的指针,即p为指向包含4个元素的一维数组的指针变量
- printf(%x", -1);的输出结果?//ffffffff
二,填空题
int al3][3]={{1,2},{3,7},{5,8}},s=0;
for(i=l;i<3;i++)
for(j=0;j<=ij++)
{
s+=a[j];
}
结果s= ()
-
16进制化为2进制,然后进行&,|,>>运算
for(i=0,j=9;i<6&&j>0;j--,i++)
{
s+=t;
}
- int x= 一个数; int s; s=x++*2/10;
求s=(数值不一定准确,大概就是考运算符优先级的考点)
三、判断题
刷两遍题库就可以了 ,没有啥给人印象深刻的题目
四、简答题(8分一道题)
- 函数调用时的传递方式有那些?
值传递、指针传递、引用传递、 值传递是指在调用函数时将实际多数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数。 引用传递是指在C++中,函数参数的传递方式有有引用传递。所谓引用传递是指在调用函数时将实际参数的地址传递到函数中,那么在函数中对参数所进行的修改,将影响到实际参数。
- 简述,冒泡排序,选择排序,简单排序的基本思想。
冒泡排列:从第一个元素开始,对数组中两两相邻的元素进行比较。将值较小的元素放在前面,值较大的元素放在后面,一轮比较完后,一个最大的数沉底成为数组中的最后一个元素,一些较小的数如同气泡一样上浮一个位置,n个数,经过n-1 轮比较后完成排序。
选择排序是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素, 存放在序列的起始位置,直到全部待排序的数据元素排完简单排序算法,就是从0开始,每次确定一个位置的元素。 假设当前需要确定的位置下标为 i,则将 i 处的元素与后面的元素逐个比较,并将每次比较结果中较小的元素存放在 i 处,从而保证 i 处一直保存着最小元素。
- 机器语言和高级语言的特点。(前年原题)
机器语言特点:机器语言能够被计算机立即识别并加以执行,具有执行速度快,占用内存少等优点、但对于使用者来说,用机器语育言编程序具有编写难,识别难,记忆难,查错难,交流难等缺点。
汇编语言特点:它比机器语言易学,易懂,具有通用性强易于移植等优点高级语言的语句功能强,它的一条语句往相当于许多条指令,因而用于翻译的程序要占用较多的存储空间,而且执行时间长,且不易精确掌握,故在高速实时控制中一般是不适用的.
高级语言特点:这种语言弥补了机器语言的不足,用汇编语言编写程序比用机器语言方便, 直观,易懂,易用,易记。可以编写出结构紧凑,运行时间精确的程序,所以,这种语言非常适合于实时控制的需要。
- 数组和链表的特点,异同。
数组优于链表的:
①.内存空间占用的少,因为链表节点会附加上一块或两块下一个节点的信息但是数组在建立时就固定了,所以也有可能会因为建立的数组过大或不足引起内存上的问题,
②.数组内的数据可随机访问,但链表不具备随机访问性,这个很容易理解。数组在内存里是连续的空间.比如如果个 数组地址从100到200,且每个元素占用两个字节,那么100-200之间的任何一个偶数都是数组元素的地址,可以直接访问,链表在内存地址可能是分散的,所以必须通过上一节点中的信息找能找到下一个节点
③.查找速度上.这个也是因为内存地址的连续性的问题;不罗索了。
链表优于数组的:
①.插入与删除的操作如果数组的中间插入一个元素,那么这个元素后的所有元素的内存地址都要往后移动,删除的话同理;只有对数据的最后一个元素进行插入删除操作时,才比较快;链表只需要更改有必要更改的节点内的节点信息就够了;并不需要更改节点的内存地址。
②.内存地址的利用率方面。不管你内存里还有多少空间,如果没办法一次性给出数组所需的要空间,那就会提示内存不足,磁盘空间整理的原因之一在这里;而链表可以是分散的空间地址.
③.链表的扩展性比数组好。因为一个数组建立后所占用的空间大小就是固定的如果满了就没法扩展.只能新建一个更大空间的数组,而链表不是固定的,可 以很方便的扩展,
五,案例分析(60分,每道30分)
- 输入一个整数n,求不大于n的最大素数。
(1)写出基本思想和关键步骤; (2)写出代码实现。
#include<iostream>
using namespace std;
int main()
{
int n;
cin >> n;
cout << 2 << endl;
for (int i = 3; i <= n; i += 2)
{
int k;
for (k = 3; k < i; k += 2)
{
if (i % k == 0)
break;
if (k * k > i)
break;
}
if (k * k > i)
cout << i << endl;
}
return 0;
}
- 用冒泡排序,排序一个数组,输入时用空格隔开每个数据,要求输出每趟排序后的情况。
如:输入:3 8 2 4 1 6 输出:3,2,4,1,6,8 //第一趟排序后的结果 1, 2,3,4, 6,8 //最后结果 (1)写出基本思想和关键步骤; (2)写出代码实现。
#include<stdio.h>
void print(int a[], int sz)
{
int i = 0;
for (i = 0; i < sz-1; i++)
{
printf("%d,", a[i]);
}
printf("%d", a[sz - 1]);
printf("\n");
}
void Bubble_sort(int a[], int sz)
{
int i = 0;
for (i = 0; i < sz - 1; i++)
{
printf("第%d次排序结果:", i + 1);
int j = 0;
int flag = 1;
for (j = 0; j < sz - 1 - i; j++)
{
if (a[j] > a[j + 1])
{
int tmp = a[j];
a[j] = a[j + 1];
a[j + 1] = tmp;
flag = 0;
}
}
print(a, sz);
if (flag == 1)
break;
}
}
int main()
{
int a[6] = { 0 };
int i = 0;
printf("输入:");
for (i = 0; i < 6; i++)
{
scanf("%d", &a[i]);
}
int sz = sizeof(a) / sizeof(a[0]);
printf("输出:\n");
Bubble_sort(a, sz);
return 0;
}
|