本文主要是介绍北理计算机学院2001年机试真题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
北京理工大学计算机学院复试上机题目
由于编者水平有限,如有错误,请多多包涵。欢迎各位指正,如有交流请加QQ1585583870,转载请注明,谢谢合作!
A部分
1. 编写程序,计算下列分段函数 y=f(x)的值。
y= -x+2.5,0<= x <2
y=2-1.5(x-3)(x-3),2<= x<4
y=x/2-1.5,4<= x <6。
2. 编写程序,读入一个整数 N。若 N 为非负数,则计算 N 到 2N 之间的整数和;若 N 为一个负数,则求 2N 到 N 之间的整数和。
3. 设 N 是一个四位数,它的 9 倍恰好是其反序数(例如:1234的反序数是 4321),求 N 的值。
4. N 个人围成一圈顺序编号,从 1 号开始按 1、2、 3 顺序报数,报 3 者退出圈外,其余的人再从1、2、 3 开始报数,报 3 的人再退出圈外,依次类推。请按退出顺序输出每个退出人的原序号。要求使用环形链表编程。
#include<iostream>
using namespace std;struct Node{int number;Node *next;
};int main(){int n;cout<<"请输入人数n:";cin>>n;// 判错if(n<=0){cout<<"输入不合法!"<<endl;return 0;}// 构造循环链表Node *l,*p;l=(Node *)malloc(sizeof(Node));l->number=1;l->next=l;p=l;for(int i=2;i<=n;i++){Node *q;q=(Node *)malloc(sizeof(Node));q->number=i;q->next=p->next;p->next=q;p=q;}// 当前人数int k=n;// 现在,p结点指向lp=l;while(k>0){p=p->next;p=p->next;// 输出现在退出的位置cout<<p->number<<" ";// 删除结点if(p->next!=p){p->number=p->next->number;// 释放空间Node *q;q=p->next;p->next=q->next;free(q);}elsefree(p);k--;}return 0;
}
补充使用顺序表(数组)的做法:
#include<iostream>
using namespace std;int main(){int n,count=1,i=0;int p[100]={0};cout<<"请输入人数n:";cin>>n;// count记录退出的序号,i记录当前报数的位置,n是总人数while(count<=n){// 当遇到值为0,表明此位置还未退出,i++;否则,该位置已退出,忽略该位置for(int flag=1;flag<=3;i=(i+1)%n)if(p[i]==0)flag++;// 回退最后一次无效的i++;加n的作用是补正i=(i+n-1)%n;// 在数组当前位置上,记录退出的序号p[i]=count++;}// 按退出的顺序,输出位置for(int k=1;k<=n;k++)for(int j=0;j<n;j++)if(p[j]==k)cout<<j+1<<" ";cout<<endl;return 0;
}
B部分
1. 请输入高度 h,输入一个高为 h,上底边长为 h的等腰梯形(例如 h=4,图形如下)。
****
******
********
**********
#include<iostream>
using namespace std;int main(){int h;cout<<"请输入h的值:";cin>>h;for(int i=0;i<h;i++){for(int j=0;j<h-i-1;j++)cout<<" ";for(int k=0;k<h+i*2;k++)cout<<"*";cout<<endl;}return 0;
}
2. 请编写一个程序,从键盘上输入 n(n 的范围是1~20),求 n 的阶乘。
#include<iostream>
using namespace std;int f(int k){if(k==0)return 1;return k*f(k-1);
}int main(){int n;cin>>n;cout<<f(n)<<endl;return 0;
}
3. 从键盘上任意输入一个长度不超过 20 的字符串,对所输入的字符串,按照 ASCII 码的大小从小到大进行排序,请输出排序后的结果。
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;int main(){string str;cout<<"请输入字符串:";cin>>str;sort(str.begin(),str.end());cout<<"排序后的结果为:"<<str<<endl;return 0;
}
这篇关于北理计算机学院2001年机试真题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!