上机考试题2016春季学期
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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;