中国海洋大学2017春上机试题高档题答案.doc_第1页
中国海洋大学2017春上机试题高档题答案.doc_第2页
中国海洋大学2017春上机试题高档题答案.doc_第3页
中国海洋大学2017春上机试题高档题答案.doc_第4页
中国海洋大学2017春上机试题高档题答案.doc_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

高等1【问题描述】将整型参数x中每一位上为偶数的数依次取出,构成一个新数返回。高位仍在高位,低位仍在低位。【输入形式】从标准输入中输入一个长整形数【输出形式】将生成的序列输出到标准输出中【样例输入】x=124578902【样例输出】y=24802#includevoid main()long fun(long);long x,y;scanf(%ld,&x);y=fun(x);printf(%ld,y);long fun(long x)int i,num,wei;long s=0;wei=1;for(i=0;x0;i+)num=x%10;if(num%2=0)s=s+num*wei;wei=wei*10;x=(x-num)/10;return s;2【问题描述】计算并返回满足表达式: 1+(1+2)+(1+2+3)+(1+2+3+4)+(1+2+3+n)=m 最大的n。【输入形式】从标准输入中输入一个长整形数m【输出形式】将生成的最大n输出到标准输出中【样例输入】m=10000【样例输出】n=38#includevoid main()int m,n;printf(m=);scanf(%d,&m);n=fun(m);printf(n=%d,n);int fun(int m)int n,i;int s=0;for(n=1;s=m;n+)for(i=1;i=n;i+)s=s+i;return n-2;3【问题描述】输出比x大的最初k(k1000)个素数,x和k键盘输入,输出时用一个空格分隔数据。注意最小的素数是 2 。【样例输入】7 10【样例输出】11 13 17 19 23 29 31 37 41 43【样例说明】-7 10【样例输出】2 3 5 7 11 13 17 19 23 29#include#includevoid main()void fun(int,int);int x,k;scanf(%d%d,&x,&k);if(x=2) /x2) /x2时素数由x+1开始找起;x=x+1;fun(x,k);void fun(int n,int k)int j,i;j=0; /记录输出的素数数量for(;jk;n+)for(i=2;isqrt(n)printf(%d ,n);j+;4【问题描述】字符串str中单词以空格作分隔,如果单词之间不止一个空格,则删除多余的空格,使单词之间只保留一个空格。字符串开始的空格也只保留一个。【输入形式】从标准输入中输入字符串【输出形式】将生成的序列输出到标准输出中【样例输入】Its 10:10 oclock , I am late.【样例输出】Its 10:10 oclock , I am late. #include#include#includevoid main()int i,n;char s1000; /测试数据或许很长gets(s);for(i=0;si!=0;i+)if(si= &si+1= )for(n=i;sn!=0;n+)sn=sn+1;i-; /因为可能有两个以上空格相连的情况,需要退位检测接下来还有没有空格puts(s);5!【问题描述】有int型56二维数组,分别将每一行的最大值与本行的最后一个数据(第6-1列数据)对调,其余数据保持不变。然后按每一行的最大值对二维数据各行降序排序并输出变换后的数组。【输入形式】从标准输入中输入一个5*6的二维数组【输出形式】将生成的二维数组输出到标准输出中【样例输入】(输入的数据的范围【999,-999】)11 52 43 4 25 2222 33 46 58 16 4783 42 54 26 47 0 4 5 6 7 8 9 45 96 17 18 39 2 【样例输出】(输出时用格式符%5d)45 2 17 18 39 960 42 54 26 47 8322 33 46 47 16 5811 22 43 4 25 524 5 6 7 8 9#define M 5#define N 6#includeint main()void fun(int aMN);int aMN=11,52,43,4,25,22,22,33,46,58,16,47,83,42,54,26,47,0,4,5,6,7,8,9,45,96,17,18,39,2;int m,n; /m:记录行;n:记录列fun(a);for(m=0;mM;m+)for(n=0;nN;n+)printf(%5d,amn);printf(n);void fun(int aMN)int m,n,k,i,t;for(m=0;mM;m+)k=0; /k:记录第二下标for(n=1;nN;n+)if(amkamn)k=n; /循环后k为最大数值的第二下标t=amk;amk=amN-1;amN-1=t;for(m=0;mM-1;m+)k=m; /k:记录第一下标for(n=m+1;nM;n+)if(akN-1anN-1)k=n; /循环后k为最大数值的第一下标if(m!=k)for(i=0;iN;i+)t=aki;aki=ami;ami=t; /将第k行与第m(m=0,1,2,3,4)行交换;6【问题描述】在字符串s中,每两个字母之间加一个*,其余字符保持不变并输出字符串。【输入形式】从标准输入中输入一个字符串【输出形式】将生成的字符串序列输出到标准输出中【样例输入】I had 123_book.【样例输出】I h*a*d 123_b*o*o*k.#include#includevoid main()char s1000;int l,i;gets(s);l=strlen(s);for(i=0;i=a&si=A&si=a&si+1=A&si+1=Z)printf(%c*,si);else printf(%c,si);7【问题描述】实现十进制长整型数x到二进制的转换。输入一个十进制数,将其转换为二进制数以字符串形式存放于数组中并输出。【输入形式】从标准输入中输入一个长整型数【输出形式】将转换后的二进制数输出【样例输入】13【样例输出】1101【样例说明】考虑正数、负数和零的情况/除2取余,倒序输出#includevoid main()int x,num,n100,i=0;scanf(%d,&x);if(x=0)n0=0;if(x0)x=-x;while(x!=0)num=x%2;ni=num;i+;x=x/2;i-;ni=-ni; /x0)while(x!=0)num=x%2;ni=num;i+;x=x/2; i-; /因为上方的i+最终多加一位for(;i=0;i-)printf(%d,ni);8【问题描述】统计字符串str中不同字符的个数输出。【输入形式】从标准输入中输入一个字符串【输出形式】将生成的个数输出到标准输出中【样例输入】One world,One dream!【样例输出】13【样例说明】统计包含标点符号和空格,大写和小写视为不同字符。#include#includevoid main()char s100,key; /由s0开始一个个作为key,扫描其后的字符是否为keyint l,i,j,num;gets(s);l=strlen(s);num=l; /num初始值为字符串长度,扫描到相同字符时才减for(i=0;il;i+)key=si;if(si!=NULL)for(j=i+1;jl;j+)if(sj=key)num-;sj=NULL; /若sj与之前字符相同,在总数中减去其后将其置为NULL,以防再次成为keyprintf(%d,num);9【问题描述】输入一个正整数n,计算1-1/4+1/7-1/10+1/13-1/16+的前n 项之和,输出时保留3位小数。【输入形式】从键盘输入一个正整数n。【输入输出样例1】(下划线部分表示输入)Enter n: 3sum=0.893#includevoid main()int fm=-2,i,n;double sum=0;printf(Enter n: );scanf(%d,&n);for(i=1;i=n;i+)fm=fm+3;if(i%2!=0)sum=sum+1.0/fm;elsesum=sum-1.0/fm;printf(sum=%.3lf,sum);10【问题描述】输入2个正整数m和n(m1,n1000),输出m n 之间所有Fibonacci数的个数及值要求定义并调用函数fib(k),它的功能是返回第k项Fibonacci 数例如,fib(7)的返回值是13【输入形式】从标准输入中输入一个范围m n(m n之间用空格分隔)【输出形式】将生成的个数输出到标准输出中,并输出fibonacci数列(冒号后无空格)【样例输入】1 5【样例输出】5 fib:1 1 2 3 5#includevoid main()int fib(int);int m,n,num,i,j=0; /num为斐波那契数列的数,j用于计数int a100;scanf(%d %d,&m,&n);for(i=1;i+)num=fib(i);if(num=m&numn)break;printf(%d fib:,j);for(i=0;ij;i+)printf(%d ,ai);int fib(int n)if(n=1|n=2)return 1;else return fib(n-2)+fib(n-1);11【问题描述】统计字符串str中单词的个数。单词之间以空格,逗号,句号作分隔,数字也看做单词。单词之间可能不止一个分隔符。【输入形式】从标准输入中输入一组字符串【输出形式】将生成的个数输出到标准输出中【样例输入】Its 10:10 oclock ,I am

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论