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

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

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

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

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

j++){//s

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

break;

}

if(y==0){

x=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<

n;

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<

n;

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;

n—1;

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

456789

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

for(i=0;

i〈M;

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

N;

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;

M;

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;

m;

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);

i〈length;

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

chart[80];

strcpy(t,s);

*(t+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;

*(s1+i)!

=0;

i++)n+=1;

for(i=0;

i〈n—1;

{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;

{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;

*(s+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<

m+n-1?

a:

m+n—1);

for(i=m—1;

b;

{*s1=*(s2+i);

s1++;

*s1='

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

输入输出在main中实现。

如输入”youHAVE10books,don'

tyou?

”输出

"

YouHave10Books,Don’tYou?

”。

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

intlag=1;

inti=0;

while(str[i]!

){

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;

j〈m;

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

i>

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;

x!

=0||y!

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

x=x/10;

y=y/10;

for(i=0,c=0;

{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=4<

CR>

36927185104;

若m=100,则输出n=91<

369……1005891。

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

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

intabc=0,i;

intindex;

intpeople[1000];

intlength=n;

intflag=0;

i++)people[i]=1;

while(length〉1){

if(people[i]==1){

flag++;

if(flag==3){

people[i]=0;

p[abc]=i+1;

abc++;

flag=0;

length=0;

if(people[i]==1){

index=i;

length++;

p[abc]=index+1;

returnindex+1;

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

当前位置:首页 > 党团工作 > 入党转正申请

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

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