![](https://csdnimg.cn/release/download_crawler_static/87220061/bg1.jpg)
1
《C程序设计》课程期末上机考试
考试时间: 50 分钟
考试方式:从下面的 20 题中随机抽取一题,再附加一题,共需完成 2 道题。附加题不事
先给定
分值分配:第一题 60 分,第二题 40 分,共 100 分
考试时间:第十八周
1. 编写函数 long fun(long x) ,它的功能是 : 将长整型参数 x 中每一位上为偶数的数依次取出,构成
一个新数返回。高位仍在高位,低位仍在低位。例如:下面程序运行时输入 :124578902, 程序输
出:24802.
#include<stdio.h>
long fun(long x)
{
}
void main()
{ long a,b;
printf("Enter a number:");
scanf("%ld",&a);
b=fun(a);
printf("b=%ld",b);
}
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<stdio.h>
void fun(int k,int *p)
{
}
void 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("");
}
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<stdio.h>
#define N 10
long fun(long x)
{
long i,a,b=1;
long result=0;
for(i=1;x>=1;i=i++)
{
a=x%10;
if(a%2==0) {result+=a*b;b=b*10;}
x=x/10;
}
return(result);
}
void fun(int k,int *p)
{
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;
}