没有合适的资源?快使用搜索试试~ 我知道了~
北邮计算机学院考研复试08-12年上机真题及答案
需积分: 0 17 下载量 49 浏览量
2017-12-29
10:30:16
上传
评论 1
收藏 1.12MB PDF 举报
温馨提示
试读
57页
北邮计算机学院考研复试08-12年上机真题及答案:目前已有越来越多的高校采用上机考试的形式来考查学生的动手编程能力,对于以应试为主的大学教学模式,上机往往是学生的薄弱环节。
资源推荐
资源详情
资源评论
!
!
北京邮电大学计算机学院考研复
试! 2008%2012 年上机真题及答案
复试上机指导
1. 本真题只是提供辅助作用,关键还是研友平时动手能力练
习和对算法、数据结构的理解,参加过 ACM 的有一定优势
大家一定要在九度、北大或者杭电 OJ 刷题
2. 上机时,可以快速阅读所有的题目,按照从易到难的次序
做题,保证会的一定得分;
3. 熟悉编程环境,熟悉 c、c++的常用函数;
4. 为了快速测试代码的正确性,尤其是矩阵输入的情况,可
以利用标准输入重定向,
freopen(“c:\\input.txt”,”r”,stdin);加快
测试过程;
5. 注意程序边界条件的测试;
6. 如果你有什么疑问,或者我们提供的材料有问题,欢迎联
系我们:bwiunbuaa@163.com 或者到 kao400.com 给我
们留言。
!
!
2012 年上机真题
1.【问题描述】!
大家都知道,数据在计算机里中存储是以二进制的形式存储的。! 有一天,小明学了 C 语言
之后,他想知道一个类型为 unsigned! int! 类型的数字,存储在计算机中的二进制串是什么
样子的。! 你能帮帮小明吗?并且,小明不想要二进制串中前面的没有意义的 0 串,即要去
掉前导 0。!
输入:
第一行,一个数字 T(T<=1000), 表 示 下 面 要 求 的 数 字 的 个 数 。 !!!!!!!!!!接下来有 T 行,
每行有一个数字 n(0<=n<=10^8), 表 示 要 求 的 二 进 制 串 。!
输出:
输出共 T 行。每行输出求得的二进制串。!
输入样例:
5! !
23! !
535! !
2624! !
56275! !
989835!
输出样例:
10111! !
1000010111! !
101001000000! !
1101101111010011! !
11110001101010001011!
解题思路:
十进制数转 2 进制数,相对比较简单,也是基本的上机需要掌握的体型,具体代码参考代码部
分。!
代码:!
#include <stdio.h>
#include <stdlib.h>
/**
* 本代码用了递归
*将n转化为2进制输出,去除前导0,如果不用出除前导0,稍作修改即可,大家可以
尝试一下
*/
void binary(int n)
{
if(n>1){
binary(n/2);
!
!
putchar('0'+n%2);
}
else if(n == 1){
putchar('0'+1);
}
}
int main(){
int n;
int num[1024];
//freopen("/Users/bwiunbuaa/tmp/oj/bupt_121.in","r",stdin);
while(scanf("%d",&n) != EOF){
//读入n个整数,<100000000 用int足够了
int i;
for(i=0;i<n;i++){
scanf("%d",&num[i]);
}
for(i=0;i<n;i++){
binary(num[i]);
printf("\n");
}
}
return 0;
}
!
2.【问题描述】!
给你一个 n*n 的矩阵,!
𝑝11 𝑝12 … 𝑝1𝑛
𝑝21 𝑝22 … 𝑝2𝑛
… … … …
𝑝𝑛1 𝑝𝑛2 … 𝑝𝑛𝑛
!
求其矩阵的 k 次幂,即 P
k
!
输入:
第一行,一个整数 T(0<T<=10), 表 示 要 求 矩 阵 的 个 数 。 !!!!!!!!!!!
接下来有 T 组数据,每组数据格式如下:! 第一行:两个数据 n(2<=n<=10)、 k(1<=k<=5),
两个数字之间用一个空格隔开,其中 n 表示状况空间的总数,k 表示待求的转移概率矩阵的
步数。接下来有 n 行 n 列个正整数,其中,第 i 行第 j 列表示 pij,( 0<=pij<=10)。 另 外 ,
数据保证最后结果不会超过 10^8。!
输出:
输出为 T 组数据。!!!!!!!!!!!
每组数据为已知矩阵的 k 次幂,格式为:! n 行 n 列个正整数,每行数之间用空格隔开,注
!
!
意,每行最后一个数后面不应该有多余的空格。!
输入样例:
3
2 2
9 8
9 3
3 3
4 8 4
9 3 0
3 5 7
5 2
4 0 3 0 1
0 0 5 8 5
8 9 8 5 3
9 6 1 7 8
7 2 5 7 3
输出样例:
153 96
108 81
1216 1248 708
1089 927 504
1161 1151 739
47 29 41 22 16
147 103 73 116 94
162 108 153 168 126
163 67 112 158 122
152 93 93 111 97
解题思路:
该题也比较简单,按照矩阵的乘法定义来计算 k 次幂即可,如果你有矩阵乘法的优化算法,可
以在线下练习时使用,考试时不推荐,尽量减少出错可能和降低调试的难度。!
代码:!
#include <stdio.h>
#include <stdlib.h>
#define N 10 //矩阵维度最大值
void multiply(int m[N][N],int a[N][N],int b[N][N],int n)
{
int i,j,k;
for(i=0;i<n;i++){
for(j=0;j<n;j++){
m[i][j]=0;
!
!
for(k=0;k<n;k++){
m[i][j] += a[i][k]*b[k][j];
}
}
}
}
int main()
{
int T;
//freopen("/Users/bwiunbuaa/tmp/oj/bupt_122.in","r",stdin);
scanf("%d",&T);
int i;
for(i=0;i<T;i++){
int a[10][10],b[10][10];
int m[10][10];
int n,k; //矩阵的维数,k次幂
scanf("%d%d",&n,&k);
//读入数据
int ii,jj;
for(ii=0;ii<n;ii++){
for(jj=0;jj<n;jj++){
scanf("%d",&a[ii][jj]);
b[ii][jj]=a[ii][jj];
}
}
for(ii=0;ii<k-1;ii++){
multiply(m,a,b,n);
//将m的结果拷贝到数组b中
int i_inner,j_inner;
for(i_inner=0;i_inner<n;i_inner++){
for(j_inner=0;j_inner<n;j_inner++){
b[i_inner][j_inner]=m[i_inner][j_inner];
}
}
}
//输出结果
for(ii=0;ii<n;ii++){
for(jj=0;jj<n;jj++){
if(jj==n-1){
剩余56页未读,继续阅读
资源评论
xcxsxdxnx
- 粉丝: 0
- 资源: 9
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功