程序设计竞赛

上传人:枫** 文档编号:562865369 上传时间:2023-07-20 格式:DOCX 页数:11 大小:18.19KB
返回 下载 相关 举报
程序设计竞赛_第1页
第1页 / 共11页
程序设计竞赛_第2页
第2页 / 共11页
程序设计竞赛_第3页
第3页 / 共11页
程序设计竞赛_第4页
第4页 / 共11页
程序设计竞赛_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《程序设计竞赛》由会员分享,可在线阅读,更多相关《程序设计竞赛(11页珍藏版)》请在金锄头文库上搜索。

1、2014年秋季学期A卷、考查、开卷程序设计竞赛命题教师:陈国斌适用班级:XXXXX答卷说明:1.本试卷共2页,1 个大题,满分100分2.准带的用具或资料:学号:XXXXX 姓名:XXXXX 班别:XXXXX题号一总分评分人得分一、 编程题(本大题共3 小题,共100分)使用C/C+或Java语言完成以下各题设计、编程和执行,并提交报告。报 告包括各题解题代码和执行过程截图。1. 可以用一个网络地址和一个子网掩码描述一个子网。其中子网掩码包含32 个二进制位,前 32-n 位为 1,后 n 位为 0,网络地址的前 32-n 位任意, 后 n 位为 0。所有前 32-n 位和网络地址相同的 IP

2、 都属于此网络。例如,网络地址为 194.85.160.176,子网掩码为 255.255.255.248,则 该子网的 IP 地址范围是 194.85.160.176194.85.160.183。输入一些 IP 地址,求最小的网络(即包含IP地址最少的网络),包含所有这些输入地 址。例如,若输入 3 个 IP 地址:194.85.160.177、194.85.160.183、194. 85. 160. 178,包含上述3个地址的最小网络的网络地址为194.85.160.176,子网掩码为255.255.255.248。(30分)代码如下:#include #include #include

3、using namespace std;int toTen(int str)int i=0;for(int j=0;j8;j+)i=i+strj*(int)pow(2,7-j);return i;void to32Ip(intsecondIp32,int p)int a8;for(int i=0;i4;i+)toSecond(pi,a);for(int j=0;j8;j+)secondIpi*8+j=aj;void toIp(int p)for(int i=0;i4;i+)for(int j=0;j0;count-) strcount=0;str0=i;void main()int i;int

4、 ip34;int secondIp132;int secondIp232;int secondIp332;int dizhi32;int dizhi32;for(i=0;i3;i+)scanf(%d.%d.%d.%d,&ipi0,&ipi1,&ipi2,&ipi3);/ coutipi0.ipi1.ipi2.ipi3end l;to32Ip(secondIp1,ip0);to32Ip(secondIp2,ip1);to32Ip(secondIp3,ip2);for(i=0;i32;i+)if(!(secondIp1i=secondIp2i&secondIp1i=secondIp3i)brea

5、k;yanmai=1;dizhii=secondIp1i;for(;i32;i+)yanmai=0;dizhii=0;toIp(yanma);toIp(dizhi);cout 网络地址为:dizhi0.dizhi1.dizhi2.dizhi3endl;cout 子网掩码为: yanma0.yanma1.yanma2.yanma3endl;2. 输入一个包含“()”和“”的括号序列,判断是否合法。具体规则如 下:1)空串合法。2)如果 A 和 B 都合法,则 AB 合法。3)如果A合法,贝U (A)和B都合法。(40分) 程序代码实现如下:#include#include#define MAXS

6、IZE 1024typedef structchar dataMAXSIZE; int top;stack init() stack t; t=(Stack *)malloc(sizeof(Stack); t-top=-1;return t; int isEnpty(stack t) if(t-top=-1) return 1;else return 0; int push(stack t,char c) if(t-top=MAXSIZE) return 0;else t-top+; t-datat-top=c; return 1; int pop(stack t) char x; if(is

7、Enpty(t) return 0;else x=t-datat-top; t-top-; return 1; char look_top(stack t) char x; if(isEnpty(t) return 0;elsex=t-datat-top;return x;void main()char aMAXSIZE;int i=0;stack t1,t2;char x1;scanf(%s,a);t2=init();t1=init(); while(1)if(ai=(|ai=)|ai=)push(t1,ai);i+;if(ai=0)break;|ai=|ai=|ai/没有括号 if(isE

8、npty(t1) printf(Yesn);else while(1) x1=look_top(t1); if(x1=)|x1=|x1= push(t2,x1); pop(t1);elseif(x1=(&look_top(t2)=)|(x1=&look_top(t2)=) |(x1=&look_top(t2)=)pop(t1);pop(t2);elsepush(t2,x1);pop(t1);/printf(%d,t2-top);if(isEnpty(t1) break; if(isEnpty(t2)printf(YESn);elseprintf(NOn); system(pause);3. 给

9、出正整数n,则1到n这n个数可以构成n!种排列,把这些排列按照从 小到大的顺序(字典顺序)列出,如n=3时,列出1 2 3,1 3 2,2 1 3,2 3 1,3 1 2,3 2 1六个排列。给出某个排列,求出这个排列的下k个排列,如果遇到最后一个排列,则下 1排列为第1个排列,即排列1 2 3。比如:n二3, k=2给出排列2 3 1,则它的下1个排列为3 1 2,下2个排 列为 3 2 1,因此答案为 3 2 1第。(3页0 分共) 8 页程序实现代码如下:#includeint q;int equil(int sint n)/判断数组里的各元素是否互异int i;for(i=0;in-1

10、;i+) if(si=si+1)return 0;return 1; int compare(int aint n,int cint sint n)/判断两串数据是否一样int i;for(i=0;in;i+) if(ai!=csi)return 0;return 1; int arr(int cint n,int aint sint n)/输入 n 个数的一个排列并放入才cn中,再从asn中找出这个排列的位置 int i,j;prin tf(请输入一个排列:n); for(i=0;in;i+)scanf(%d ,ci); printf(n);queue(asn; for(i=0;is;i+)

11、for(j=0;jn;j+) if(compare(an,cin)p=i; q=p; break;if(q=p) break;return p; /获取1到void queue(int aint sint n)n 这 n 个数按从小到大顺序的所有排列int bn,j,i,t;int sum=0;for(i=0;in;i+)a0i=i+1; sum=10*sum+i; for(i=1;i=0;j-) bj=sum%10; sum=sum/10; if(equil(bn) for(j=0;jn;j+) aij=bj;break;sum=t;main()int n,k,m,i,s;prin tf(请输入组数:n);scanf(%dn,&m);for(i=0;im;i+)prin tf(请输入排列的个数:n); scanf(%d ,&n);for(i=1,s=1;i=n;i+)s=s*i;int asn,cn;prin tf(请输入第后多少个排列:n); scanf(%dn,&k);q=arr(cn,asn);/调用函数 arr()第 10 页 共 10 页for(i=0;in;i+)printf(%d ,aq+ki);第 11 页 共 11页

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号