上机考试题2016春季学期

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

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

考试时间:50分钟

考试方式:从下面的20题中随机抽取一题,再附加一题,共需完成2道题。附加题不事先给定

分值分配:第一题60分,第二题40分,共100分

考试时间:第十七周,2016年6月28日下午

1. 编写函数long fun(long x),它的功能是:将长整型参数x中每一位上为偶数的数依次取出,构成

一个新数返回。高位仍在高位,低位仍在低位。例如:下面程序运行时输入:124578902,程序输出:24802.

#include

long fun(long x)

{

int i,j,m,n;

for(i=0,m=0,n=1;x>0;i++)

{

j=x%10;

if(j%2==0)

{

m=m+n*j;

n=n*10;

}

x=(x-j)/10;

}

return(m);

}

int main()

{ long a,b;

printf("Enter a number:");

scanf("%ld",&a);

b=fun(a);

printf("b=%ld\n",b);

return 0;

}

2. 编写函数void fun(int k,int *p),功能是:将参数k(2≤k≤32767)所有的不相同质因子升序

写入p所指的一维数组中,以-1作为所有质因子的结束标志。例如:下面程序运行时若输入200,输出:2 5;若输入27720,输出:2 3 5 7 11;若输入101,输出101。

#include

void fun(int k,int *p)

{

int i,j,t=0;

double b;

for(i=2;i<=k;i++)

{

int i,j,x=0;

for(i=2;i<=k;i++)

{

if(k%i==0)

{

for(j=2;j<=i;j++)

{if(i%j==0) break;}

if(j>=i) {p[x]=i;x++;}

}

}

for(i=x;i<17;i++)

p[i]=-1;

}

int main()

{ int x,a[17]={0},i;

do{ printf("Enter a number(2-32767):");

scanf("%d",&x);

}while(x<2);

fun(x,a);

for(i=0;a[i]!=-1;i++)

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

printf("\n");

return 0;

}

3. 编写函数void fun(int *x,int n),功能是:求出长度为n的数组x中的最大数与次最大数,并

把最大数和a[0]对调,次最大数与a[1]对调,其余的数保持不变。下面程序运行时若输入:2 4 6

1 3 9 7 0 5 8,则输出:9 8 6 1 3

2 7 0 5 4。

#include

#define N 10

void fun(int *x,int n)

{

int i,j,k,t;

for(i=0;i<2;i++)

{

k=i;

for(j=i+1;j

{

if(x[j]>x[k])

{

k=j;

}

}

t=x[k];

x[k]=x[i];

x[i]=t;

}

}

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

return 0;

}

4. 数组x中保存有n个整数,编写函数int fun(int *x,int n,float *w),对数组x进行如下操作:

从第0个元素起对每5个元素求一个平均埴,并将这些均值依次存放在w所指的数组中。函数返回平均值的个数。例如:若输入n为14,14个数据为:11 21 35 24 55 16 27 58 18 0 11 12 13 14,则只为前10个求均值,输出结果为:29.20 23.80

#include

int fun(int *x,int n,float *w)

{

int a,i,j;

float sum=0;

a=n/5;

for(i=0;i

{

for(j=(5*i);j<5*(i+1);j++)

{

sum+=x[j];

}

w[i]=sum/5;

sum=0;

}

}

int main()

{int a[30],i,n,m;

float b[6];

printf("Input a number: ");

scanf("%d ",&n);

for(i=0;i

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

m=fun(a,n,b);

for(i=0;i

printf("%0.2f ",b[i]);

printf("\n");

return 0;

}

5. 编写函数int fun(int x,long int y),功能:计算满足表达式x0+x1+x2+...+x n

n并作为函数返回值带回。例如,当x=2,y=1000时,程序输出8。

#include

int fun(int x,long int y)

{

int i;

long sum=0,k=1;

相关文档
最新文档