中国海洋大学C语言程序2015春季学期上机题考试题及答案
《C程序设计》课程期末上机考试
考试时间:50分钟
考试方式:从下面的20题中随机抽取一题,再附加一题,共需完成2道题。附加题不事先给定
分值分配:第一题60分,第二题40分,共100分
考试时间:2015.6 具体时间与安排见网站通知
1. 请编写函数long fun(long int x),功能是:将长整型数x中每一位上为奇数的数依次取出,并逆序构成一个新数返回。例如:程序运行时输入123456789,输出:b=97531。
#include
long fun(long int x)
{
int i=0,m=0,n=0;
for(;;)
{
m=x%10;
if(m%2==1)
n=n*10+m;
x=x/10;
if(x==0)
break;
}
return n;
}
void main()
{long a,b;
printf("Please input a long int num:");
scanf("%ld",&a);
b=fun(a);
printf("b=%ld\n",b);
}
2. 编写函数void fun(char *s,char *t,char *p)将未在字符串s中出现、而在字符串t中出现的字符, 形成一个新的字符串放在p中,p中字符按原字符串中字符顺序排列,但去掉重复字符。
例如: 当s为"12345", t为"8624677"时, p中的字符为: "867";
当s为”good luck”,t为”thank you very much”时,输出:”thanyverm”
#include
#include
int test(char *s,int n,char ch)
{
int i;
for(i=0;i
if(s[i]==ch)
return 1;
return 0;
}
void fun(char *s,char *t,char *p)
{
int i,j;
for(i=j=0;t[i]!=0;i++)
if(test(s,strlen(s),t[i])==0&&test(t,i,t[i])==0)
{
p[j]=t[i];
j++;
}
p[j]=0;
}
void main()
{char s1[50],s2[50],s3[50];
gets(s1);gets(s2);
fun(s1,s2,s3);
puts(s3);
}
3. 编写函数int fun(int m),计算并返回满足表达式:1+(1+2)+(1+2+3)+(1+2+3+4)+……+(1+2+3+……+n)<=m最大的n。例如,当m=10000时,程序输出:n=38。
#include
int fun(int m)
{
int a=0,i=0,sum=0;
for(i=1;;i++)
{
a=a+i;
sum=sum+a;
if(sum>m)
break;
}
return (i-1);
}
void main()
{int x;
scanf("%d",&x);
printf("n=%d\n",fun(x));
}
4. 编写函数void fun(int *x,int n),它的功能是:删除有n个数据的数组x中所有包含数字6的数据,后续的剩余元素赋值为-1。n为数组长度,规定x中数据都为正数。
如程序运行时若输入:122 1461 6234 16 11 663 911 2671 381 6
删除后输出: 122 11 911 381 -1 -1 -1 -1 -1 -1
#define N 10
#include
int fun(int *x,int n)
{
int m=0,i,j,flag,y,p;
for(i=0;i
{
for(p=x[i],flag=0;;)
{
y=p%10;
if(y==6)
{
flag=1;
break;
}
p=p/10;
if(p==0) break;
}
if(flag==1)