完整海洋大学c语言20道题上机答案.docx

上传人:b****6 文档编号:6562291 上传时间:2023-01-07 格式:DOCX 页数:12 大小:21.48KB
下载 相关 举报
完整海洋大学c语言20道题上机答案.docx_第1页
第1页 / 共12页
完整海洋大学c语言20道题上机答案.docx_第2页
第2页 / 共12页
完整海洋大学c语言20道题上机答案.docx_第3页
第3页 / 共12页
完整海洋大学c语言20道题上机答案.docx_第4页
第4页 / 共12页
完整海洋大学c语言20道题上机答案.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

完整海洋大学c语言20道题上机答案.docx

《完整海洋大学c语言20道题上机答案.docx》由会员分享,可在线阅读,更多相关《完整海洋大学c语言20道题上机答案.docx(12页珍藏版)》请在冰豆网上搜索。

完整海洋大学c语言20道题上机答案.docx

完整海洋大学c语言20道题上机答案

(完整)中国海洋大学C语言20道题上机答案

编辑整理:

 

尊敬的读者朋友们:

这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望((完整)中国海洋大学C语言20道题上机答案)的内容能够给您的工作和学习带来便利。

同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。

本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为(完整)中国海洋大学C语言20道题上机答案的全部内容。

下面的程序我亲自在考试系统上测试,每个都是满分!

!

希望对你有帮助!

1.请编写函数longfun(longintx),功能是:

将长整型数x中每一位上为奇数的数依次取出,并逆序构成一个新数返回。

例如:

程序运行时输入1234567,输出:

b=7531.

longinty;

longintb=0;

