中国海洋大学C程考试题库20题Word格式文档下载.docx
- 文档编号:16595664
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:17
- 大小:20.88KB
中国海洋大学C程考试题库20题Word格式文档下载.docx
《中国海洋大学C程考试题库20题Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《中国海洋大学C程考试题库20题Word格式文档下载.docx(17页珍藏版)》请在冰豆网上搜索。
inttest(char*s,intn,charch)
{inti;
for(i=0;
i<
n;
i++)
if(s[i]==ch)return1;
return0;
voidfun(char*s,char*t,char*p)
{inti,j;
for(i=j=0;
t[i]!
if(test(s,strlen(s),t[i])==0&
&
test(t,i,t[i])==0)
{p[j]=t[i];
j++;
}
p[j]=0;
{chars1[50],s2[50],s3[50];
gets(s1);
gets(s2);
fun(s1,s2,s3);
puts(s3);
3.编写函数intfun(intm),计算并返回满足表达式:
1+(1+2)+(1+2+3)+(1+2+3+4)+……+(1+2+3+……+n)<
=m最大的n。
例如,当m=10000时,程序输出:
n=38。
intfun(intm)
{inta,i,s;
for(a=1,s=0;
s<
=m;
a++)
for(i=1;
=a;
s+=i;
return(a-2);
{intx;
%d"
x);
n=%d\n"
fun(x));
4.编写函数voidfun(int*x,intn),它的功能是:
求出数组x中的最小数和次最小数,并把最小数和a[0]中的数对调、次最小数和a[1]中的数对调,其余的数保持不变。
如程序运行时若输入:
24611397058,则输出:
02611397458。
#defineN10
voidfun(int*x,intn)
{inti,j,k,t;
2;
{k=i;
for(j=i+1;
j<
j++)
if(*(x+k)>
*(x+j))
k=j;
if(k!
=i)
{t=*(x+i);
*(x+i)=*(x+k);
*(x+k)=t;
}
}
main()
{inta[N],i;
N;
scanf("
a+i);
fun(a,N);
printf("
%d"
a[i]);
\n"
5.编写函数longfun(inthigh,intn),功能是:
计算并返回high以内(不包含high)最大的n个素数之和。
若不足n个,则到最小素数2为止。
若high=100,n=10,则函数的返回值为:
732;
若high=11,n=10,则函数返回:
17。
longsushu(m)
{inti;
for(i=2;
m;
if(m%i==0)
break;
if(i>
=m)return1;
elsereturn0;
longfun(inthigh,intn)
{inti,j=0;
longs=0;
if(high<
=2)return0;
for(i=high-1;
i>
1;
i--)
if(sushu(i))
{s+=i;
j++;
if(j>
=n)
returns;
{intk,n;
%d%d"
k,&
n);
sum=%ld\n"
fun(k,n));
6.请编写函数intfun(int*a,intn),它的功能是:
把形参a所指数组中的偶数按原顺序依次存放到a[0]、a[1]、a[2]、……中,把奇数从数组中删除,偶数个数通过函数值返回,以-1作为有效数据的结束标志。
例:
若输入:
123456789101112131415,输出:
2468101214n=7
intfun(int*a,intn)
{inti,j,k=0;
*(a+n)=-1;
*(a+i)!
=-1;
if(*(a+i)%2!
{for(j=i;
*(a+j+1)!
*(a+j)=*(a+j+1);
*(a+j)=-1;
i--;
k++;
return(n-k);
{intx[15],i,n;
15;
x+i);
n=fun(x,15);
x[i]!
x[i]);
n);
7.给定程序中,函数fun的功能是:
有N×
N矩阵,以主对角线为对称线,对称元素相加并将结果存放在左下三角元素中,右上三角元素置为0。
例如,若N=5,有下列矩阵:
12345计算结果为:
10000
2345643000
3456768500
456788101270
56789101214169
#defineN5
voidfun(inta[N][N])
{inti,j;
for(j=0;
i)
{a[j][i]+=a[i][j];
a[i][j]=0;
{intx[N][N]={{1,2,3,4,5},{2,3,4,5,6},{3,4,5,6,7},
{4,5,6,7,8},{5,6,7,8,9}},i,j;
fun(x);
for(i=0;
{for(j=0;
%3d"
x[i][j]);
8.函数voidfun(intx,char*p)实现十进制整数x到二进制的转换。
转换后的二进制数以字符串的方式放置于p所指向的数组中。
如输入13,输出1101,输入-13,输出-1101。
#include"
stdio.h"
voidfun(intx,char*p)
{char*q,t;
if(x<
0){*p++='
-'
x=-x;
if(x==0)
{*p++='
0'
*p=0;
return;
q=p;
for(;
x!
x/=2)
*p++=x%2+'
*p=0;
for(p--;
q<
p;
q++,p--)
{t=*q;
*q=*p;
*p=t;
main()
{inta;
charc[18];
fun(a,c);
%d'
SBINARYIS:
%s\n"
a,c);
9.编写函数intfun(char(*ss)[N],intm,char*s),功能是:
形参ss指向一个m行N列的二维字符数组,每行存放一个字符串。
求出最大的字符串,复制到s所指的字符数组中,然后返回此最大字符串的长度。
#defineN30
intfun(char(*ss)[N],intm,char*s)
{inti,max;
max=0;
for(i=1;
if(strcmp(ss[i],ss[max])>
0)max=i;
strcpy(s,ss[max]);
returnstrlen(ss[max]);
{chara[8][N],b[N];
inti,len;
8;
gets(a[i]);
len=fun(a,8,b);
len=%d,str=%s\n"
len,b);
10.给定程序中,函数voidfun(char*s)的功能是:
在形参s所指字符串中的每个数字字符之后插入一个*号。
例如,形参s所指的字符串为:
def35adh3kjsdf7。
执行结果为:
def3*5*adh3*kjsdf7*。
stdlib.h>
string.h>
voidfun(char*s)
chara[100];
for(i=0,j=0;
*(s+i)!
='
\0'
i++,j++)
{a[j]=*(s+i);
if(*(s+i)>
*(s+i)<
9'
{*(a+j+1)='
*'
a[j]='
strcpy(s,a);
{charstr[80];
gets(str);
fun(str);
puts(str);
11.给定程序中,函数voidfun(char*s)的功能是:
把形参s所指字符串中下标为偶数的字符右移到下一个偶数位置,最右边被移出字符串的字符绕回放到第一个偶数位置,下标为奇数的字符不动(注:
字符串的长度大于等于2)。
abcd123,输出:
3badc21
{inti,t,l;
l=strlen(s);
if(l%2==1)
{
t=s[l-1];
for(i=l-1;
0;
i-=2)
s[i]=s[i-2];
s[0]=t;
else
t=s[l-2];
for(i=l-2;
i-=2)
12.编写函数voidfun(char*s1,char*s2),功能是:
对形参s1所指字符串升序排序,并将排序后下标为偶数的字符取出,写入形参s2所指字符数组中,形成一个新串。
例如,下面程序若输入:
TheCProgrammingLanguage,输出:
□□LTaegghmnor。
(□表空格)
voidfun(char*s1,char*s2)
{inti,j,n;
chart;
*(s1+i)!
{n=i;
for(j=i;
*(s1+j)!
{if(*(s1+n)>
*(s1+j))n=j;
t=*(s1+n);
*(s+n)=*(s+i);
*(s+i)=t;
*(s1+)!
{if(i%2==0)
{*s2=*(s1+i);
s2++;
*s2='
{chara[80],b[80];
gets(a);
fun(a,b);
puts(b);
13.函数voidfun(chars[])的功能是:
将s所指字符串中ASCII值为奇数的字符删除。
例如,若s所指字符串中的内容为:
“ABCDEFG12345”,其中字符A的ASCII码值为奇数、…、字符1的ASCII码值也为奇数、…都应当删除,其它依此类推。
最后s中内容是:
“BDF24”。
voidfun(chars[])
s[i]!
{if(s[i]%2==1)
s[j]!
s[j]=s[j+1];
{chara[80];
fun(a);
puts(a);
14.请编写一个函数intfun(longintx),它的功能是:
判断整数x是否是同构数。
若是同构数,函数返回1;
否则返回0。
所谓“同构数”是指这样的数,它出现在它的平方数的右边。
输入整数5,5的平方数是25,5是25中右侧的数,所以5是同构数,输出"
Yes"
。
要求x的值不大于10000。
intfun(longintx)
{longs;
s=x*x;
while(x!
{if(s%10!
=x%10)
x/=10;
s/=10;
return1;
if(fun(x)==1)
puts("
Yse"
elseputs("
No"
15.编写取子字符串函数voidfun(chars1[],chars2[],intm,intn),其作用是将字符数组s2中从第m个字符开始的共n个字符拷贝到数组s1中;
若s2中剩余字符不足n个,则取到尾部。
程序运行时,当输入"
abcd123"
、4,3时应输出"
d12"
;
当我们输入"
、4,6时应输出"
d123"
注意,这里是将1作为起始计数。
voidfun(chars1[],chars2[],intm,intn)
{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='
{staticchara[100],b[100];
ints,len;
voidfun(chars1[],chars2[],intm,intn);
ENTERASTRING:
ENTERSTARTINGPOSITIONANDLENGTH:
%d,%d"
s,&
len);
fun(b,a,s,len);
THESRBSTINGIS:
%s\n"
16.编写函数voidfun(char*str),将参数字符串中各单词首字母变大写,其余字母变小写。
输入输出在main中实现。
如输入"
youHAVE10books,don'
tyou?
输出"
YouHave10Books,Don'
tYou?
单词以空格、逗号、句号分隔。
voidfun(char*str)
str[i];
if(str[i]>
A'
str[i]<
Z'
str[i]+=32;
if(str[0]>
a'
str[0]<
z'
str[0]-=32;
if(str[i]=='
'
||str[i]=='
'
.'
{if(str[i+1]>
str[i+1]<
str[i+1]-=32;
{chara[100];
fun(a);
puts(a);
17.n个整数,前面各数循环顺序后移m个位置,最后m个数变成最前面m个数。
写函数voidfun(int*p,intn,intm),实现上述功能。
在main()中输入与输出。
如下面程序输出78910123456。
注意,m可能大于n。
voidfun(int*p,intn,intm)
{inti,j,k,t;
k=m%n;
k;
i++)
t=p[n-1];
for(j=n-2;
j>
j--)
p[j+1]=p[j];
p[0]=t;
{voidfun(int*,int,int);
intx[10]={1,2,3,4,5,6,7,8,9,10},i;
fun(x,10,14);
10;
18.编写函数voidfun(char*s1,char*s2),实现字符串s1与s2的交叉连接,连接后得到的新字符串放在s1中。
如输入abc<
CR>
12345<
,输出a1b2c345,若输入abcde<
123<
,则输出a1b2c3de。
{inti,j,k;
for(j=0,i=1;
s2[j]!
{for(k=strlen(s1);
k>
=i;
k--)
s1[k+1]=s1[k];
s1[i]=s2[j];
i++;
if(s1[i])i++;
{chara[100],b[100];
voidfun(char*,char*);
gets(b);
19.传说可以根据两个人的生日来计算其缘分.方法:
将两个人的生日各位相加,将得到的数再一次各位相加,直到其值为一个一位数,此数即代表两个人的缘分.例如,两个生日为:
,则各位相加:
1+9+8+2+5+2+3+1+9+8+4+1+1+1+1得:
56;
再5+6得11;
再1+1得2,即为两人的缘分.编写计算缘分程序,两个生日由键盘输入.
intfun(longx,longy)
{inti,s,t;
for(i=0,s=0;
{s+=(x%10+y%10);
x=x/10;
y=y/10;
while(s>
=10)
{for(i=0,t=0;
s;
{t+=s%10;
s=s/10;
s=t;
{longx,y;
intk;
scanf("
%ld%ld"
x,&
y);
k=fun(x,y);
printf("
yuanfenis%d"
k);
20.m个人围成一圈,1,2,3循环报数,报到3的人退出,并将退出的序号依次存到数组p中,包括最后一个人的序号。
到最后只余1人,输出最后留下的是第几号(最初的序号,以1起始)及。
若m=6,则输出n=1<
364251;
若m=10,则输出n=4<
3692785104;
若m=100,则输出n=91……。
函数intfun(intn,int*p)实现上述功能,返回n个人中最后余的1人的起始序号,并将退出的序号顺序写入p指向的数组中。
alloc.h>
intfun(intn,int*p)
{inti,*s,j,k,t;
s=(int*)malloc(sizeof(int)*n);
s[i]=i+1;
t=0;
for(k=0,i=0,j=0;
k<
n-1;
{if(s[i]!
{j++;
if(j==3)
{p[t]=s[i];
t++;
s[i]=0;
j=0;
k++;
}
if(i==n-1)i=-1;
if(s[i]!
=0)break;
p[t]=s[i];
returns[i];
{intm,a[10000],i,num;
m);
num=fun(m,a);
num);
%8d"
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 中国海洋 大学 考试 题库 20
![提示](https://static.bdocx.com/images/bang_tan.gif)