20道上机考题和答案

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

《C程序设计》课程期末上机考试

考试时间:50分钟

考试方式:从下面的20题中随机抽取一题,再附加一题,共需完成2道题。分值分配:第一题60分,第二题40分,共100分

考试时间:2011.6.23 第十八周周四

1.请编写函数long fun(long int x),功能是:将长整型数x中每一位上为奇数的数依次取出,并逆序构成一个新数返回。例如:程序运行时输入123456789,输出:b=97531。

#include

long fun(long int x)

{

long s1=0,s2,m;

while(x!=0)

{m=x%10;

if(m%2!=0)

s1=(s1+m)*10;

x=x/10;

}

s2=s1/10;

return(s2);

}

void main()

{long a,b;

printf("Please input a long int unm:");

scanf("%d",&a);

b=fun(a);

printf("b=%d\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

void fun(char *s,char *t,char *p)

{

int i=0,j=0,flag=0,num=0;

for(i=0;t[i]!='\0';i++)

{

flag=0;

for(j=0;s[j]!='\0';j++)

{

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

{

flag=1;

break;

}

}

if(flag==0)

{

for(j=0;j

{

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

{

flag=1;

break;

}

}

if(flag==0)

{

p[num]=t[i];

num++;

p[num]='\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 s=0,a,i;

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

{a+=i;

s+=a;

}

return(i-2);

}

void main()

{int x;

scanf("%d",&x);

printf("n=%d\n",fun(x));

}

4.编写函数void fun(int *x,int n),它的功能是:删除数组x中所有包含数字6的数据,后续的剩余元素赋值为-1。规定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,c,flag=0,num=0;

for(i=0;i

{

c=x[i];

flag=0;

while(c>0)

{

if(6==c%10)

{

flag=1;

break;

}

c/=10;

}

if (flag==0)

{

x[num]=x[i];

num++;

}

}

for (i=num;i

x[i]=-1;

}

void main()

{

int a[N];

int i;

for(i=0;i

scanf("%d",&a[i]);

fun(a,N);

for(i=0;i

printf("%4d",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

#include

long fun(int high,int n)

{

int i,j,t; long sum=0;

for (i=1,t=high-1;t>=2;t--)

{

for (j=2;j

{

if (t%j==0) break;j++;}

if(j>sqrt(t))

{ sum+=t; i++;

}

if (i>n) break;

}

return (sum);

相关文档
最新文档