for(y=x;y>0;y=y/10){

if((y%10)%2==1)

b=b*10+y%10;

returnb;

2.编写函数voidfun(char*s,char*t,char*p)将未在字符串s中出现、而在字符串t中出现的字符,

形成一个新的字符串放在p中,p中字符按原字符串中字符顺序排列,但去掉重复字符。

例如:

当s为”12345”,t为”8624677"时,p中的字符为:

”867";

当s为”goodluck",t为”thankyouverymuch”时,输出:

”thanyverm"

intk=0,i,j,x=0,y;

for(i=0;i〈strlen(t);i++){//t

y=0;

for(j=0;j

if(t[i]==s[j]){y=1;break;}

if(y==0){

x=0;

for(j=0;j〈k;j++){

if(p[j]==t[i])

{x=1;break;}

}

if(x==0&&y==0)

{p[k]=t[i];k++;}

}

p[k]='\0';

3.编写函数intfun(intm),计算并返回满足表达式:

1+(1+2)+(1+2+3)+(1+2+3+4)+……+(1+2+3+……+n)

〈=m最大的n。

例如,当m=10000时,程序输出:

n=38.

inti,s1=0,s2=0;

for(i=1;;i++)

{s1+=i;

s2+=s1;

if(s2〉m)break;}

return(i—1);

4.编写函数voidfun(int*x,intn),它的功能是:

删除有n个数据的数组x中所有包含数字6的数据,后续的剩余元素赋值为-1。

n为数组长度,规定x中数据都为正数。

如程序运行时若输入:

12214616234161166391126713816

删除后输出:

12211911381—1—1—1—1-1—1

intm;

intp=0,flag,i,k;

for(m=0;m

flag=0;

k=x[m];

while(x[m]>0){

if((x[m]%10)==6){

flag=1;

break;

x[m]=x[m]/10;

if(flag==0){

x[p]=k;

p++;

}

for(i=p;i

x[i]=—1;

5.编写函数longfun(inthigh,intn),功能是:

计算并返回high以内(不包含high)最大的n个素数之和。

若不足n个,则到最小素数2为止。

例如:

若high=100,n=10,则函数的返回值为:

732;若high=11,n=10,则函数返回:

17。

inti,j,s=0,m=0;

for(i=high-1;i〉=2;i--)

for(j=2;j〈i;j++)

if(i%j==0)break;

if(j〉=i)

{m+=1;

s+=i;}

if(m==n)break;

return(s);

6.请编写函数intfun(int*a,intn),它的功能是:

把形参a所指数组中的偶数按原顺序依次存放到

a[0]、a[1]、a[2]、……中,把奇数从数组中删除,偶数个数通过函数值返回,以—1作为有效数据的结束标志。

例:

若输入:

123456789101112131415,输出:

2468101214n=7

inti,j;

for(i=0;i

if(a[i]%2!

=0)

for(j=i;j

a[j]=a[j+1];

i--;

n--;

a[n]=—1;

returnn;

7.给定程序中,函数fun的功能是:

有M×N二维数组,分别将每一行的最大值与本行的最后一个数据

(第N-1列数据)对调,其余数据保持不变。

然后按每一行的最大值对二维数据各行降序排序.

例如,有右侧数组数据:

11524342522求最大值并对调后:

11224342552

223346581647223346471658

8342542647004254264783

456789456789

4596171839245217183996

排序后最终输出:

45217183996

04254264783

223346471658

11224342552

456789

inti,j,k,n,max,temp;

for(i=0;i〈M;i++){

max=a[i][0],n=0;

for(j=0;j

if(a[i][j]〉max){

max=a[i][j];

n=j;

}

temp=a[i][N-1];

a[i][N-1]=a[i][n];

a[i][n]=temp;

for(i=0;i

for(j=M-1;j〉i;j——){

if(a[j][N—1]>a[j—1][N-1]){

for(k=0;k〈N;k++){

temp=a[j][k];

a[j][k]=a[j—1][k];

a[j—1][k]=temp;

}

}

8。

函数voidfun(intx,char*p)实现十进制整数x到二进制的转换。

转换后的二进制数以字

符串的方式放置于p所指向的数组中。

如输入13,输出1101,输入—13,输出—1101。

inti;if(x〈0)

{x=—x;

*p='—’;

p++;}

i=1;

while(x>〉i)

i++;p[i]=’\0’;

do{i——;

p[i]=(x&1)+'0’;

x〉>=1;}

while(i);

9。

——20编写函数intfun(char(*ss)[N],intm,char*s),功能是:

形参ss指向一个

m行N列的二维字符数组,每行存放一个字符串。

求出最大的字符串,复制到s所指的

字符数组中,然后返回此最大字符串的长度。

inti,len;intmax=—1;

for(i=0;i

{len=strlen(ss[i]);if(len〉max)

{max=len;strcpy(s,ss[i]);}

}

returnmax;

10.给定程序中,函数voidfun(char*s)的功能是:

在形参s所指字符串中的每个数字字符

之后插入一个*号。

例,形参s所指的字符串为:

def35adh3kjsdf7。

执行结果为:

def3*5*adh3*kjsdf7*。

intlength,i,j;

length=strlen(s);

for(i=0;i〈length;i++){

if(s[i]〉47&&s[i]<58){

for(j=length;j〉i;j--){

s[j+1]=s[j];

s[i+1]='*';

length++;

}

}

11.给定程序中,函数voidfun(char*s)的功能是:

把形参s所指字符串中下标为偶数的字符右移到下一个

偶数位置,最右边被移出字符串的字符绕回放到第一个偶数位置,下标为奇数的字符不动

(注:

字符串的长度大于等于2).例:

若输入:

abcd123,输出:

3badc21

inti;chart[80];

strcpy(t,s);

for(i=0;*(t+i)!

='\0';i++)

if(i%2==0)*(s+i+2)=*(t+i);

if(i%2==0)*s=*(t+i-2);

else*s=*(t+i-1);

*(s+i)='\0’;

12.编写函数voidfun(char*s1,char*s2),功能是:

对形参s1所指字符串升序排序,

并将排序后下标为偶数的字符取出,写入形参s2所指字符数组中,形成一个新串。

例如,

下面程序若输入:

TheCProgrammingLanguage,输出:

□□LTaegghmnor。

(□表空格)

inti,j,k,n=0;

chart;

for(i=0;*(s1+i)!

=0;i++)n+=1;

for(i=0;i〈n—1;i++)

{k=i;for(j=i+1;j

if(*(s1+j)〈*(s1+k))k=j;

if(k!

=i){t=s1[k];s1[k]=s1[i];s1[i]=t;}

}for(i=0,j=0;i〈n;i++)

{if(i%2==0){s2[j]=s1[i];j++;}

s2[j]=0;

13.函数voidfun(chars[])的功能是:

将s所指字符串中ASCII值为奇数的字符删除。

例如,若s所指字符串中的内容为:

“ABCDEFG12345",其中字符A的ASCII码值为

奇数、…、字符1的ASCII码值也为奇数、…都应当删除,其它依此类推。

最后s中内容是:

“BDF24"。

inti,j=0;

for(i=0;*(s+i)!

='\0’;i++)

if(*(s+i)%2==0)

{*(s+j)=*(s+i);

j++;}

*(s+j)='\0’;

14.请编写一个函数intfun(longintx),它的功能是:

判断整数x是否是同构数.

若是同构数,函数返回1;否则返回0。

所谓“同构数”是指这样的数,它出现在它的平方数的右边.

例如:

输入整数6,6的平方数是36,6是36中右侧的数,所以6是同构数,输出"Yes”.

要求x的值不大于10000。

longm,a;

for(a=10;;a*=10)

{m=x*x%a;

if(x==m)

return

(1);

if(x*x/a==0)

return(0);

15.编写取子字符串函数voidfun(chars1[],chars2[],intm,intn),其作用是

将字符数组s2中从第m个字符开始的共n个字符拷贝到数组s1中;若s2中剩余字符不足n个,

则取到尾部.程序运行时,当输入”abcd123”、4,3时应输出”d12";当我们输入”abcd123”、

4,6时应输出"d123"。

注意,这里是将1作为起始计数。

inti,a,b;

a=strlen(s2);

b=(a

a:

m+n—1);

for(i=m—1;i

{*s1=*(s2+i);s1++;}

*s1='\0’;

16.编写函数voidfun(char*str),将参数字符串中各单词首字母变大写,其余字母变小写。

输入输出在main中实现。

如输入”youHAVE10books,don'tyou?

”输出

"YouHave10Books,Don’tYou?

”。

单词以空格、逗号、句号分隔.

intlag=1;inti=0;

while(str[i]!

='\0'){

if(str[i]==’'||str[i]==','||str[i]=='.'||str[i]=='?

’||str[i]=='!

’)

{lag=1;i++;continue;}

if(lag==1)

{if(str[i]〉='a'&&str[i]〈=’z’){str[i]-=32;}lag=0;}

elseif(lag==0){if(str[i]〉=’A'&&str[i]〈='Z’)str[i]+=32;}

i++;

17.n个整数,前面各数循环顺序后移m个位置,最后m个数变成最前面m个数。

写函数voidfun(int*p,intn,intm),实现上述功能。

在main()中输入与输出.

如下面程序输出78910123456.注意,m可能大于n。

inti,j,k;

for(j=0;j〈m;j++)

{for(i=n-1,k=p[n—1];i>0;i-—)

*(p+i)=*(p+i—1);

*p=k;

}

18.编写函数voidfun(char*s1,char*s2),实现字符串s1与s2的交叉连接,连接后得到的新字符串放在s1中。

如输入abc

12345,输出a1b2c345,若输入abcde

123,则输出a1b2c3de。

char*m1=s1,str[100]={0},i=0;

while(*s1&&*s2){str[i++]=*s1++;str[i++]=*s2++;}

while(*s1){str[i++]=*s1++;}

while(*s2){str[i++]=*s2++;

strcpy(m1,str);

19。

传说可以根据两个人的生日来计算其缘分.方法:

将两个人的生日各位相加,将得到的数

再一次各位相加,直到其值为一个一位数,此数即代表两个人的缘分.

例如,两个生日为:

19820523,19841111,则各位相加:

1+9+8+2+5+2+3+1+9+8+4+1+1+1+1得:

56;

再5+6得11;再1+1得2,即为两人的缘分。

编写计算缘分程序,两个生日由键盘输入.

inti,s=0,c;

for(i=0;x!

=0||y!

=0;i++)

{s+=(x%10+y%10);

x=x/10;

y=y/10;}

for(i=0,c=0;;i++)

{c+=s%10;

s=s/10;

if(s==0)

{s=c;

if(s>=0&&s<=9)return(s);

elsec=0;

}

20。

m个人围成一圈,1,2,3循环报数,报到3的人退出,并将退出的序号依次存到数组p中,

包括最后一个人的序号。

到最后只余1人,输出最后留下的是第几号(最初的序号,以1起始)

若m=6,则输出n=1〈CR〉364251;若m=10,则输出n=436927185104;

若m=100,则输出n=91369……1005891。

函数intfun(intn,int*p)实现上述功能,

返回n个人中最后余的1人的起始序号,并将退出的序号顺序写入p指向的数组中。

intabc=0,i;

intindex;

intpeople[1000];

intlength=n;

intflag=0;

for(i=0;i〈n;i++)people[i]=1;

while(length〉1){

for(i=0;i〈n;i++){

if(people[i]==1){

flag++;

if(flag==3){

people[i]=0;

p[abc]=i+1;

abc++;

flag=0;

}

}

length=0;

for(i=0;i

if(people[i]==1){

index=i;

length++;

}

p[abc]=index+1;

returnindex+1;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1