一、程序填空题
在此程序中,函数fun的功能是:找出N*N矩阵中每列元素中的最大值,并按顺序依次存放于形参b所指的一维数组中。
#include <stdio.h>
#define N 4
void fun(int (*a)[N], int *b)
{ int i,j;
for(i=0; i<N; i++) {
/**********found**********/
b[i]=__1__;
for(j=1; j<N; j++)
/**********found**********/
if(b[i]__2__ a[j][i])
b[i]=a[j][i];
}
}
void main()
{ int x[N][N]={ {12,5,8,7},{6,1,9,3},{1,2,3,4},{2,8,4,3} },y[N],i,j;
printf("\nThe matrix :\n");
for(i=0;i<N; i++)
{ for(j=0;j<N; j++) printf("%4d",x[i][j]);
printf("\n");
}
/**********found**********/
fun(__3__);
printf("\nThe result is:");
for(i=0; i<N; i++) printf("%3d",y[i]);
printf("\n");
}
答案:(1) a[0][i] (2) < (3) x,y
二、程序修改题
在此程序中,函数fun的功能是:将主函数中两个变量的值进行交换。例如:若变量a中的值为8,b中的值为3,则程序运行后,a中的值为3,b中的值为8。
#include <stdio.h>
/*************found**************/
void fun(int x,int y)
{ int t;
/*************found**************/
t=x;x=y;y=t;
}
void main()
{ int a,b;
a=8;
b=3;
fun(&a, &b);
printf("%d %d\n ", a,b);
}
答案:(1) void fun(int *x,int *y) (2) t=*x;*x=*y;*y=t;
三、程序设计题
在此程序中,编写函数int fun(int lim,int aa[MAX]),其功能是求出小于或等于lim的所有素数并放在aa数组中,并返回所求出的素数的个数。
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
#define MAX 100
int fun(int lim, int aa[MAX])
{
}
void main()
{
FILE *wf;
int limit,i,sum;
int aa[MAX];
system("CLS");
printf("输入一个整数:");
scanf("%d",&limit);
sum=fun(limit,aa);
for(i=0;i<sum;i++)
{
if(i%10==0&&i!=0) /*每行输出10个数*/
printf("\n ");
printf("%5d ",aa[i]);
}
/******************************/
wf=fopen("out.dat","w");
sum=fun(15,aa);
for(i=0;i<sum;i++)
{
if(i%10==0&&i!=0) /*每行输出10个数*/
fprintf(wf,"\n");
fprintf(wf,"%5d ",aa[i]);
}
fclose(wf);
/*****************************/
}
答案:
int i,j,k=0;
for(i=2;i<=lim;i++) /*求出小于或等于lim的全部素数*/
{ for(j=2;j<i;j++)
if(i%j==0) break;
if(j>=i)
aa[k++]=i; /*将求出的素数放入数组aa中*/
}
return k; /*返回所求出的素数的个数*/