上机考试答案完整版

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

上机考试答案

HEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】

1.请编写函数long fun(long int x),功能是:将长整型数x中每一位上为奇数的数依次取出,并逆序构成一个新数返回。

#include<>

long fun(long int x)

{

long b = 0;

while(x>0)

{

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

b=b*10+x%10;

x/=10;

}

return b;

}

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

int 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,i,s;

for(a=1,s=0;s<=m;a++)

for(i=1;i<=a;i++)

s+=i;

return a-2;

}

int 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<>

void fun(int *x,int n)

{

int i,j=0,k,t;

for (i=0;i

{

k=x[i];

while (k!=0)

{

t=k%10;

if(t==6)

break;

else

k=k/10;

}

if(k==0)

x[j++]=x[i];

for(;j

x[j]=-1;

return;

}

int main()

{ int a[N],i;

for(i=0;i

scanf("%d",a+i);

fun(a,N);

for(i=0;i

printf("%d ",a[i]);

printf("\n");

}

5.编写函数long fun(int high,int n),功能是:计算并返回high以内(不包含high)最大的n个素数之和。若不足n个,则到最小素数2为止。例如:若

high=100,n=10,则函数的返回值为:732;若high=11,n=10,则函数返回:17。

#include<>

long sushu(long m)

{

int i;

for(i=2;i

if(m%i==0)

break;

if(i>=m) return 1;

else return 0;

}

long fun(int high,int n)

{

int i,j=0;

long s=0;

if(high<=2) return 0;

for(i=high-1;i>1;i--)

if(sushu(i))

{

s+=i;

j++;

if(j>=n)

return s;

}

return s;

}

int main()

{int k,n;

scanf("%d%d",&k,&n);

printf("sum=%ld\n",fun(k,n));

相关文档
最新文档