收藏 分销(赏)

中国海洋大学春上机试题高档题答案.doc

上传人:天**** 文档编号:4872346 上传时间:2024-10-16 格式:DOC 页数:12 大小:38.50KB 下载积分:8 金币
下载 相关 举报
中国海洋大学春上机试题高档题答案.doc_第1页
第1页 / 共12页
中国海洋大学春上机试题高档题答案.doc_第2页
第2页 / 共12页


点击查看更多>>
资源描述
精品文档 高等 1 【问题描述】将整型参数x中每一位上为偶数的数依次取出,构成一个新数返回。高位仍在高位,低位仍在低位。 【输入形式】从标准输入中输入一个长整形数 【输出形式】将生成的序列输出到标准输出中 【样例输入】x=124578902 【样例输出】y=24802 #include<stdio.h> void 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;x>0;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 #include<stdio.h> void 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(k<1000)个素数,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<stdio.h> #include<math.h> void main() { void fun(int,int); int x,k; scanf("%d%d",&x,&k); if(x<=2) //x<=2时素数由2找起 { x=2; fun(x,k); } if(x>2) //x>2时素数由x+1开始找起; { x=x+1; fun(x,k); } } void fun(int n,int k) { int j,i; j=0; //记录输出的素数数量 for(;j<k;n++) { for(i=2;i<=sqrt(n);i++) { if(n%i==0)break; } if(i>sqrt(n)) { printf("%d ",n); j++; } } } 4 【问题描述】字符串str中单词以空格作分隔,如果单词之间不止一个空格,则删除多余的空格,使单词之间只保留一个空格。字符串开始的空格也只保留一个。 【输入形式】从标准输入中输入字符串 【输出形式】将生成的序列输出到标准输出中 【样例输入】It's    10:10  o'clock  ,   I  am  late.  【样例输出】It's 10:10 o'clock , I am late.    #include<stdio.h> #include<stdio.h> #include<string.h> void main() { int i,n; char s[1000]; //测试数据或许很长 gets(s); for(i=0;s[i]!='\0';i++) { if(s[i]==' '&&s[i+1]==' ') { for(n=i;s[n]!='\0';n++)s[n]=s[n+1]; i--; //因为可能有两个以上空格相连的情况,需要退位检测接下来还有没有空格 } } puts(s); } 5 !【问题描述】 有int型5×6二维数组,分别将每一行的最大值与本行的最后一个数据(第6-1列数据)对调,其余数据保持不变。然后按每一行的最大值对二维数据各行降序排序并输出变换后的数组。 【输入形式】 从标准输入中输入一个5*6的二维数组 【输出形式】 将生成的二维数组输出到标准输出中 【样例输入】(输入的数据的范围【999,-999】) 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   【样例输出】(输出时用格式符%5d) 45   2  17  18  39  96  0  42  54  26  47  83 22  33  46  47  16  58 11  22  43   4  25  52  4   5   6   7   8   9 #define M 5 #define N 6 #include<stdio.h> int main() { void fun(int a[M][N]); int a[M][N]={{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;m<M;m++) { for(n=0;n<N;n++)printf("%5d",a[m][n]); printf("\n"); } } void fun(int a[M][N]) { int m,n,k,i,t; for(m=0;m<M;m++) { k=0; //k:记录第二下标 for(n=1;n<N;n++) { if(a[m][k]<a[m][n])k=n; //循环后k为最大数值的第二下标 t=a[m][k]; a[m][k]=a[m][N-1]; a[m][N-1]=t; } } for(m=0;m<M-1;m++) { k=m; //k:记录第一下标 for(n=m+1;n<M;n++) { if(a[k][N-1]<a[n][N-1])k=n; //循环后k为最大数值的第一下标 if(m!=k) { for(i=0;i<N;i++) { t=a[k][i]; a[k][i]=a[m][i]; a[m][i]=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<stdio.h> #include<string.h> void main() { char s[1000]; int l,i; gets(s); l=strlen(s); for(i=0;i<l;i++) { if(((s[i]>='a'&&s[i]<='z')||(s[i]>='A'&&s[i]<='Z'))&&((s[i+1]>='a'&&s[i+1]<='z')||(s[i+1]>='A'&&s[i+1]<='Z'))) printf("%c*",s[i]); else printf("%c",s[i]); } } 7 【问题描述】实现十进制长整型数x到二进制的转换。输入一个十进制数,将其转换为二进制数以字符串形式存放于数组中并输出。 【输入形式】 从标准输入中输入一个长整型数 【输出形式】 将转换后的二进制数输出 【样例输入】 13 【样例输出】 1101 【样例说明】 考虑正数、负数和零的情况 //除2取余,倒序输出 #include<stdio.h> void main() { int x,num,n[100],i=0; scanf("%d",&x); if(x==0)n[0]=0; if(x<0) { x=-x; while(x!=0) { num=x%2; n[i]=num; i++; x=x/2; } i--; n[i]=-n[i]; //x<0时把最后一位转为负数即可(输出时的第一位) } if(x>0) { while(x!=0) { num=x%2; n[i]=num; i++; x=x/2; } i--; //因为上方的i++最终多加一位 } for(;i>=0;i--)printf("%d",n[i]); } 8 【问题描述】统计字符串str中不同字符的个数输出。 【输入形式】从标准输入中输入一个字符串 【输出形式】将生成的个数输出到标准输出中 【样例输入】One world,One dream! 【样例输出】13 【样例说明】统计包含标点符号和空格,大写和小写视为不同字符。 #include<stdio.h> #include<string.h> void main() { char s[100],key; //由s[0]开始一个个作为key,扫描其后的字符是否为key int l,i,j,num; gets(s); l=strlen(s); num=l; //num初始值为字符串长度,扫描到相同字符时才减 for(i=0;i<l;i++) { key=s[i]; if(s[i]!=NULL) { for(j=i+1;j<l;j++) { if(s[j]==key) { num--; s[j]=NULL; //若s[j]与之前字符相同,在总数中减去其后将其置为NULL,以防再次成为key } } } } printf("%d",num); } 9 【问题描述】输入一个正整数n,计算1-1/4+1/7-1/10+1/13-1/16+……的前n 项之和,输出时保留3位小数。 【输入形式】从键盘输入一个正整数n。 【输入输出样例1】(下划线部分表示输入) Enter n: 3 sum=0.893 #include<stdio.h> void 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; } else { sum=sum-1.0/fm; } } printf("sum=%.3lf",sum); } 10 【问题描述】输入2个正整数m和n(m≥1,n≤1000),输出m ~n 之间所有Fibonacci数的个数及值。要求定义并调用函数fib(k),它的功能是返回第k项Fibonacci 数。例如,fib(7)的返回值是13。 【输入形式】从标准输入中输入一个范围m n(m n之间用空格分隔) 【输出形式】将生成的个数输出到标准输出中,并输出fibonacci数列(冒号后无空格) 【样例输入】1 5 【样例输出】5 fib:1 1 2 3 5  #include<stdio.h> void main() { int fib(int); int m,n,num,i,j=0; //num为斐波那契数列的数,j用于计数 int a[100]; scanf("%d %d",&m,&n); for(i=1;;i++) { num=fib(i); if(num>=m&&num<=n) { a[j]=num; j++; } if(num>n)break; } printf("%d fib:",j); for(i=0;i<j;i++)printf("%d ",a[i]); } int fib(int n) { if(n==1||n==2)return 1; else return fib(n-2)+fib(n-1); } 11 【问题描述】统计字符串str中单词的个数。单词之间以空格,逗号,句号作分隔,数字也看做单词。单词之间可能不止一个分隔符。 【输入形式】从标准输入中输入一组字符串  【输出形式】将生成的个数输出到标准输出中 1、现代文化对大学生饰品消费的影响【样例输入】It's  10:10  o'clock  ,I am late. 【样例输出】6 1、你一个月的零用钱大约是多少? 还有一点就是beadwork公司在“碧芝自制饰品店”内设立了一个完全的弹性价格空间:选择饰珠的种类和多少是由顾客自己掌握,所以消费者可以根据自己的消费能力进行取舍;此外由于是顾客自己制作,所以从原料到成品的附加值就可以自己享用。#include<stdio.h> (六)DIY手工艺品的“创作交流性”#include<string.h> 3. www。oh/ov。com/teach/student/shougong/void main() { int i,l,flag=0,num=0; //flag显示是否为单词,初始置0 char s[100]; 是□ 否□ gets(s); 还有一点就是beadwork公司在“碧芝自制饰品店”内设立了一个完全的弹性价格空间:选择饰珠的种类和多少是由顾客自己掌握,所以消费者可以根据自己的消费能力进行取舍;此外由于是顾客自己制作,所以从原料到成品的附加值就可以自己享用。 l=strlen(s); for(i=0;i<l;i++) 1. www。cer。net/artide/2004021313098897。shtml。 { if(s[i]==' '||s[i]==','||s[i]=='.')flag=0; else if(flag!=1) //flag!=1表示上一个字符并不也是字母 市场环境所提供的创业机会是客观的,但还必须具备自身的创业优势,才能使我们的创业项目成为可行。作为大学生的我们所具有的优势在于: { 动漫书籍□ 化妆品□ 其他□ flag=1; num++; } } printf("%d",num); } 精品文档
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服