注意:源程序存放在考生文件夹下BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
给定源程序:
#include
#define N 4
void fun(int (*a)[N], int *b)
{int i,j;
for(i=0; i /**********found**********/ b[i]= __1__; for(j=1; j /**********found**********/ if(b[i] __2__ a[j][i]) b[i]=a[j][i]; } } 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 {for(j=0;j printf("\n"); } /**********found**********/ fun(__3__); printf("\nThe result is:"); for(i=0; i printf("\n"); } 解题答案: #include /**********第一空**********/ b[i]= a[0][i]; /**********第二空**********/ if(b[i] < a[j][i]) b[i]=a[j][i]; /**********第三空**********/ fun(x,y); ****************************************** [NextPage] 二、改错题:给定程序MODI1.C中函数fun的功能是: 交换主函数中两个变量的值。例如: 若变量a中的值原为8,b中的值为3。程序运行后a中的值为3, b中的值为8。 请改正程序中的错误, 使它能计算出正确的结果。 注意: 不要改动 main 函数, 不得增行或删行, 也不得更改程序的结构! 给定源程序: #include /*********found**********/ void fun(int x,int y) { int t; /*********found**********/ t=x;x=y;y=t; } main() { int a,b; a=8;b=3; fun(&a,&b); printf("%d, %d\n",a,b); } 解题答案: /*********found**********/ void fun(int *x,int *y) /*********found**********/ t=*x;*x=*y;*y=t; ****************************************** [NextPage] 三、程序题:编写函数fun, 函数的功能是求出小于或等于lim的所有素数并放在aa数组中, 函数返回所求出的素数的个数。函数fun中给出的语句仅供参考。 注意:部分源程序在文件PROG1.C中。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 给定源程序: #include #define MAX 100 int fun(int lim, int aa[MAX]) { } main() { int limit, i, sum;void NONO (); int aa[MAX] ; printf("输入一个整数"); scanf("%d", &limit); sum=fun(limit, aa); for(i=0 ; i < sum ; i++) { if(i % 10 == 0 && i != 0) printf("\n"); printf("]", aa[i]); } NONO(); } void NONO () { /* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */ FILE *rf, *wf ; int limit, i, sum, aa[MAX] ; rf = fopen("in.dat","r"); wf = fopen("out.dat","w"); fscanf(rf, "%d", &limit); sum=fun(limit, aa); for(i=0 ; i < sum ; i++) fprintf(wf,"%d\n", aa[i]); fclose(rf); fclose(wf); } 参考答案: int fun(int lim, int aa[MAX]) { int i,j,k=0; /* 其中变量k用于统计素数个数 */ for(i=2;i<=lim;i++) { /* 以下完成判断aa数组中小于或等于lim的素数并统计个数 */ for(j = 2 ; j <= (i/2) ; j++) if(i % j == 0) break; if(j > (i/2)) aa[k++] = i; } return k; }
| 广告合作:400-664-0084 全国热线:400-664-0084 Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号 珠峰网 版权所有 All Rights Reserved
|