二级C语言上机考试复习资料,共有50套题目

更新时间:2024-06-12 02:06:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

学海教育 内部资料 版权所有 翻印必究

二级C语言上机考试复习资料,共有50套题目 一、程序填空题

1、给定程序中,函数fun的功能是:在任意给定的9个正整数中找出按升序排列时处于中间的数,将原数据序列中比该中间数小的数用该中间数替换,位置不变,在主函数中输出处理后的数据序列,并将中间数作为函数值返回。 例如,有9个正整数:1 5 7 23 87 5 8 21 45 按升序排列时的中间数为:8

处理后主函数中输出的数列为:8 8 8 23 87 8 8 21 45

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

#include #define N 9 int fun(int x[])

{ int i,j,k,t,mid,b[N];

for(i=0;i

for(j=i+1;jb[j]) k=j; if(k != i ) {

/**********found**********/

t=b[i]; b[i]=___1___; b[k]=t; } }

/**********found**********/ mid=b[___2___]; for(i=0; i

/**********found**********/ if(x[i] ___3___ mid) x[i]=mid; return mid; }

main()

{ int i, x[N]={1,5,7,23,87,5,8,21,45}; for(i=0; i

2、给定程序中,函数fun的功能是建立一个N×N的矩阵。 矩阵元素的构成规律是:最外层元素的值全部为1;从外向内第2层元素的值全部为2;第3层元素的值全部为3,?依次类推。例如,若N=5,生成的矩阵为: 1 1 1 1 1 1 2 2 2 1 1 2 3 2 1 1 2 2 2 1 1 1 1 1 1

请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。

#include #define N 7

/**********found**********/ void fun(int (*a) __1__) { int i,j,k,m;

if(N%2==0) m=N/2 ; else m=N/2+1; for(i=0; i

/**********found**********/ for(j= __2__ ; j

a[k][i]=a[k][N-i-1]= __3__; } }

main()

{ int x[N][N]={0},i,j; fun(x);

printf(\ for(i=0; i

{ for(j=0; j

3、给定程序中,函数fun的功能是: 将s所指字符串中的所有数字字符移到所有非数字字符之后,并保持数字字符串和非数字字符串原有的先后次序。例如,形参s所指的字符串为:def35adh3kjsdf7。执行结果为:defadhkjsdf3537。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的

结果。

#include void fun(char *s)

{ int i, j=0, k=0; char t1[80], t2[80]; for(i=0; s[i]!='\\0'; i++) if(s[i]>='0' && s[i]<='9') {

/**********found**********/ t2[j]=s[i]; ___1___; }

else t1[k++]=s[i]; t2[j]=0; t1[k]=0;

/**********found**********/ for(i=0; i

for(i=0; i<___3___; i++) s[k+i]=t2[i]; }

main()

{ char s[80]=\

printf(\ %s\\n\ fun(s);

printf(\ %s\\n\}

4、给定程序中,函数fun的功能是:有N×N矩阵,以主对角线为对称线,对称元素相加并将结果存放在左下三角元素中,右上三角元素置为0。例如,若N=3,有下列矩阵: 1 2 3 4 5 6

7 8 9计算结果为 1 0 0 6 5 0 10 14 9

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

#include #define N 4

/**********found**********/ void fun(int (*t)___1___ ) { int i, j;

for(i=1; i

/**********found**********/ ___2___ =t[i][j]+t[j][i]; /**********found**********/ ___3___ =0; } } }

main()

{ int t[][N]={21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10}, i, j; printf(\ for(i=0; i

{ for(j=0; j

fun(t);

printf(\ for(i=0; i

{ for(j=0; j

5、给定程序中,函数fun的功能是:对形参s所指字符串中下标为奇数的字符按ASCII码大小递增排序,并将排序后下标为奇数的字符取出,存入形参p所指字符数组中,形成一个新串。

例如,形参s所指的字符串为:baawrskjghzlicda,执行后p所指字符数组中的字符串应为:aachjlsw。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

#include

void fun(char *s, char *p) { int i, j, n, x, t; n=0;

for(i=0; s[i]!='\\0'; i++) n++;

1

学海教育 内部资料 版权所有 翻印必究

for(i=1; i

/**********found**********/ ___1___;

/**********found**********/

for(j=___2___+2 ; js[j]) t=j; if(t!=i)

{ x=s[i]; s[i]=s[t]; s[t]=x; } }

for(i=1,j=0; i

main()

{ char s[80]=\ printf(\ %s\\n\ fun(s,p);

printf(\ %s\\n\}

6、程序通过定义并赋初值的方式,利用结构体变量存储了一名学生的信息。函数fun的功能是输出这位学生的信息。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

#include typedef struct { int num;

char name[9]; char sex;

struct { int year,month,day ;} birthday; float score[3]; }STU;

/**********found**********/ void show(STU ___1___) { int i;

printf(\

tt.birthday.year, tt.birthday.month, tt.birthday.day); for(i=0; i<3; i++)

/**********found**********/ printf(\ printf(\}

main( )

{ STU std={ 1,\ printf(\/**********found**********/ show(___3___); }

7、给定程序中,函数fun的功能是:计算N×N矩阵的主对角线元素和反向对角线元素之和,并作为函数值返回。注意:要求先累加主对角线元素中的值,然后累加反向对角线元素中的值。例如,若N=3,有下列矩阵: 1 2 3 4 5 6

7 8 9fun函数首先累加1、5、9,然后累加3、5、7,函数的返回值为30。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

#include #define N 4 fun(int t[][N], int n) { int i, sum;

/**********found**********/ ___1___;

for(i=0; i

/**********found**********/ sum+=___2___ ; for(i=0; i

/**********found**********/ sum+= t[i][n-i-___3___] ; return sum; }

main()

{ int t[][N]={21,2,13,24,25,16,47,38,29,11,32,54,42,21,3,10},i,j; printf(\ for(i=0; i

{ for(j=0; j

printf(\ %d\}

8、给定程序中,函数fun的功能是:计算形参x所指数组中N个数的平均值(规定所有数均为正数),作为函数值返回;并将大于平均值的数放在形参y所指数组中,在主函数中输出。

例如,有10个正数:46 30 32 40 6 17 45 15 48 26,平均值为:30.500000

主函数中输出:46 32 40 45 48

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

#include #include #define N 10

double fun(double x[],double *y) { int i,j; double av;

/**********found**********/ av=__1__;

/**********found**********/

for(i=0; i

/**********found**********/ if(x[i]>av) y[__3__]= x[i]; y[j]=-1; return av; }

main()

{ int i; double x[N] = {46,30,32,40,6,17,45,15,48,26}; double y[N];

for(i=0; i

printf(\ for(i=0; y[i]>=0; i++) printf(\ printf(\}

9、给定程序中,函数fun的功能是:计算形参x所指数组中N个数的平均值(规定所有数均为正数),将所指数组中小于平均值的数据移至数组的前部,大于等于平均值的数据移至x所指数组的后部,平均值作为函数值返回,在主函数中输出平均值和移动后的数据。

例如,有10个正数:46 30 32 40 6 17 45 15 48 26,平均值为:30.500000

移动后的输出为:30 6 17 15 26 46 32 40 45 48

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

#include #include #define N 10 double fun(double *x)

{ int i, j; double av, y[N]; av=0;

/**********found**********/ for(i=0; i/**********found**********/ y[j]=x[i]; x[i]=-1; __2__;} i=0;

while(i

{ if( x[i]!= -1 ) y[j++]=x[i]; /**********found**********/ __3__; }

for(i=0; i

main()

{ int i; double x[N];

for(i=0; i

printf(\ printf(\

for(i=0; i

10、给定程序中,函数fun的功能是:计算形参x所指数组中N个数的平均值(规定所有数均为正数),将所指数组中大于平均值的数据移至数组的前部,小于等于平均值的数据移至x所指数组的后部,平均值作为函数值返回,在主函数中输出平均值和移动后的数据。

2

学海教育 内部资料 版权所有 翻印必究

例如,有10个正数:46 30 32 40 6 17 45 15 48 26,平均值为:30.500000

移动后的输出为:46 32 40 45 48 30 6 17 15 26

请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。

#include #include #define N 10 double fun(double *x)

{ int i, j; double s, av, y[N]; s=0;

for(i=0; i

for(i=j=0; iav ){

/**********found**********/ y[__2__]=x[i]; x[i]=-1;} for(i=0; i

/**********found**********/ if( x[i]!= __3__) y[j++]=x[i]; for(i=0; i

main()

{ int i; double x[N]= {46,30,32,40,6,17,45,15,48,26}; for(i=0; i

printf(\ printf(\

for(i=0; i

11、函数fun的功能是:把形参a所指数组中的奇数按原顺序依次存放到a[0]、a[1]、a[2]、??中,把偶数从数组中删除,奇数个数通过函数值返回。例如:若a所指数组中的数据最初排列为:9、1、4、2、3、6、5、8、7,删除偶数后a所指数组中的数据为:9、1、3、5、7,返回值为5。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

#include #define N 9 int fun(int a[], int n) { int i,j; j = 0;

for (i=0; i

/**********found**********/ if (a[i]%2==___1___) {

/**********found**********/ a[j] = a[i]; ___2___; }

/**********found**********/ return ___3___; }

main()

{ int b[N]={9,1,4,2,3,6,5,8,7}, i, n; printf(\ :\\n\

for (i=0; i

printf(\ : %d \\n\ printf(\ :\\n\

for (i=0; i

12、给定程序中,函数fun的功能是:求ss所指字符串数组中长度最短的字符串所在的行下标,作为函数值返回,并把其串长放在形参n所指变量中。ss所指字符串数组中共有M个字符串,且串长

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

#include #include #define M 5 #define N 20

int fun(char (*ss)[N], int *n) { int i, k=0, len= N;

/**********found**********/

for(i=0; i<___1___; i++) { len=strlen(ss[i]); if(i==0) *n=len;

/**********found**********/ if(len ___2___ *n) { *n=len; k=i; } }

/**********found**********/ return(___3___); }

main()

{ char ss[M][N]={\ int n,k,i;

printf(\ for(i=0;i

printf(\ %d\\n\ printf(\ %s\\n\}

13、人员的记录由编号和出生年、月、日组成,N名人员的数据已在主函数中存入结构体数组std中。函数fun的功能是:找出指定出生年份的人员,将其数据放在形参k所指的数组中,由主函数输出,同时由函数值返回满足指定条件的人数。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

#include #define N 8 typedef struct { int num;

int year,month,day ; }STU;

int fun(STU *std, STU *k, int year) { int i,n=0;

for (i=0; i

/**********found**********/ if( ___1___==year) /**********found**********/ k[n++]= ___2___; /**********found**********/ return (___3___); }

main()

{ STU std[N]={ {1,1984,2,15},{2,1983,9,21},{3,1984,9,1},{4,1983,7,15}, {5,1985,9,28},{6,1982,11,15},{7,1982,6,22},{8,1984,8,19}}; STU k[N]; int i,n,year;

printf(\ \ scanf(\ n=fun(std,k,year); if(n==0)

printf(\ else

{ printf(\ for(i=0; i

printf(\ %d-%d-%d\\n\ } }

14、函数fun的功能是:将形参a所指数组中的前半部分元素中的值和后半部分元素中的值对换。形参n中存放数组中数据的个数,若n为奇数,则中间的元素不动。例如:若a所指数组中的数据依次为:1、2、3、4、5、6、7、8、9,则调换后为:6、7、8、9、5、1、2、3、4。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

#include #define N 9

void fun(int a[], int n) { int i, t, p;

/**********found**********/ p = (n%2==0)?n/2:n/2+___1___; for (i=0; i

t=a[i];

/**********found**********/ a[i] = a[p+___2___]; /**********found**********/ ___3___ = t; }

3

学海教育 内部资料 版权所有 翻印必究

}

main()

{ int b[N]={1,2,3,4,5,6,7,8,9}, i; printf(\ :\\n\

for (i=0; i

printf(\ :\\n\ for (i=0; i

15、给定程序中,函数fun的功能是将形参给定的字符串、整数、浮点数写到文本文件中,再用字符方式从此文本文件中逐个读入并显示在终端屏幕上。 请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确嶄绸果。

注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构! #include

void fun(char *s, int a, double f) {

/**********found**********/ __1__ fp; char ch;

fp = fopen(\

fprintf(fp, \ fclose(fp);

fp = fopen(\ printf(\ ch = fgetc(fp);

/**********found**********/ while (!feof(__2__)) {

/**********found**********/

putchar(__3__); ch = fgetc(fp); } putchar('\\n'); fclose(fp); }

main()

{ char a[10]=\ int b=12345; double c= 98.76; fun(a,b,c); }

16、给定程序中,函数fun的功能是:找出N×N矩阵中每列元素中的最大值,并按顺序依次存放于形参b所指的一维数组中。

请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。

注意:源程序存放在考生文件夹下的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(\ for(i=0;i

{ for(j=0;j

/**********found**********/ fun(__3__);

printf(\

for(i=0; i

17、给定程序中,函数fun的功能是:统计形参s所指字符串中数字字符出现的次数,并存放在形参t所指的变量中,最后在主函数中输出。例如,形参s所指的字符串为:abcdef35adgh3kjsdf7。输出结果为:4。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

#include void fun(char *s, int *t) { int i, n; n=0;

/**********found**********/ for(i=0; ___1___ !=0; i++) /**********found**********/

if(s[i]>='0'&&s[i]<= ___2___ ) n++; /**********found**********/ ___3___ ; }

main()

{ char s[80]=\ int t;

printf(\ %s\\n\ fun(s,&t);

printf(\ %d\\n\}

18、函数fun的功能是:把形参a所指数组中的最小值放在元素a[0]中,接着把形参a所指数组中的最大值放在a[1]元素中;再把a所指数组元素中的次小值放在a[2]中,把a所指数组元素中的次大值放在a[3];其余以此类推。例如:若a所指数组中的数据最初排列为:9、1、4、2、3、6、5、8、7;则按规则移动后,数据排列为:1、9、2、8、3、7、4、6、5。形参n中存放a所指数组中数据的个数。

注意:规定fun函数中的max存放当前所找的最大值,px存放当前所找最大值的下标。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

# include #define N 9

void fun(int a[], int n)

{ int i,j, max, min, px, pn, t; for (i=0; i

/**********found**********/ max = min = ___1___; px = pn = i;

for (j=i+1; j

{ max = a[j]; px = j; } /**********found**********/ if (min>___3___)

{ min = a[j]; pn = j; } }

if (pn != i)

{ t = a[i]; a[i] = min; a[pn] = t; if (px == i) px =pn; }

if (px != i+1)

{ t = a[i+1]; a[i+1] = max; a[px] = t; } } }

main()

{ int b[N]={9,1,4,2,3,6,5,8,7}, i; printf(\ :\\n\

for (i=0; i

printf(\ :\\n\ for (i=0; i

19、给定程序中,函数fun的功能是:将形参s所指字符串中的所有数字字符顺序前移,其他字符顺序后移,处理后新字符串的首地址作为函数值返回。 例如,s所指字符串为:asd123fgh5##43df, 处理后新字符串为:123543asdfgh##df。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

#include #include #include #include char *fun(char *s)

{ int i, j, k, n; char *p, *t; n=strlen(s)+1;

t=(char*)malloc(n*sizeof(char));

4

学海教育 内部资料 版权所有 翻印必究

p=(char*)malloc(n*sizeof(char)); j=0; k=0;

for(i=0; i

/**********found**********/ p[__1__]=s[i]; j++;} else

{ t[k]=s[i]; k++; } }

/**********found**********/

for(i=0; i<__2__; i++) p[j+i]= t[i]; p[j+k]=0;

/**********found**********/ return __3__; }

main()

{ char s[80];

printf(\ scanf(\ printf(\}

20、给定程序中,函数fun的功能是:有N×N矩阵,根据给定的m(m<=N)值,将每行元素中的值均右移m个位置,左边置为0。例如,N=3,m=2,有下列矩阵

1 2 3 4 5 6

7 8 9程序执行结果为 0 0 1 0 0 4 0 0 7

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

#include #define N 4

void fun(int (*t)[N], int m) { int i, j;

/**********found**********/ for(i=0; i=0; j--) /**********found**********/ t[i][j+___2___ ]=t[i][j]; /**********found**********/ for(j=0; j<___3___; j++) t[i][j]=0; } }

main()

{ int t[][N]={21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10}, i, j, m; printf(\ for(i=0; i

printf(\ \ printf(\ }

printf(\ \ fun(t,m);

printf(\ for(i=0; i

printf(\ \ printf(\ } }

21、函数fun的功能是:把形参a所指数组中的偶数按原顺序依次存放到a[0]、a[1]、a[2]、??中,把奇数从数组中删除,偶数个数通过函数值返回。例如:若a所指数组中的数据最初排列为:9、1、4、2、3、6、5、8、7,删除奇数后a所指数组中的数据为:4、2、6、8,返回值为4。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

#include #define N 9 int fun(int a[], int n) { int i,j; j = 0;

for (i=0; i

/**********found**********/ if (___1___== 0) {

/**********found**********/

___2___ = a[i]; j++; }

/**********found**********/ return ___3___; }

main()

{ int b[N]={9,1,4,2,3,6,5,8,7}, i, n; printf(\ :\\n\

for (i=0; i

printf(\ :%d\\n\ printf(\ :\\n\

for (i=0; i

22、给定程序中,函数fun的功能是:判定形参a所指的N×N(规定N为奇数)的矩阵是否是\幻方\,若是,函数返回值为1; 不是,函数返回值为0。\幻方\的判定条件是:矩阵每行、每列、主对角线及反对角线上元素之和都相等。 例如,以下3×3的矩阵就是一个\幻方\: 4 9 2 3 5 7 8 1 6

请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。

#include #define N 3 int fun(int (*a)[N])

{ int i,j,m1,m2,row,colum; m1=m2=0;

for(i=0; i

{ j=N-i-1; m1+=a[i][i]; m2+=a[i][j]; } if(m1!=m2) return 0; for(i=0; i

/**********found**********/ row=colum= __1__; for(j=0; j

{ row+=a[i][j]; colum+=a[j][i]; } /**********found**********/

if( (row!=colum) __2__ (row!=m1) ) return 0; }

/**********found**********/ return __3__; }

main()

{ int x[N][N],i,j;

printf(\ for(i=0; i

for(j=0; j

{ for(j=0; j

if(fun(x)) printf(\ else printf(\}

23、给定程序中,函数fun的功能是将a和b所指的两个字符串分别转换成面值相同的整数,并进行相加作为函数值返回,规定字符串中只含9个以下数字字符。

例如,主函数中输入字符串:32486和12345,在主函数中输出的函数值为:44831。

请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。

#include #include #include #define N 9

long ctod( char *s ) { long d=0; while(*s)

if(isdigit( *s)) {

/**********found**********/ d=d*10+*s-__1__;

/**********found**********/ __2__; } return d;

5

学海教育 内部资料 版权所有 翻印必究

}

long fun( char *a, char *b ) {

/**********found**********/ return __3__; }

main()

{ char s1[N],s2[N]; do

{ printf(\ string s1 : \ while( strlen(s1)>N ); do

{ printf(\ string s2 : \ while( strlen(s2)>N );

printf(\ %ld\\n\}

24、给定程序中,函数fun的功能是:把形参s所指字符串中下标为奇数的字符右移到下一个奇数位置,最右边被移出字符串的字符绕回放到第一个奇数位置,下标为偶数的字符不动(注:字符串的长度大于等于2)。例如,形参s所指的字符串为:abcdefgh,执行结果为:ahcbedgf。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

#include void fun(char *s)

{ int i, n, k; char c; n=0;

for(i=0; s[i]!='\\0'; i++) n++; /**********found**********/ if(n%2==0) k=n-___1___ ; else k=n-2;

/**********found**********/ c=___2___ ;

for(i=k-2; i>=1; i=i-2) s[i+2]=s[i]; /**********found**********/ s[1]=___3___ ; }

main()

{ char s[80]=\

printf(\ %s\\n\ fun(s);

printf(\ %s\\n\}

25、给定程序中,函数fun的功能是:求出形参ss所指字符串数组中最长字符串的长度,将其余字符串右边用字符*补齐,使其与最长的字符串等长。ss所指字符串数组中共有M个字符串,且串长

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

#include #include #define M 5 #define N 20 void fun(char (*ss)[N]) { int i, j, n, len=0; for(i=0; in)n=len; }

for(i=0; i

/**********found**********/ n=strlen(___1___); for(j=0; j

main()

{ char ss[M][N]={\ int i;

printf(\ for(i=0; i

printf(\

for(i=0; i

}

26、给定程序中,函数fun的功能是:将N×N矩阵中元素的值按列右移1个位置,右边被移出矩阵的元素绕回左边。例如,N=3,有下列矩阵 1 2 3 4 5 6

7 8 9计算结果为 3 1 2 6 4 5 9 7 8

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

#include #define N 4 void fun(int (*t)[N]) { int i, j, x;

/**********found**********/ for(i=0; i<___1___; i++) {

/**********found**********/ x=t[i][___2___] ; for(j=N-1; j>=1; j--) t[i][j]=t[i][j-1]; /**********found**********/ t[i][___3___]=x; } }

main()

{ int t[][N]={21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10}, i, j; printf(\ for(i=0; i

{ for(j=0; j

fun(t);

printf(\ for(i=0; i

{ for(j=0; j

27、给定程序中,函数fun的功能是根据形参i的值返回某个函数的值。当调用正确时, 程序输出:

x1=5.000000, x2=3.000000, x1*x1+x1*x2=40.000000

请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。

#include double f1(double x) { return x*x; }

double f2(double x, double y) { return x*y; }

/**********found**********/

__1__ fun(int i, double x, double y) { if (i==1)

/**********found**********/ return __2__(x); else

/**********found**********/ return __3__(x, y); }

main()

{ double x1=5, x2=3, r; r = fun(1, x1, x2); r += fun(2, x1, x2);

printf(\}

28、给定程序的主函数中,已给出由结构体构成的链表结点a、b、c,各结点的数据域中均存入字符,函数fun()的作用是:将a、b、c三个结点链接成一个单向链表,并输出链表结点中的数据。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

#include typedef struct list { char data;

struct list *next; } Q;

void fun( Q *pa, Q *pb, Q *pc) { Q *p;

6

学海教育 内部资料 版权所有 翻印必究

/**********found**********/ pa->next=___1___; pb->next=pc; p=pa; while( p ) {

/**********found**********/ printf(\ %c\/**********found**********/ p=____3____; }

printf(\}

main()

{ Q a, b, c;

a.data='E'; b.data='F'; c.data='G'; c.next=NULL; fun( &a, &b, &c ); }

29、给定程序中,函数fun的功能是:对形参ss所指字符串数组中的M个字符串按长度由短到长进行排序。ss所指字符串数组中共有M个字符串,且串长

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

#include #include #define M 5 #define N 20 void fun(char (*ss)[N])

{ int i, j, k, n[M]; char t[N]; for(i=0; i

/**********found**********/ for(j=___1___; jn[j]) ___2___; if(k!=i)

{ strcpy(t,ss[i]); strcpy(ss[i],ss[k]); /**********found**********/ strcpy(ss[k],___3___); n[k]=n[i]; } } }

main()

{ char ss[M][N]={\ int i;

printf(\ for(i=0; i

printf(\

for(i=0; i

30、给定程序中,函数fun的作用是:统计整型变量m中各数字出现的次数,并存放到数组a中,其中:a[0]存放0出现的次数,a[1]存放1出现的次数,?? a[9]存放9出现的次数。

例如,若m为14579233,则输出结果应为:0,1,1,2,1,1,0,1,0,1,

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

#include

void fun( int m, int a[10]) { int i;

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

/**********found**********/ __1__ = 0; while (m > 0) {

/**********found**********/ i = ___2___; a[i]++;

/**********found**********/ m = ___3___; } }

main()

{ int m, a[10],i;

printf(\请输入一个整数 : \ scanf(\ fun(m, a);

for (i=0; i<10; i++) printf(\ printf(\}

31、给定程序中,函数fun的功能是:在形参s所指字符串中的每个数字字符之后插入一个*号。例如,形参s所指的字符串为:def35adh3kjsdf7。执行结果为:def3*5*adh3*kjsdf7*。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

#include void fun(char *s) { int i, j, n;

for(i=0; s[i]!='\\0'; i++)

/**********found**********/ if(s[i]>='0' ___1___ s[i]<='9') { n=0;

/**********found**********/

while(s[i+1+n]!= ___2___) n++; for(j=i+n+1; j>i; j--) /**********found**********/ s[j+1]= ___3___; s[j+1]='*'; i=i+1; } }

main()

{ char s[80]=\

printf(\ %s\\n\ fun(s);

printf(\ %s\\n\}

32、函数fun的功能是:输出a所指数组中的前n个数据,要求每行输出5个数。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

#include #include void fun( int *a, int n ) { int i;

for(i=0; i

/**********found**********/ if( ___1___==0 )

/**********found**********/ printf(\/**********found**********/ printf(\ \ } }

main()

{ int a[100]={0}, i,n; n=22;

for(i=0; i

33、给定程序中,函数fun的功能是:调用随机函数产生20个互不相同的整数放在形参a所指数组中(此数组在主函数中已置0)。

请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。

#include #include #define N 20 void fun( int *a) { int i, x, n=0; x=rand() ;

/**********found**********/ while (n<__1__)

{ for(i=0; i

/**********found**********/ if( x==a[i] ) __2__; /**********found**********/ if( i==__3__){ a[n]=x; n++; } x=rand() ; } }

7

学海教育 内部资料 版权所有 翻印必究

main()

{ int x[N]={0} ,i; fun( x );

printf(\ \\n\ for( i=0; i

if((i+1)%5==0)printf(\ }

printf(\}

34、函数fun的功能是进行数字字符转换。若形参ch中是数字字符'0'~'9', 则'0'转换成'9','1'转换成'8','2'转换成'7',??,'9'转换成'0';若是其它字符则保持不变;并将转换后的结果作为函数值返回。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

#include

/**********found**********/ ___1___ fun(char ch) {

/**********found**********/ if (ch>='0' && ___2___) /**********found**********/ return '9'- (ch-___3___); return ch ; }

main()

{ char c1, c2;

printf(\ :\\n\ c1='2'; c2 = fun(c1);

printf(\ c2=%c\\n\ c1='8'; c2 = fun(c1);

printf(\ c2=%c\\n\ c1='a'; c2 = fun(c1);

printf(\ c2=%c\\n\}

35、给定程序中,函数fun的功能是:求ss所指字符串数组中长度最长的字符串所在的行下标,作为函数值返回,并把其串长放在形参n所指变量中。ss所指字符串数组中共有M个字符串,且串长

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

#include #include #define M 5 #define N 20

/**********found**********/

int fun(char (*ss) ___1___, int *n) { int i, k=0, len=0; for(i=0; i

/**********found**********/ if(i==0) *n=___2___; if(len>*n) {

/**********found**********/ ___3___; k=i; } }

return(k); }

main()

{ char ss[M][N]={\ int n,k,i;

printf(\ for(i=0;i

printf(\ %d\\n\ printf(\ %s\\n\}

36、给定程序中,函数fun的功能是:求出形参ss所指字符串数组中最长字符串的长度,其余字符串左边用字符*补齐,使其与最长的字符串等长。字符串数组中共有M个字符串,且串长

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

#include #include #define M 5 #define N 20

void fun(char (*ss)[N]) { int i, j, k=0, n, m, len; for(i=0; in) {

/**********found**********/ n=len; ___1___=i; } }

for(i=0; i

len=strlen(ss[i]);

/**********found**********/ for(j=___2___; j>=0; j--) ss[i][m--]=ss[i][j]; for(j=0; j

main()

{ char ss[M][N]={\ int i;

printf(\ for(i=0; i

printf(\

for(i=0; i

37、给定程序中,函数fun的功能是:将形参std所指结构体数组中年龄最大者的数据作为函数值返回,并在main函数中输出。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

#include typedef struct

{ char name[10]; int age; }STD;

STD fun(STD std[], int n) { STD max; int i; /**********found**********/ max= ___1___; for(i=1; i

/**********found**********/

if(max.age<___2___) max=std[i]; return max; }

main( )

{ STD std[5]={\ }; STD max; max=fun(std,5);

printf(\/**********found**********/

printf(\ Age : %d\\n\}

38、人员的记录由编号和出生年、月、日组成,N名人员的数据已在主函数中存入结构体数组std中,且编号唯一。函数fun的功能是:找出指定编号人员的数据,作为函数值返回,由主函数输出,若指定编号不存在,返回数据中的编号为空串。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

#include #include #define N 8 typedef struct { char num[10];

int year,month,day ; }STU;

/**********found**********/

___1___ fun(STU *std, char *num)

{ int i; STU a={\ for (i=0; i

/**********found**********/

if( strcmp(___2___,num)==0 )

8

学海教育 内部资料 版权所有 翻印必究

/**********found**********/ return (___3___); return a; }

main() { STU std[N]={ {\

{\ {\ STU p; char n[10]=\ p=fun(std,n); if(p.num[0]==0)

printf(\ else

{ printf(\ \

printf(\ %d-%d-%d\\n\ } }

39、给定程序中,函数fun的功能是:有N×N矩阵,将矩阵的外围元素顺时针旋转。操作顺序是:首先将第一行元素的值存入临时数组r,然后使第一列成为第一行,最后一行成为第一列,最后一列成为最后一行,临时数组中的元素成为最后一列。例如,若N=3,有下列矩阵: 1 2 3 4 5 6

7 8 9计算结果为 7 4 1 8 5 2 9 6 3

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

#include #define N 4 void fun(int (*t)[N]) { int j ,r[N];

for(j=0; j

/**********found**********/ t[0][N-j-1]=t[j][___1___ ]; for(j=0; j

/**********found**********/ for(j=N-1; j>=0;___2___ ) t[N-1][N-1-j]=t[j][N-1]; for(j=N-1; j>=0; j--)

/**********found**********/ t[j][N-1]=r[___3___]; }

main()

{ int t[][N]={21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10}, i, j; printf(\ for(i=0; i

{ for(j=0; j

fun(t);

printf(\ for(i=0; i

{ for(j=0; j

40、给定程序中,函数fun的功能是:将N×N矩阵主对角线元素中的值与反向对角线对应位置上元素中的值进行交换。例如,若N=3,有下列矩阵: 1 2 3 4 5 6

7 8 9交换后为: 3 2 1 4 5 6 9 8 7

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

#include #define N 4

/**********found**********/ void fun(int ___1___ , int n)

{ int i,s;

/**********found**********/ for(___2___; i++) { s=t[i][i];

t[i][i]=t[i][n-i-1];

/**********found**********/ t[i][n-1-i]=___3___; } }

main()

{ int t[][N]={21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10}, i, j; printf(\ for(i=0; i

{ for(j=0; j

fun(t,N);

printf(\ for(i=0; i

{ for(j=0; j

41、给定程序中,函数fun的功能是:在形参s所指字符串中寻找与参数c相同的字符,并在其后插入一个与之相同的字符,若找不到相同的字符则函数不做任何处理。

例如,s所指字符串为:baacda,c中的字符为:a, 执行后s所指字符串为:baaaacdaa。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

#include

void fun(char *s, char c) { int i, j, n;

/**********found**********/ for(i=0; s[i]!=___1___ ; i++) if(s[i]==c) {

/**********found**********/ n=___2___ ;

while(s[i+1+n]!='\\0') n++;

for(j=i+n+1; j>i; j--) s[j+1]=s[j]; /**********found**********/ s[j+1]=___3___ ; i=i+1; } }

main()

{ char s[80]=\

printf(\ %s\\n\

printf(\ \ scanf(\ fun(s,c);

printf(\ %s\\n\}

42、程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun的功能是重写形参filename所指文件中最后一个学生的数据,即用新的学生数据覆盖该学生原来的数据,其它学生的数据不变。

请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。

#include #define N 5 typedef struct student { long sno;

char name[10]; float score[3]; } STU;

void fun(char *filename, STU n) { FILE *fp;

/**********found**********/ fp = fopen(__1__, \/**********found**********/

fseek(__2__, -(long)sizeof(STU), SEEK_END); /**********found**********/

fwrite(&n, sizeof(STU), 1, __3__); fclose(fp); }

main()

9

学海教育 内部资料 版权所有 翻印必究

{ STU t[N]={ {10001,\ {10003,\ {10004,\ {10005,\ STU n={10006,\ int i,j; FILE *fp; fp = fopen(\ fwrite(t, sizeof(STU), N, fp); fclose(fp);

fp = fopen(\ fread(ss, sizeof(STU), N, fp); fclose(fp);

printf(\ for (j=0; j

{ printf(\ Name: %-8s Scores: \ for (i=0; i<3; i++) printf(\ printf(\ }

fun(\

printf(\ fp = fopen(\ fread(ss, sizeof(STU), N, fp); fclose(fp);

for (j=0; j

{ printf(\ Name: %-8s Scores: \ for (i=0; i<3; i++) printf(\ printf(\ } }

43、程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun的功能是从形参filename所指的文件中读入学生数据,并按照学号从小到大排序后,再用二进制方式把排序后的学生数据输出到filename所指的文件中,覆盖原来的文件内容。 请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。

#include #define N 5 typedef struct student { long sno;

char name[10]; float score[3]; } STU;

void fun(char *filename) { FILE *fp; int i, j; STU s[N], t;

/**********found**********/ fp = fopen(filename, __1__); fread(s, sizeof(STU), N, fp); fclose(fp);

for (i=0; i

/**********found**********/ if (s[i].sno __2__ s[j].sno)

{ t = s[i]; s[i] = s[j]; s[j] = t; } fp = fopen(filename, \/**********found**********/

__3__(s, sizeof(STU), N, fp); /* 二进制输出 */ fclose(fp); }

main()

{ STU t[N]={ {10005,\ {10002,\ {10001,\ int i,j; FILE *fp; fp = fopen(\ fwrite(t, sizeof(STU), 5, fp); fclose(fp);

printf(\ for (j=0; j

{ printf(\ Name: %-8s Scores: \ for (i=0; i<3; i++) printf(\ printf(\ }

fun(\

printf(\ fp = fopen(\ fread(ss, sizeof(STU), 5, fp); fclose(fp);

for (j=0; j

{ printf(\ Name: %-8s Scores: \ for (i=0; i<3; i++) printf(\ printf(\ } }

44、给定程序中,函数fun的功能是:将形参指针所指结构体数组中的三个元素按num成员进行升序排列。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

#include typedef struct { int num;

char name[10]; }PERSON;

/**********found**********/ void fun(PERSON ___1___) {

/**********found**********/ ___2___ temp;

if(std[0].num>std[1].num)

{ temp=std[0]; std[0]=std[1]; std[1]=temp; } if(std[0].num>std[2].num)

{ temp=std[0]; std[0]=std[2]; std[2]=temp; } if(std[1].num>std[2].num)

{ temp=std[1]; std[1]=std[2]; std[2]=temp; } }

main()

{ PERSON std[ ]={ 5,\ int i;

/**********found**********/ fun(___3___);

printf(\ for(i=0; i<3; i++)

printf(\}

45、给定程序中,函数fun的功能是:计算x所指数组中N个数的平均值(规定所有数均为正数),平均值通过形参返回主函数,将小于平均值且最接近平均值的数作为函数值返回,在主函数中输出。

例如,有10个正数:46 30 32 40 6 17 45 15 48 26,平均值为:30.500000

主函数中输出:m=30

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

#include #include #define N 10

double fun(double x[],double *av) { int i,j; double d,s; s=0;

for(i=0; i

for(i=0; i

if(x[i]<*av && *av - x[i]<=d){ /**********found**********/ d=*av-x[i]; j=__2__;} /**********found**********/ return __3__; }

main()

{ int i; double x[N]= {46,30,32,40,6,17,45,15,48,26}; double av,m;

for(i=0; i

printf(\ printf(\ printf(\}

46、给定程序通过定义并赋初值的方式,利用结构体变量存储了一名学生的学号、姓名和3门课的成绩。函数fun的功能是将该学生的各科成绩都乘以一个系数a。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

#include

10

学海教育 内部资料 版权所有 翻印必究

typedef struct { int num;

char name[9]; float score[3]; }STU;

void show(STU tt) { int i;

printf(\ %s : \ for(i=0; i<3; i++)

printf(\ printf(\}

/**********found**********/ void modify(___1___ *ss,float a) { int i;

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

/**********found**********/ ss->___2___ *=a; }

main( )

{ STU std={ 1,\ float a;

printf(\ show(std);

printf(\ \ scanf(\/**********found**********/ modify(___3___,a);

printf(\ show(std); }

47、围绕山顶一圈有N个山洞,编号为0、1、2、3、??、N-1,有一只狐狸和一只兔子在洞中居住。狐狸总想找到兔子并吃掉它,它的寻找方法是先到第一个洞(即编号为0的洞)中找;再隔1个洞,即到编号为2的洞中找;再隔2个洞,即到编号为5的洞中找;下次再隔3个洞;即到编号为9的洞中找;??。若狐狸找一圈,请为兔子指出所有不安全的洞号。程序中用a数组元素模拟每个洞,数组元素的下标即为洞号,数组元素中的值为0时,表示该洞安全,为1时表示该洞不安全。例如,当形参n的值为30时,不安全的洞号是0、2、5、9、14、20、27。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

#include #define N 100 void fun( int *a , int n ) { int i, t;

for( i=0; i

/**********found**********/ a[i]=___1___; i=0;

/**********found**********/ ___2___=1; while( i

/**********found**********/ i=___3___; } }

main()

{ int a[N], i, n=30; fun( a, n);

for(i=0; i

if( a[i]==1 ) printf(\不安全的洞号是 : %d\\n\}

48、函数fun的功能是:逆置数组元素中的值。例如:若a所指数组中的数据依次为:1、2、3、4、5、6、7、8、9,则逆置后依次为:9、8、7、6、5、4、3、2、1。形参n给出数组中数据的个数。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

#include void fun(int a[], int n) { int i,t;

/**********found**********/ for (i=0; i<___1___; i++) {

t=a[i];

/**********found**********/ a[i] = a[n-1-___2___];

/**********found**********/ ___3___ = t; } }

main()

{ int b[9]={1,2,3,4,5,6,7,8,9}, i; printf(\ :\\n\ for (i=0; i<9; i++)

printf(\ printf(\ fun(b, 9);

printf(\ :\\n\ for (i=0; i<9; i++)

printf(\ printf(\}

49、函数fun的功能是:把形参a所指数组中的最大值放在a[0]中,接着求出a所指数组中的最小值放在a[1]中;再把a所指数组元素中的次大值放在a[2]中,把a数组元素中的次小值放在a[3]中;其余以此类推。例如:若a所指数组中的数据最初排列为:1、4、2、3、9、6、5、8、7,则按规则移动后,数据排列为:9、1、8、2、7、3、6、4、5。形参n中存放a所指数组中数据的个数。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

#include #define N 9

/**********found**********/ void fun(int ___1___, int n) { int i, j, max, min, px, pn, t; /**********found**********/ for (i=0; i

/**********found**********/ for (j=___3___; j

{ max = a[j]; px = j; } if (min > a[j])

{ min = a[j]; pn = j; } }

if (px != i)

{ t = a[i]; a[i] = max; a[px] = t; if (pn == i) pn= px; }

if (pn != i+1)

{ t = a[i+1]; a[i+1] = min; a[pn] = t; } } }

main()

{ int b[N]={1,4,2,3,9,6,5,8,7}, i; printf(\ :\\n\

for (i=0; i

printf(\ :\\n\ for (i=0; i

50、给定程序中,函数fun的功能是将参数给定的字符串、整数、浮点数写到文本文件中,再用字符串方式从此文本文件中逐个读入,并调用库函数atoi和atof将字符串转换成相应的整数、浮点数,然后将其显示在屏幕上。

请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。

#include #include

void fun(char *s, int a, double f) {

/**********found**********/ __1__ fp;

char str[100], str1[100], str2[100]; int a1; double f1; fp = fopen(\

fprintf(fp, \ %d %f\\n\/**********found**********/ __2__ ;

fp = fopen(\/**********found**********/

fscanf(__3__,\

11

学海教育 内部资料 版权所有 翻印必究

fclose(fp); a1 = atoi(str1); f1 = atof(str2);

printf(\}

main()

{ char a[10]=\ int b=12345; double c= 98.76; fun(a,b,c); }

二、程序修改题

1、给定程序MODI1.C中,fun函数的功能是:删除b所指数组中小于10的数据。主函数中输出删除后数组中余下的数据。

请改正函数fun中指定部位的错误,使它能得出正确的结果。 #include #include #define N 20 int fun( int *b ) {

/**********found**********/ int t[N] ,i, num for(i=0; i=10)

/**********found**********/ t[++num]=b[i];

/**********found**********/ for(i=0; i

main()

{ int a[N],i,num;

printf(\数组中的数据 :\\n\

for(i=0;i

for(i=0;i

2、给定程序MODI1.C中函数 fun 的功能是: 将十进制正整数m转换成k(2≤k≤9)进制数, 并按高位到低位顺序输出。 例如,若输入8和2,则应输出1000(即十进制数8转换成二进制表示是1000)。 请改正 fun 函数中的错误,使它能得出正确的结果。

注意:不要改动 main 函数。不得增行或删行,也不得更改程序的结构! #include #include void fun( int m, int k ) {

int aa[20], i;

for( i = 0; m; i++ ) {

/**********found**********/ aa[i] = m/k; m /= k; }

for( ; i; i-- )

/**********found**********/ printf( \}

main() {

int b, n;

printf( \ scanf( \ fun( n, b ); printf(\}

3、给定程序MODI1.C中函数 fun 的功能是:用冒泡法对6个字符串按由小到大的顺序进行排序。

请改正程序中的错误,使它能得出正确的结果。

注意: 不要改动 main 函数,不得增行或删行,也不得更改程序的结构! #include #include #define MAXLINE 20 fun ( char *pstr[6]) { int i, j ; char *p ;

for (i = 0 ; i < 5 ; i++ ) {

/**************found**************/ for (j = i + 1, j < 6, j++) {

if(strcmp(*(pstr + i), *(pstr + j)) > 0) {

p = *(pstr + i) ;

/**************found**************/ *(pstr + i) = pstr + j ; *(pstr + j) = p ; } } } }

main( ) { int i ;

char *pstr[6], str[6][MAXLINE] ; for(i = 0; i < 6 ; i++) pstr[i] = str[i] ;

printf( \ for(i = 0 ; i < 6 ; i++) scanf(\ fun(pstr) ;

printf(\

for(i = 0 ; i < 6 ; i++) printf(\}

4、给定程序MODI1.C中函数fun的功能是:计算函数F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值。其中x和y的值不等,z和y的值不等。 例如,当x的值为9、y的值为11、z的值为15时,函数值为 -3.50。 请改正程序中的错误,使它能得出正确结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 #include #include #include

/************found************/ #define FU(m,n) (m/n) float fun(float a,float b,float c) { float value;

value=FU(a+b,a-b)+FU(c+b,c-b); /************found************/ Return(Value); }

main()

{ float x,y,z,sum;

printf(\ x y z: \ scanf(\

printf(\

if (x==y||y==z){printf(\ sum=fun(x,y,z);

printf(\}

5、给定程序MODI1.C中函数 fun 的功能是:用下面的公式求π的近似值,直到最后一项的绝对值小于指定的数(参数num )为止: π 1 1 1

┄┄≈1 - ┄┄ + ┄┄ - ┄┄ + ... 4 3 5 7

例如, 程序运行后, 输入0.0001, 则程序输出3.1414。 请改正程序中的错误,使它能输出正确的结果。

注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构! #include #include float fun ( float num ) { int s ;

float n, t, pi ;

t = 1 ; pi = 0 ; n = 1 ; s = 1 ;

/**************found**************/ while(t >= num) {

pi = pi + t ; n = n + 2 ; s = -s ;

/**************found**************/ t = s % n ; }

pi = pi * 4 ; return pi ; }

main( )

{ float n1, n2 ;

12

学海教育 内部资料 版权所有 翻印必究

printf(\ scanf(\ n2 = fun(n1) ;

printf(\}

6、给定程序MODI1.C中函数 fun 的功能是:求出数组中最大数和次最大数,并把最大数和a[0]中的数对调、次最大数和a[1]中的数对调。 请改正程序中的错误,使它能得出正确的结果。

注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构! #include #define N 20

void fun ( int * a, int n ) { int i, m, t, k ; for(i=0;i<2;i++) {

/**********found**********/ m=0;

for(k=i+1;k

/**********found**********/ if(a[k]>a[m]) k=m; t=a[i];a[i]=a[m];a[m]=t; } }

main( )

{ int b[N]={11,5,12,0,3,6,9,7,10,8}, n=10, i; for ( i=0; i

for ( i=0; i

}

return( y ) ; }

main( )

{ int n = 2000 ;

printf( \}

9、给定程序MODI1.C中函数 fun 的功能是:统计字符串中各元音字母(即:A、E、I、O、U)的个数。注意:字母不分大、小写。

例如:若输入:THIs is a boot,则输出应该是:1、0、2、2、0。 请改正程序中的错误,使它能得出正确的结果。

注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构! #include

void fun ( char *s, int num[5] ) { int k, i=5;

for ( k = 0; k

/**********found**********/ num[i]=0; for (; *s; s++) { i = -1;

/**********found**********/ switch ( s )

{ case 'a': case 'A': {i=0; break;} case 'e': case 'E': {i=1; break;} case 'i': case 'I': {i=2; break;} case 'o': case 'O': {i=3; break;} case 'u': case 'U': {i=4; break;} }

if (i >= 0) num[i]++; } }

main( )

{ char s1[81]; int num1[5], i;

printf( \ gets( s1 ); fun ( s1, num1 );

for ( i=0; i < 5; i++ ) printf (\}

10、给定程序MODI1.C的功能是:读入一个英文文本行,将其中每个单词的第一个字母改成大写,然后输出此文本行(这里的“单词”是指由空格隔开的字符串)。

例如,若输入:I am a student to take the examination.,

则应输出:I Am A Student To Take The Examination.。 请改正程序中的错误,使程序能得出正确的结果。

注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构! #include #include

/************found************/ include

/************found************/ void upfst ( char p ) { int k=0;

for ( ; *p; p++ ) if ( k )

{ if ( *p == ' ' ) k = 0; } else if ( *p != ' ' )

{ k = 1; *p = toupper( *p ); } }

main( )

{ char chrstr[81];

printf( \ gets( chrstr ); printf( \ %s\ upfst( chrstr );

printf( \ %s\\n\}

11、给定程序MODI1.C中函数fun的功能是:求出两个非零正整数的最大公约数,并作为函数值返回。

例如,若给num1和num2分别输入49和21,则输出的最大公约数为7;若给num1和num2分别输入27和81,则输出的最大公约数为27。 请改正程序中的错误,使它能得出正确结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 #include int fun(int a,int b) { int r,t; if(a

/************found************/ t=a; b=a; a=t;

7、

例如,若给m输入 -100,给n输入90,则函数求得的一个根值为2.000。 请改正程序中的错误,使它能得出正确结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 #include #include

double funx(double x)

{ return(2*x*x*x-4*x*x+3*x-6); } double fun( double m, double n) {

/************found************/ int r; r=(m+n)/2;

/************found************/ while(fabs(n-m)<0.001)

{ if(funx(r)*funx(n)<0) m=r; else n=r; r=(m+n)/2; }

return r; }

main( )

{ double m,n, root;

printf(\ m n : \\n\ root=fun( m,n );

printf(\}

8、给定程序MODI1.C中函数fun的功能是:根据整型形参m,计算如下公式的值。

1 1 1 1 y = ------- + --------- + --------- + …… + -------

100*100 200*200 300*300 m*m 例如,若m = 2000,则应输出: 0.000160。

请改正程序中的语法错误,使它能计算出正确的结果。

注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构! #include

/************found************/ fun ( int m ) { double y = 0, d ; int i ;

/************found************/ for( i = 100, i <= m, i += 100 ) { d = (double)i * (double)i ; y += 1.0 / d ;

13

学海教育 内部资料 版权所有 翻印必究

}

r=a%b; while(r!=0)

{ a=b; b=r; r=a%b; }

/************found************/ return(a); }

main()

{ int num1, num2,a;

printf(\ num1 num2: \ printf(\ num2= %d\\n\\n\ a=fun(num1,num2);

printf(\}

12、给定程序MODI1.C中函数 fun 的功能是:将tt所指字符串中的小写字母都改为对应的大写字母,其它字符不变。 例如,若输入\,则输出\。

请改正程序中的错误,使它能得出正确的结果。

注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构! #include #include char* fun( char tt[] ) {

int i;

for( i = 0; tt[i]; i++ )

/**********found***********/ if(( 'a' <= tt[i] )||( tt[i] <= 'z' ) ) /**********found***********/ tt[i] += 32; return( tt ); }

main( ) {

char tt[81];

printf( \ gets( tt );

printf( \}

13、给定程序MODI1.C的功能是:读入一个整数k(2≤k≤10000),打印它的所有质因子(即所有为素数的因子)。

例如,若输入整数:2310,则应输出:2、3、5、7、11。 请改正程序中的语法错误,使程序能得出正确的结果。

注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构! #include

/************found************/ IsPrime ( int n ); { int i, m; m = 1;

for ( i = 2; i < n; i++ ) /************found************/ if !( n%i )

{ m = 0; break ; } return ( m ); }

main( )

{ int j, k;

printf( \enter an integer number between 2 and 10000: \); scanf( \

printf( \ for( j = 2; j <= k; j++ )

if( ( !( k%j ) )&&( IsPrime( j ) ) ) printf( \ printf(\}

14、给定程序MODI1.C中函数fun的功能是:把主函数中输入的3个数,最大的放在a中,最小的放在c中,中间的放在b中。 例如,输入的数为:55 12 34,

输出结果应当是:a=55.0 , b=34.0 , c=12.0。 请改正程序中的错误,使它能得出正确结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 #include

void fun(float *a,float *b,float *c) {

/**********found**********/ float *k; if( *a<*b )

{ k=*a; *a=*b; *b=k; } /**********found**********/

if( *a>*c )

{ k=*c; *c=*a; *a=k; } if( *b<*c )

{ k=*b; *b=*c; *c=k; } }

main()

{ float a,b,c;

printf(\ a b c: \ scanf(\ printf(\ fun(&a,&b,&c);

printf(\}

15、给定程序MODI1.C中函数fun的功能是: 依次取出字符串中所有数字字符, 形成新的字符串, 并取代原字符串。

请改正函数fun中指定部位的错误, 使它能得出正确的结果。

注意: 不要改动main函数, 不得增行或删行, 也不得更改程序的结构! #include void fun(char *s) { int i,j;

for(i=0,j=0; s[i]!='\\0'; i++) if(s[i]>='0' && s[i]<='9') /**********found**********/ s[j]=s[i];

/**********found**********/ s[j]=\}

main()

{ char item[80];

printf(\ : \

printf(\ string is : \\\ fun(item);

printf(\ : \\\}

16、给定程序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\\n\}

17、给定程序MODI1.C中函数fun的功能是:通过某种方式实现两个变量值的交换,规定不允许增加语句和表达式。例如变量a 中的值原为8,b中的值原为3, 程序运行后 a 中的值为 3,b中的值为8。 请改正程序中的错误,使它能得出正确的结果。

注意: 不要改动 main 函数,不得增行或删行,也不得更改程序的结构! #include int fun(int *x,int y) {

int t ;

/**************found**************/ t = x ; x = y ;

/**************found**************/ return(y) ; }

main() {

int a = 3, b = 8 ;

printf(\ %d\\n\ b = fun(&a, b) ;

printf(\ %d\\n\}

18、给定程序MODI1.C中函数fun的功能是:用递归算法计算斐波拉契数列中第n项的值。从第1项起,斐波拉契数列为:1、1、2、3、5、8、13、21、??

14

学海教育 内部资料 版权所有 翻印必究

例如,若给n输入7,该项的斐波拉契数值为:13。 请改正程序中的错误,使它能得出正确结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 #include long fun(int g) {

/**********found**********/ switch(g);

{ case 0: return 0;

/**********found**********/ case 1 ;case 2 : return 1 ; }

return( fun(g-1)+fun(g-2) ); }

main()

{ long fib; int n;

printf(\ \ fib=fun(n);

printf(\}

19、给定程序MODI1.C中函数fun的功能是:首先把b所指字符串中的字符按逆序存放, 然后将a所指字符串中的字符和b所指字符串中的字符,按排列的顺序交叉合并到c所指数组中,过长的剩余字符接在c所指数组的尾部。例如,当a所指字符串中的内容为\,b所指字符串中的内容为\时,c所指数组中的内容应该为\;而当a所指字符串中的内容为\,b所指字符串中的内容为\时,c所指数组中的内容应该为\。 请改正程序中的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构! #include #include

void fun( char *a, char *b, char *c ) {

int i , j; char ch; i = 0; j = strlen(b)-1;

/************found************/ while ( i > j )

{ ch = b[i]; b[i] = b[j]; b[j] = ch; i++; j--; }

while ( *a || *b ) {

/************found************/ If ( *a )

{ *c = *a; c++; a++; } if ( *b )

{ *c = *b; c++; b++; } }

*c = 0; }

main() {

char s1[100],s2[100],t[200];

printf(\ printf(\ fun( s1, s2, t );

printf(\}

20、给定程序MODI1.C中函数 fun 的功能是:计算并输出high以内最大的10个素数之和。high的值由主函数传给fun函数。 若high的值为: 100, 则函数的值为: 732。

请改正程序中的错误,使程序能输出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!

#include #include int fun( int high )

{ int sum = 0, n=0, j, yes;

/************found************/ while ((high >= 2) && (n < 10) { yes = 1;

for (j=2; j<=high/2; j++ ) if (high % j ==0 ){

/************found************/ yes=0; break }

if (yes) { sum +=high; n++; } high--; }

return sum ; }

main ( ) {

printf(\}

21、给定程序MODI1.C中函数fun的功能是:按以下递归公式求函数值。 ┌ 10 (n=1) fun(n)=┥

└ fun(n-1)+2 (n>1)

例如,当给n输入5时,函数值为18;当给n输入3时,函数值为14。 请改正程序中的错误,使它能得出正确结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 #include

/************found************/ fun ( n ) { int c;

/************found************/ if(n=1) c = 10 ; else

c= fun(n-1)+2; return(c); }

main()

{ int n;

printf(\ n : \ printf(\}

22、给定程序MODI1.C中fun函数的功能是: 根据整型形参m,计算如下公式的值。

1 1 1 t = 1 - ----- - ----- - …… - -----

2 3 m

例如,若主函数中输入5,则应输出 -0.283333。

请改正函数fun中的错误或在横线处填上适当的内容并把横线删除, 使它能计算出正确的结果。

注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构! #include double fun( int m ) {

double t = 1.0; int i;

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

/**********found**********/ t = 1.0-1 /i;

/**********found**********/ _______; }

main() {

int m ;

printf( \ scanf( \

printf( \}

23、给定程序MODI1.C中 fun 函数的功能是:分别统计字符串中大写字母和小写字母的个数。

例如, 给字符串 s 输入:AAaaBBb123CCccccd,则应输出结果:upper = 6, lower = 8。

请改正程序中的错误,使它能计算出正确的结果。

注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构! #include

/**********found**********/ void fun ( char *s, int a, int b ) {

while ( *s )

{ if ( *s >= 'A' && *s <= 'Z' ) /**********found**********/ *a=a+1 ;

if ( *s >= 'a' && *s <= 'z' ) /**********found**********/ *b=b+1; s++; } }

main( )

15

学海教育 内部资料 版权所有 翻印必究

{ char s[100]; int upper = 0, lower = 0 ; printf( \ \ gets ( s ); fun ( s, & upper, &lower );

printf( \ lower = %d\\n\}

24、给定程序MODI1.C中 fun 函数的功能是:求 s = aa… aa - ... - aaa - aa - a

(此处 aa? aa 表示 n 个 a, a 和 n 的值在 1 至 9 之间) 例如 a = 3, n = 6, 则以上表达式为: s = 333333 - 33333 - 3333 - 333 - 33 - 3 其值是:296298

a 和 n 是 fun 函数的形参,表达式的值作为函数值传回 main函数。 请改正程序中的错误,使它能计算出正确的结果。

注意: 不要改动 main 函数,不得增行或删行,也不得更改程序的结构!

#include long fun (int a, int n) { int j ;

/**************found**************/ long s = 0, t = 1 ; for ( j = 0 ; j < n ; j++) t = t * 10 + a ; s = t ;

for ( j = 1 ; j < n ; j++) {

/**************found**************/ t = t % 10 ; s = s - t ; }

return(s) ; }

main( )

{ int a, n ;

printf( \ scanf( \

printf( \ function is: %ld\\n\}

25、给定程序MODI1.C中 fun 函数的功能是:将p所指字符串中每个单词的最后一个字母改成大写。(这里的“单词”是指由空格隔开的字符串)。 例如, 若输入

\, 则应输出 \。 请修改程序中的错误之处, 使它能得出正确的结果。

注意: 不要改动 main 函数, 不得删行, 也不得更改程序的结构! #include #include #include void fun( char *p ) {

int k = 0;

for( ; *p; p++ ) if( k ) {

/**********found***********/ if( p == ' ' ) {

k = 0;

/**********found***********/

* (p-1) = toupper( *( p - 1 ) ) } } else k = 1; }

main() {

char chrstr[64]; int d ;

printf( \ gets(chrstr); d=strlen(chrstr) ; chrstr[d] = ' ' ; chrstr[d+1] = 0 ;

printf(\ %s\ fun(chrstr);

printf(\ %s\}

26

例如,若q的值为: 50.0,则函数值为: 49.394948。 请改正程序中的错误,使程序能输出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构! #include

double fun( double q ) { int n; double s,t; n = 2; s = 2.0;

while (s<=q) {

t=s;

/************found************/ s=s+(n+1)/n; n++; }

printf(\

/************found************/ return s; }

main ( ) {

printf(\}

27、给定程序MODI1.C中函数fun的功能是: 比较两个字符串,将长的那个字符串的首地址作为函数值返回。

请改正函数fun中指定部位的错误, 使它能得出正确的结果。

注意: 不要改动main函数, 不得增行或删行, 也不得更改程序的结构! #include

/**********found**********/ char fun(char *s, char *t)

{ int sl=0,tl=0; char *ss, *tt; ss=s; tt=t; while(*ss) { sl++;

/**********found**********/ (*ss)++; }

while(*tt) { tl++;

/**********found**********/ (*tt)++; }

if(tl>sl) return t; else return s; }

main()

{ char a[80],b[80];

printf(\ \

printf(\ \ printf(\}

28、给定程序MODI1.C中,函数fun()的功能是统计s所指一维数组中0的个数(存在变量zero中)和1的个数(存在变量one中),并输出结果。 请改正函数fun中指定部位的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

#include

void fun( int *s, int n ) {

/**********found**********/ int i, one=0, zero ; for(i=0; i

/**********found**********/ switch( s[i] ); {

/**********found**********/ case 0 : zero++; case 1 : one ++; }

printf( \ zero : %d\\n\ zero);

16

学海教育 内部资料 版权所有 翻印必究

}

main()

{ int a[20]={1,1,1,0,1,0,0,0,1,0,0,1,1,0,0,1,0,1,0,0}, n=20; fun( a, n ); }

29、给定程序MODI1.C中函数 fun 的功能是:判断ch中的字符是否与str所指串中的某个字符相同; 若相同,什么也不做,若不同,则将其插在串的最后。

请改正程序中的错误,使它能进行正确的操作。

注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构! #include #include

/**********found**********/ void fun(char str, char ch )

{ while ( *str && *str != ch ) str++; /**********found**********/ if ( *str == ch ) { str [ 0 ] = ch;

/**********found**********/ str[1] = '0'; } }

main( )

{ char s[81], c ;

printf( \ gets ( s ); printf (\ c = getchar(); fun(s, c) ;

printf( \ is %s\\n\ s); }

30、给定程序MODI1.C中,函数fun的功能是求矩阵(二维数组)a[N][N]中每行的最小值,结果存放到数组b中。

/**************found**************/ for(i = 2 ; i < m ; i++)

/**************found**************/ y += 1 / (i * i) ; return( y ) ; }

main( )

{ int n = 5 ;

printf( \}

32、给定程序MODI1.C中,函数fun的功能是:在任意给定的N个正整数中,从左到右依次逐个取三个数作为一组,按值大小找出该组数的中值,用该中值替换与该组数对应的原三个数中的中间位置的数。处理后原数列中首尾2个数不变。处理后的数列在主函数中输出。例如,有10个正整数如下:

请改正程序中指定部位的错误,使它能得出正确结果。

注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!

#include #define N 10

int findmid(int a, int b, int c) { int t;

t = (a>b)?(b>c?b:(a>c?c:a)):((a>c)?a:((b>c)?c:b)); /**********found**********/ return b; }

void fun(int x[]) { int i,a,b,c,t[N];

/**********found**********/ for(i=0;i

{ a=t[i];b=t[i+1];c=t[i+2]; /**********found**********/ t[i+1]=findmid(a,b,c); } }

main()

{ int i, x[N]={6,5,7,23,18,5,8,21,45,38}; for(i=0; i

for(i=0; i

33、给定程序MODI1.C中函数fun的功能是: 先从键盘上输入一个3行3列矩阵的各个元素的值, 然后输出主对角线元素之和。

请改正函数fun中的错误或在横线处填上适当的内容并把横线删除,使它能得出正确的结果。

注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构! #include void fun() {

int a[3][3],sum; int i,j;

/*********found**********/ ______;

printf(\ for (i=0;i<3;i++) { for (j=0;j<3;j++)

/*********found**********/ scanf(\ }

for (i=0;i<3;i++) sum=sum+a[i][i];

printf(\}

main()

请改正函数fun中指定部位的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 #include #define N 4

void fun(int a[][N], int b[]) { int i, j;

for (i=0; i

/**********found**********/ b[i] = a[0][0];

/**********found**********/ for (j=1; j

main()

{ int a[N][N]={{1,4,3,2},{8,6,5,7},{11,10,12,9},{13,16,14,15}},b[N]; int i;

fun(a,b);

for (i=0; i

31、给定程序MODI1.C中函数fun的功能是:根据整型形参m,计算如下公式的值。

1 1 1 1 y = 1 + ----- + ----- + ----- + …… + -----

2*2 3*3 4*4 m*m 例如,若 m 中的值为: 5,则应输出:1.463611。 请改正程序中的错误,使它能得出正确的结果。

注意: 不要改动 main 函数,不得增行或删行,也不得更改程序的结构! #include

double fun ( int m ) { double y = 1.0 ; int i;

17

学海教育 内部资料 版权所有 翻印必究

{

fun(); }

34、给定程序MODI1.C中函数fun的功能是:将p所指字符串中的所有字符复制到b中,要求每复制三个字符之后插入一个空格。

例如,在调用fun函数之前给a输入字符串:ABCDEFGHIJK, 调用函数之后,字符数组b中的内容则为:ABC DEF GHI JK。 请改正程序中的错误,使它能得出正确结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 #include

void fun(char *p, char *b) { int i, k=0; while(*p) { i=1;

while( i<=3 && *p ) { /**********found**********/ b[k]=p;

k++; p++; i++; } if(*p) {

/**********found**********/ b[k++]=\ } }

b[k]='\\0'; }

main()

{ char a[80],b[80];

printf(\ \ gets(a); printf(\ puts(a); fun(a,b);

printf(\ \ puts(b); printf(\}

35、给定程序MODI1.C中 fun 函数的功能是: 根据形参m,计算如下公式的值。

1 1 1 1 t = 1 + ----- +----- + ----- + ……+ -----

2 3 4 m 例如,若输入 5,则应输出 2.283333。

请改正程序中的错误或在下划线处填上适当的内容并把下划线删除, 使它能计算出正确的结果。

注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构! #include double fun( int m ) {

double t = 1.0; int i;

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

/**********found**********/ t += 1.0/k;

/**********found**********/ ________ }

main() {

int m;

printf( \ scanf( \

printf( \}

36、给定程序MODI1.C中函数fun的功能是: 计算整数n的阶乘。请改正程序中的错误或在下划线处填上适当的内容并把下划线删除,使它能计算出正确的结果。

注意: 不要改动 main 函数, 不得增行或删行, 也不得更改程序的结构!

#include double fun(int n) {

double result=1.0;

while (n>1 && n<170) /*********found*********/ result*=--n;

/*********found*********/ return _____;

}

main() {

int n;

printf(\ scanf(\

printf(\}

37、给定程序MODI1.C中函数 fun 的功能是:实现两个整数的交换。 例如给a和b分别输入:60 和 65,输出为:a = 65 b = 60 请改正程序中的错误,使它能得出正确的结果。

注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构! #include

/**********found**********/ void fun ( int a, b ) { int t;

/**********found**********/ t = b; b = a ; a = t; }

main ( )

{ int a, b;

printf ( \ a , b : \ fun ( &a , &b ) ;

printf (\ b = %d\\n \}

38、给定程序MODI1.C中函数fun的功能是:从s所指字符串中,找出与t所指字符串相同的子串的个数作为函数值返回。

例如,当s所指字符串中的内容为:\,t所指字符串的内容为:\,则函数返回整数3。

请改正程序中的错误,使它能得出正确的结果。

注意:不要改动main 函数,不得增行或删行,也不得更改程序的结构! #include #include

int fun (char *s, char *t) {

int n; char *p , *r; n = 0;

while ( *s )

{ p = s; r = t; while ( *r )

if ( *r == *p ) {

/************found************/ r++; p++ }

else break;

/************found************/ if ( r == '\\0' ) n++; s++; }

return n; }

main() {

char s[100], t[100]; int m;

printf(\ printf(\ m = fun( s, t);

printf(\ m = %d\\n\}

39、给定程序MODI1.C中函数 fun 的功能是:计算

S = f(-n) + f(-n+1) +?+ f(0) + f(1) + f(2) +?+ f(n)的值。例如,当n为5时,函数值应为:10.407143。f(x)函数定义如下: ┌(x+1)/(x-2) x>0 且 x≠2 f(x) = ┤0 x=0 或 x=2 └(x-1)/(x-2) x<0

请改正程序中的错误,使程序能输出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构! #include #include

/************found************/ f( double x) {

if (x == 0.0 || x == 2.0) return 0.0;

18

学海教育 内部资料 版权所有 翻印必究

else if (x < 0.0)

return (x -1)/(x-2); else

return (x +1)/(x-2); }

double fun( int n )

{ int i; double s=0.0, y; for (i= -n; i<=n; i++) {y=f(1.0*i); s += y;}

/************found************/ return s }

main ( ) {

printf(\}

40、由N个有序整数组成的数列已放在一维数组中,给定程序MODI1.C中函数fun的功能是:利用折半查找算法查找整数m在数组中的位置。若找到,返回其下标值;反之,返回-1。

折半查找的基本算法是:每次查找前先确定数组中待查的范围:low和high(lowhigh,查找结束。

请改正程序中的错误,使它能得出正确结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

#include #define N 10

/************found************/ void fun(int a[], int m ) { int low=0,high=N-1,mid; while(low<=high) { mid=(low+high)/2; if(m

/************found************/ else If(m > a[mid]) low=mid+1; else return(mid); }

return(-1); }

main()

{ int i,a[N]={-3,4,7,9,13,45,67,89,100,180 },k,m; printf(\数组中的数据如下:\ for(i=0;i

if(k>=0) printf(\ else printf(\}

41、在主函数中从键盘输入若干个数放入数组中, 用0结束输入并放在最后一个元素中。给定程序MODI1.C中函数fun的功能是:计算数组元素中值为正数的平均值(不包括0)。

例如:数组中元素中的值依次为:39,-47,21,2,-8,15,0, 则程序的运行结果为:19.250000。

请改正程序中的错误,使它能得出正确的结果。

注意:不要改动main 函数,不得增行或删行,也不得更改程序的结构! #include double fun ( int x[]) {

/************found************/ int sum = 0.0; int c=0, i=0; while (x[i] != 0) { if (x[i] > 0) {

sum += x[i]; c++; } i++; }

/************found************/ sum \\= c; return sum; }

main( )

{ int x[1000]; int i=0;

printf( \

do

{ scanf(\ } while (x[i++] != 0); printf(\}

42、给定程序MODI1.C中的函数Creatlink的功能是创建带头结点的单向链表, 并为各结点数据域赋0到m-1的值。

请改正函数Creatlink中指定部位的错误, 使它能得出正确的结果。 注意: 不要改动main函数, 不得增行或删行, 也不得更改程序的结构! #include #include typedef struct aa { int data;

struct aa *next; } NODE;

NODE *Creatlink(int n, int m) { NODE *h=NULL, *p, *s; int i;

/**********found***********/

p=(NODE )malloc(sizeof(NODE)); h=p;

p->next=NULL; for(i=1; i<=n; i++)

{ s=(NODE *)malloc(sizeof(NODE));

s->data=rand()%m; s->next=p->next; p->next=s; p=p->next; }

/**********found***********/ return p; }

outlink(NODE *h) { NODE *p; p=h->next;

printf(\ LIST :\\n\\n HEAD \ while(p)

{ printf(\ p=p->next; }

printf(\}

main()

{ NODE *head;

head=Creatlink(8,22); outlink(head); }

43、给定程序MODI1.C中函数fun的功能是: 在字符串的最前端加入n个*号, 形成新串, 并且覆盖原串。

注意: 字符串的长度最长允许为79。

请改正函数fun中指定部位的错误, 使它能得出正确的结果。

注意: 不要改动main函数, 不得增行或删行, 也不得更改程序的结构! #include #include

void fun ( char s[], int n ) {

char a[80] , *p; int i;

/**********found***********/ s=p;

for(i=0; i

{ a[i]=*p; i++; }

/**********found***********/ while(*p++) a[i]=0; strcpy(s,a); }

main()

{ int n; char s[80];

printf(\ : \ printf(\

printf(\ : \ scanf(\ fun(s,n);

printf(\}

19

学海教育 内部资料 版权所有 翻印必究

44、给定程序MODI1.C中函数fun的功能是:将 m(1≤m≤10)个字符串连接起来,组成一个新串,放入pt所指存储区中。

例如:把3个串:\连接起来,结果是 \。 请改正程序中的错误,使它能得出正确的结果。

注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!

#include #include

void fun ( char str[][10], int m, char *pt ) {

/************found************/ Int k, q, i ;

for ( k = 0; k < m; k++ ) { q = strlen ( str [k] ); for (i=0; i

/************found************/ pt[i] = str[k,i] ; pt += q ; pt[0] = 0 ; } }

main( )

{ int m, h ;

char s[10][10], p[120] ;

printf( \ m:\ scanf(\ gets(s[0]) ;

printf( \ %d string:\\n\ for ( h = 0; h < m; h++ ) gets( s[h]) ; fun(s, m, p) ;

printf( \ is : %s\\n\}

45、给定程序MODI1.C中函数fun的功能是:根据整型形参n,计算如下公式的值。

47、给定程序MODI1.C中规定输入的字符串全部为字母,fun函数的功能是:统计a所指字符串中每个字母在字符串中出现的次数(统计时不区分大小写),并将出现次数最高的字母输出(如果有多个相同,输出一个即可)。 例如对于字符串:dadbcdbabdb,对应的输出应为:b或d。 请改正函数fun中指定部位的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 #include #include #include void fun(char a[]) { int b[26], i, n,max; for (i=0; i<26; i++)

/**********found**********/ a[i] = 0; n= strlen(a);

for (i=0; i

if (a[i] >='a' && a[i]<='z') /**********found**********/ b[a[i] - 'A']++;

else if (a[i] >='A' && a[i]<='Z') b[a[i] -'A']++; max = 0;

for (i=1; i<26; i++)

/**********found**********/ if (b[max] > b[i]) max=i;

printf(\出现次数最多的字符是 : %c\\n\}

main( )

{ char a[200];

printf(\请输入一个待统计的字符串 : \ scanf(\ fun(a); }

48、给定程序MODI1.C中函数fun的功能是:将一个由八进制数字字符组成的字符串转换为与其面值相等的十进制整数。规定输入的字符串最多只能包含5位八进制数字字符。

例如,若输入:77777,则输出将是:32767。 请改正程序中的错误,使它能得出正确结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

#include #include #include int fun( char *p ) { int n;

/**********found**********/ n= *P-'o'; p++;

while( *p!=0 ) {

/**********found**********/ n=n*8+*P-'o'; p++; }

return n; }

main()

{ char s[6]; int i; int n;

printf(\ \

if(strlen(s)>5){ printf(\ for(i=0; s[i]; i++) if(s[i]<'0'||s[i]>'7')

{ printf(\ printf(\ \ n=fun(s);

printf(\}

49、给定程序MODI1.C中函数fun的功能是:按顺序给s所指数组中的元素赋予从2开始的偶数,然后再按顺序对每五个元素求一个平均值,并将这些值依次存放在w所指的数组中。若s所指数组中元素的个数不是5的倍数,多余部分忽略不计。

例如,s所指数组有14个元素,则只对前10个元素进行处理,不对最后的4个元素求平均值。

请改正程序中的错误,使它能得出正确结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 #include #define SIZE 20

fun(double *s, double *w)

例如,若 n=10,则应输出: 0.617977。

请改正程序中的语法错误,使它能得出正确的结果。

注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构! #include

/************found************/ int fun ( int n ) { float A=1; int i;

/************found************/ for (i=2; i

main( ) { int n ;

printf(\ scanf(\

printf(\}

46、给定程序MODI1.C中函数fun的功能是:求k!(k<13),所求阶乘的值作为函数值返回。例如:若k = 10,则应输出:3628800。 请改正程序中的错误,使它能得出正确的结果。

注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构! #include long fun ( int k) {

/************found************/ if k > 0

return (k*fun(k-1));

/************found************/ else if ( k=0 ) return 1L; else

return 1L; }

main()

{ int k = 10 ;

printf(\}

20

学海教育 内部资料 版权所有 翻印必究

{ int k,i; double sum; for(k=2,i=0;i

for(k=0,i=0;i

/**********found**********/ if(i+1%5==0)

{ w[k]=sum/5; sum=0; k++; } }

return k; }

main( )

{ double a[SIZE],b[SIZE/5]; int i, k; k = fun(a,b);

printf(\ for(i=0; i

{ if(i%5==0) printf(\ printf(\ }

printf(\

for(i=0; i

50、给定程序MODI1.C中函数fun的功能是: 对N名学生的学习成绩,按从高到低的顺序找出前m(m≤10)名学生来, 并将这些学生数据存放在一个动态分配的连续存储区中, 此存储区的首地址作为函数值返回。

请改正函数fun中指定部位的错误, 使它能得出正确的结果。

注意: 不要改动main函数, 不得增行或删行, 也不得更改程序的结构! #include #include #include #define N 10 typedef struct ss { char num[10]; int s; } STU;

STU *fun(STU a[], int m) { STU b[N], *t; int i,j,k;

/**********found**********/ t=(STU *)calloc(sizeof(STU),m) for(i=0; i b[j].s) j=i; /**********found**********/ t(k)=b(j); b[j].s=0; }

return t; }

outresult(STU a[], FILE *pf) { int i;

for(i=0; i

fprintf(pf,\ Mark = %d\\n\ fprintf(pf,\}

main()

{ STU a[N]={ {\ {\ STU *pOrder; int i, m;

printf(\ outresult(a, stdout);

printf(\ \ scanf(\ while( m>10 )

{ printf(\ \ scanf(\ }

pOrder=fun(a,m);

printf(\ RESULT *****\\n\ printf(\ :\\n\ for(i=0; i

printf(\ %s %d\\n\ free(pOrder); }

三、程序编写题

1、请编写函数fun,其功能是:统计s所指字符串中的数字字符个数,并作为函数值返回。

例如,s所指字符串中的内容是:2def35adh25 3kjsdf 7/kj8655x, 函数fun返回值为:11

注意: 部分源程序在文件PROG1.C文件中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include void

int fun(char *s) { }

main()

{ char *s=\ 3kjsdf 7/kj8655x\ printf(\

printf(\}

2、编写一个函数,从num个字符串中找出最长的一个字符串,并通过形参指针max传回该串地址。(注意: 主函数中用****作为结束输入的标志,函数fun中给出的语句仅供参考。)

注意:部分源程序在文件PROG1.C中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include #include

void fun(char(*a)[81],int num,char **max) {

/* 以下代码仅供参考 */

int i,k=0,len, maxlen; /* k为a数组中最长串所在元素的下标,初始为0,maxlen为其串长 */ maxlen=strlen(a[k]); for(i=1;i

/* 以下完成查找最长串 */ }

*max=a[k]; }

main() {

char ss[10][81],*ps;void int n,i=0;

printf(\输入若干个字符串:\ gets(ss[i]); puts(ss[i]);

while(!strcmp(ss[i],\ {

i++;

gets(ss[i]); puts(ss[i]); } n=i;

fun(ss,n,&ps);

printf(\}

3、请编写函数fun,它的功能是:求出ss所指字符串中指定字符的个数,并返回此值。

例如,若输入字符串: 123412132,输入字符为: 1,则输出:3。 注意: 部分源程序在文件PROG1.C中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include #include #define M 81

int fun(char *ss, char c) { }

main()

{ char a[M], ch; void

printf(\

printf(\

21

学海教育 内部资料 版权所有 翻印必究

printf(\}

4、规定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:将字符串中的前导*号全部删除,中间和尾部的*号不删除。

例如,字符串中的内容为:*******A*BC*DEF*G****,删除后,字符串中的内容应当是:A*BC*DEF*G****。在编写函数时,不得使用C语言提供的字符串函数。

注意: 部分源程序在文件PROG1.C中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

#include void fun( char *a ) { }

main()

{ char s[81]; void

printf(\ fun( s );

printf(\}

5、请编写一个函数void fun (char a[],char b[],int n),其功能是:删除一个字符串中指定下标的字符。其中, a指向原字符串, 删除指定字符后的字符串存放在b所指的数组中,n中存放指定的下标。

例如,输入一个字符串: World,然后输入3,则调用该函数后的结果为: Word。 注意: 部分源程序在文件PROG1.C中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include #include #define LEN 20

void fun (char a[], char b[], int n) { }

main( )

{ char str1[LEN], str2[LEN] ; int n ; void

printf(\ gets(str1) ;

printf(\ scanf(\ fun(str1, str2, n) ;

printf(\}

6、请编写一个函数 unsigned fun ( unsigned w ),w 是一个大于10的无符号整数,若 w 是 n (n ≥ 2)位的整数,函数求出w的低 n-1位的数作为函数值返回。

例如:w 值为 5923,则函数返回 923; w 值为 923 则函数返回 23。 注意: 部分源程序存在文件PROG1.C中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include

unsigned fun ( unsigned w ) { }

main( ) {

void

unsigned x;

printf ( \ \ printf ( \ %u\\n\ if ( x < 10 ) printf (\

else printf ( \ : %u\\n\}

7、假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是: 除了字符串前导和尾部的*号之外,将串中其它*号全部删除。形参h已指向字符串中第一个字母,形参p已指向字符串中最后一个字母。在编写函数时,不得使用C语言提供的字符串函数。

例如,字符串中的内容为:****A*BC*DEF*G********,删除后,字符串中的内容应当是:****ABCDEFG********。在编写函数时,不得使用C语言提供的字符串函数。

注意: 部分源程序在文件PROG1.C中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include

void fun( char *a, char *h,char *p ) { }

main()

{ char s[81],*t, *f; void

printf(\ t=f=s;

while(*t)t++; t--;

while(*t=='*')t--; while(*f=='*')f++; fun( s , f,t );

printf(\}

8、已知学生的记录由学号和学习成绩构成,N名学生的数据已存入a结构体数组中。请编写函数 fun,函数的功能是:找出成绩最低的学生记录,通过形参返回主函数(规定只有一个最低分)。

注意: 部分源程序存在文件PROG1.C文件中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

#include #include #define N 10 typedef struct ss

{ char num[10]; int s; } STU; void fun( STU a[], STU *s ) { }

main ( )

{ STU a[N]={ {\ {\}, m ;

int i;void

printf(\

for ( i=0; i< N; i++ )printf(\ Mark = %d\\n\ fun ( a, &m );

printf (\ RESULT *****\\n\

printf (\ : %s , %d\\n\}

9、请编写函数 fun,函数的功能是求出二维数组周边元素之和,作为函数值返回。二维数组中的值在主函数中赋予。 例如:二维数组中的值为 1 3 5 7 9 2 9 9 9 4 6 9 9 9 8

1 3 5 7 0则函数值为 61。 注意: 部分源程序存在文件PROG1.C文件中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include #define M 4 #define N 5

int fun ( int a[M][N] ) { }

main( )

{ int aa[M][N]={{1,3,5,7,9}, {2,9,9,9,4}, {6,9,9,9,8}, {1,3,5,7,0}}; int i, j, y;void

printf ( \ for ( i=0; i

{ for ( j =0; j

y = fun ( aa );

printf( \ sum: %d\\n\ printf(\

22

学海教育 内部资料 版权所有 翻印必究

}

10、程序定义了N×N的二维数组,并在主函数中赋值。请编写函数fun,函数的功能是:求出数组周边元素的平均值并作为函数值返给主函数中的s。 例如:a 数组中的值为

|0 1 2 7 9| |1 9 7 4 5| a = |2 3 8 3 1| |4 5 6 8 2|

|5 9 1 4 1|则返回主程序后s的值应为: 3.375。 注意: 部分源程序存在文件PROG1.C文件中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include #include #define N 5

double fun ( int w[][N] ) { }

main ( )

{ int a[N][N]={0,1,2,7,9,1,9,7,4,5,2,3,8,3,1,4,5,6,8,2,5,9,1,4,1}; int i, j;void double s ;

printf(\ for ( i =0; i

{ printf( \ printf(\ }

s = fun ( a );

printf (\ RESULT *****\\n\ printf( \ %lf\\n\}

11、假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:删除字符串中所有的*号。在编写函数时,不得使用C语言提供的字符串函数。 例如,字符串中的内容为:****A*BC*DEF*G*******,删除后,字符串中的内容应当是:ABCDEFG。

注意: 部分源程序在文件PROG1.C中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include void fun( char *a ) { }

main()

{ char s[81]; void

printf(\ fun( s );

printf(\}

12、请编写函数fun,其功能是: 将所有大于1小于整数m的非素数存入xx所指数组中, 非素数的个数通过k传回。

例如,若输入:17,则应输出:4 6 8 9 10 12 14 15 16。 注意: 部分源程序在文件PROG1.C中。

请勿改动主函数main和其它函数中的任何内容, 仅在函数fun的花括号中填入你编写的若干语句。

#include

void fun( int m, int *k, int xx[] ) { }

main() {

int m, n, zz[100]; void

printf( \ scanf( \ fun( n, &m, zz );

printf( \ for( n = 0; n < m; n++ )

printf( \ M\}

13、已知学生的记录由学号和学习成绩构成,N名学生的数据已存入结构体

数组a中。请编写函数 fun,函数的功能是:找出成绩最高的学生记录,通过形

参指针传回主函数(规定只有一个最高分)。已给出函数的首部,请完成该函数。 注意: 部分源程序存在文件PROG1.C中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include #include #define N 10 typedef struct ss

{ char num[10]; int s; } STU; void fun( STU a[], STU *s ) { }

main ( ) {

void

STU a[N]={ {\

{\}, m ;

int i;

printf(\

for ( i=0; i< N; i++ )printf(\ Mark = %d\\n\ fun ( a, &m );

printf (\ RESULT *****\\n\ printf (\ : %s , %d\\n\}

14、学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把分数最高的学生数据放在b所指的数组中,注意:分数最高的学生可能不止一个,函数返回分数最高的学生的人数。 注意: 部分源程序在文件PROG1.C中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include #define N 16 typedef struct { char num[10]; int s; } STREC;

int fun( STREC *a, STREC *b ) { }

main()

{ STREC s[N]={{\ {\ {\ {\ STREC h[N]; int i,n;FILE *out ; n=fun( s,h );

printf(\ for(i=0;i

printf(\ M\\n\ printf(\

out = fopen(\ fprintf(out, \ for(i=0;i

fprintf(out, \ fclose(out); }

15、请编写函数fun, 函数的功能是: 将M行N列的二维数组中的字符数据, 按列的顺序依次放到一个字符串中。 例如, 二维数组中的数据为: W W W W S S S S H H H H

则字符串中的内容应是: WSHWSHWSHWSH。 注意:部分源程序在文件PROG1.C中。

请勿改动主函数main和其它函数中的任何内容, 仅在函数fun的花括号中填入你编写的若干语句。 #include #define M 3 #define N 4

void fun(char s[][N], char *b) {

int i,j,n=0;

23

学海教育 内部资料 版权所有 翻印必究

for(i=0; i < N;i++) /* 请填写相应语句完成其功能 */ { }

b[n]='\\0'; }

main()

{ char a[100],w[M][N]={{'W','W','W','W'},{'S','S','S','S'},{'H','H','H','H'}}; int i,j;void

printf(\ for(i=0; i

{ for(j=0;j

fun(w,a);

printf(\ printf(\}

16、编写函数fun, 函数的功能是求出小于或等于lim的所有素数并放在aa数组中,函数返回所求出的素数的个数。函数fun中给出的语句仅供参考。 注意:部分源程序在文件PROG1.C中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

#include #define MAX 100

int fun(int lim, int aa[MAX]) {

/* 以下代码仅供参考 */ int i,j,k=0;

/* 其中变量k用于统计素数个数 */ for(i=2;i<=lim;i++) {

/* 以下找出小于或等于lim的素数存入aa数组中并统计素数个数 */ }

return k; }

main() {

int limit, i, sum;void int aa[MAX] ;

printf(\输入一个整数:\ scanf(\ sum=fun(limit, aa);

for(i=0 ; i < sum ; i++) {

if(i % 10 == 0 && i != 0) printf(\ printf(\ } }

17、请编写函数fun,它的功能是: 求出 1 到 1000 之间能被 7 或11整除、但不能同时被 7 和 11 整除的所有整数并将它们放在a所指的数组中,通过 n 返回这些数的个数。

注意: 部分源程序在文件PROG1.C中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include

void fun (int *a, int *n) { }

main( )

{ int aa[1000], n, k ; void

fun ( aa, &n ) ;

for ( k = 0 ; k < n ; k++ )

if((k + 1) % 10 == 0) printf(\ else printf(\}

18、某学生的记录由学号、8门课程成绩和平均分组成,学号和8门课程的成绩已在主函数中给出。请编写函数fun,它的功能是:求出该学生的平均分放在记录的ave成员中。

例如,学生的成绩是:85.5,76,69.5,85,91,72,64.5,87.5,他的平均分应当是:78.875。

注意: 部分源程序在文件PROG1.C中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun部位中填入你编写的若干语句。 #include

#define N 8 typedef struct { char num[10]; double s[N]; double ave; } STREC;

void fun(STREC *a) { }

main()

{ STREC s={\ int i; void fun( &s );

printf(\ for(i=0;i

printf(\ printf(\}

19、函数fun的功能是:将s所指字符串中下标为偶数同时ASCII值为奇数的字符删除,s所指串中剩余的字符形成的新串放在t所指的数组中。 例如,若s所指字符串中的内容为\,其中字符C的ASCII码值为奇数,在数组中的下标为偶数, 因此必须删除;而字符1的ASCII码值为奇数,在数组中的下标也为奇数,因此不应当删除,其它依此类推。 最后t所指的数组中的内容应是\。 注意: 部分源程序存在文件PROG1.C中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include #include

void fun(char *s, char t[]) { }

main() {

char s[100], t[100];void

printf(\ fun(s, t);

printf(\}

20、编写函数fun,它的功能是:利用以下所示的简单迭代方法求方程:cos(x)-x=0 的一个实根。

迭代步骤如下:(1)取 x1 初值为0.0;(2)x0 = x1,把x1的值赋给 x0;(3)x1 = cos(x0),求出一个新的x1;(4)若x0 - x1的绝对值小于 0.000001,执行步骤(5),否则执 行步骤(2);(5)所求x1就是方程 cos(x)-x=0 的一个实根,作为函数值返回。

程序将输出结果Root=0.739086。

注意: 部分源程序在文件PROG1.C中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

#include #include double fun() { }

main() {

void

printf(\}

21、假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:使字符串中尾部的*号不得多于n个;若多于n个,则删除多余的*号;若少于或等于n个,则什么也不做, 字符串中间和前面的*号不删除。

例如,字符串中的内容为:****A*BC*DEF*G*******,若n的值为4,删除后,字符串中的内容应当是:****A*BC*DEF*G****;若n的值为7,则字符串中的内容仍为:****A*BC*DEF*G*******。n的值在主函数中输入。在编写函数时,不得使用C语言提供的字符串函数。 注意: 部分源程序在文件PROG1.C中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

24

学海教育 内部资料 版权所有 翻印必究

#include

void fun( char *a,int n ) { }

main()

{ char s[81]; int n; void

printf(\ printf(\ \ fun( s,n );

printf(\}

22、请编写一个函数,函数的功能是删除字符串中的所有空格。 例如, 主函数中输入\则输出为 \。 注意:部分源程序在文件PROG1.C中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include #include void fun(char *str) { }

main() {

char str[81];void

printf(\ gets(str); puts(str); fun(str);

printf(\}

23、请编一个函数fun,函数的功能是使实型数保留2位小数,并对第三位进行四舍五入 (规定实型数为正数)。

例如:实型数为 1234.567, 则函数返回 1234.570000; 实型数为 1234.564, 则函数返回 1234.560000。 注意: 部分源程序存在文件PROG1.C文件中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include float fun ( float h ) { }

main( )

{ float a;void

printf (\ a: \ printf ( \ \ printf ( \

printf ( \ %f\\n\}

24、请编写一个函数 void fun(char *tt, int pp[]),统计在tt所指字符串中'a' 到 'z' 26个小写字母各自出现的次数,并依次放在pp所指数组中。

例如,当输入字符串:abcdefgabcdeabc 后,程序的输出结果应该是: 3 3 3 2 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 注意: 部分源程序在文件PROG1.C中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

#include #include

void fun(char *tt, int pp[]) { }

main( )

{ char aa[1000] ; int bb[26], k ; void

printf( \ a char string:\ fun(aa, bb ) ;

for ( k = 0 ; k < 26 ; k++ ) printf (\ printf( \}

25、请编写函数fun, 对长度为7个字符的字符串, 除首、尾字符外,将其余5个字符按ASCII码降序排列。

例如,原来的字符串为 CEAedca,排序后输出为 CedcEAa 。 注意: 部分源程序在文件PROG1.C中。

请勿改动主函数main和其它函数中的任何内容, 仅在函数fun的花括号中填入你编写的若干语句。 #include #include #include

void fun(char *s,int num) { }

main() {

void

char s[10];

printf(\输入7个字符的字符串:\ gets(s); fun(s,7);

printf(\}

26、编写函数fun,它的功能是:求Fibonacci数列中大于t的最小的一个数,结果由函数返回。其中Fibonacci数列F(n)的定义为: F(0)=0,F(1)=1

F(n)=F(n-1)+F(n-2)

例如:当t = 1000时,函数值为:1597。 注意: 部分源程序在文件PROG1.C中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include #include int fun( int t) { }

main() /* 主函数 */ { int n; void n=1000;

printf(\}

27、请编写函数fun,函数的功能是: 移动字符串中的内容,移动的规则如下: 把第1到第m个字符, 平移到字符串的最后, 把第m+1到最后的字符移到字符串的前部。

例如, 字符串中原有的内容为: ABCDEFGHIJK, m的值为3, 则移动后, 字符串中的内容应该是: DEFGHIJKABC。

注意:部分源程序在文件PROG1.C中。

请勿改动主函数main和其它函数中的任何内容, 仅在函数fun的花括号中填入你编写的若干语句。 #include #include #define N 80

void fun1(char *w) /* 本函数的功能是将字符串中字符循环左移一个位置 */ {

int i; char t; t=w[0];

for(i=0;i<(int)strlen(w)-1;i++) w[i]=w[i+1]; w[strlen(w)-1]=t; }

void fun(char *w, int m) /* 可调用fun1函数左移字符 */ { }

main()

{ char a[N]= \ int m;void

printf(\

printf(\ m: \ fun(a,m);

printf(\ printf(\}

28、请编写函数fun,其功能是将形参s所指的字符串放入形参a所指的字

25

学海教育 内部资料 版权所有 翻印必究

符数组中,使a中存放同样的字符串。说明:不得使用系统提供的字符串函数。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中 注意:部分源程序存在PROG1.C中,请勿改动主函数main和其他函数中填入你编写的若干语句。 的任何内容,仅在函数fun指定的部位填入所编写的若干语句。 #include void fun ( int a[3][3], int b[3][3]) #include { #define N 20 void } void fun( char *a , char *s) main( ) /* 主程序 */ { { int a[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}, t[3][3] ; int i, j ; } void main() fun(a, t) ; { char s1[N], *s2=\ for (i = 0 ; i < 3 ; i++) { fun( s1,s2); for (j = 0 ; j < 3 ; j++) printf(\ printf(\ printf(\ printf(\} } } 29、请编一个函数fun(char *s),函数的功能是把s所指字符串中的内容逆 32、请编写函数fun,函数的功能是查找x在s所指数组中下标的位置作为置。 函数值返回,若x不存在,则返回-1。 例如:字符串中原有的字符串为:abcdefg, 注意:部分源程序存在PROG1.C中,请勿改动主函数main和其它函数中 则调用该函数后, 串中的内容为:gfedcba。 的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 注意: 部分源程序存在文件PROG1.C中。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中#include 填入你编写的若干语句。 #include #include #define N 15 #include void #define N 81 int fun( int *s, int x) void fun ( char *s ) { { } } main() main( ) { int a[N]={ 29,13,5,22,10,9,3,18,22,25,14,15,2,7,27},i,x,index; { printf(\数组中的数据 :\\n\ void for(i=0; i2)。 100 400 700 例如,若输入9.9 8.5 7.6 8.5 9.3 9.5 8.9 7.8 8.6 8.4十个得分, 200 500 800 则输出结果为:8.687500。 300 600 900 注意:部分源程序存在PROG1.C中,请勿改动主函数main和其他函数中 注意: 部分源程序在文件PROG1.C中。 的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 请勿改动主函数main和其它函数中的任何内容, 仅在函数fun的花括号中#include 填入你编写的若干语句。 void #include double fun(double a[ ] , int n) void fun(int array[3][3]) { { } } main() main() { double b[10], r; int i; { printf(\输入10个分数放入b数组中 : \ int i,j;void for (i=0; i<10; i++) scanf(\ int array[3][3]={{100,200,300}, printf(\输入的10个分数是 : \ {400,500,600}, for (i=0; i<10; i++) printf(\ printf(\ {700,800,900}}; r = fun(b, 10); for (i=0;i<3;i++) printf(\去掉最高分和最低分后的平均分 : %f\\n\ { for (j=0;j<3;j++) } printf(\ printf(\ 31、请编写函数fun, 函数的功能是:实现B=A+A', 即把矩阵A加上A的 } 转置, 存放在矩阵B中。计算结果在 main 函数中输出。例如,输入下面的矩阵: fun(array); 其转置矩阵为: printf(\ 1 2 3 1 4 7 for (i=0;i<3;i++) 4 5 6 2 5 8 { for (j=0;j<3;j++) 7 8 9 3 6 9 printf(\ 程序输出: printf(\ 2 6 10 } 6 10 14 } 10 14 18 34、N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链 注意: 部分源程序在文件PROG1.C中。 表的头节点。请编写函数fun,它的功能是:求出平均分,由函数值返回。

26

学海教育 内部资料 版权所有 翻印必究

例如,若学生的成绩是:85,76,69,85,91,72,64,87, 则平均分应当是:78.625。

注意: 部分源程序在文件PROG1.C中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include #include #define N 8 struct slist { double s;

struct slist *next; };

typedef struct slist STREC; double fun( STREC *h ) { }

STREC * creat( double *s)

{ STREC *h,*p,*q; int i=0;

h=p=(STREC*)malloc(sizeof(STREC));p->s=0; while(i

{ q=(STREC*)malloc(sizeof(STREC)); q->s=s[i]; i++; p->next=q; p=q; }

p->next=0; return h; }

outlist( STREC *h) { STREC *p;

p=h->next; printf(\ do

{ printf(\ while(p!=0); printf(\}

main()

{ double s[N]={85,76,69,85,91,72,64,87},ave; void

STREC *h;

h=creat( s ); outlist(h); ave=fun( h );

printf(\}

35、编写一个函数,该函数可以统计一个长度为2的字符串在另一个字符串中出现的次数。例如,假定输入的字符串为: asd asasdfg asd as zx67 asd mklo,子字符串为:as,则应输出6。

注意:部分源程序在文件PROG1.C中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include #include

int fun(char *str,char *substr) { }

main() {

void

char str[81],substr[3]; int n;

printf(\输入主字符串: \ gets(str);

printf(\输入子字符串: \ gets(substr); puts(str); puts(substr); n=fun(str,substr); printf(\}

36、编写函数fun,函数的功能是: 从s所指的字符串中删除给定的字符。同一字母的大、小写按不同字符处理。

若程序执行时输入字符串为: turbo c and borland c++

从键盘上输入字符:n, 则输出后变为: turbo c ad borlad c++ 如果输入的字符在字符串中不存在, 则字符串照原样输出。 注意: 部分源程序在文件PROG1.C中。

请勿改动主函数main和其它函数中的任何内容, 仅在函数fun的花括号中填入你编写的若干语句。

#include #include void fun(char s[],char c) { }

main() {

void

static char str[]=\ char ch;

printf(\原始字符串:%s\\n\ printf(\输入一个字符:\ scanf(\ fun(str,ch);

printf(\}

37、请编一个函数void fun(int tt[M][N ], int pp[N]),tt指向一个M行N列的二维数组,求出二维数组每列中最小元素,并依次放入pp所指一维数组中。二维数组中的数已在主函数中赋予。

注意: 部分源程序存在文件PROG1.C中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include #define M 3 #define N 4

void fun ( int tt[M][N], int pp[N] ) { }

main( ) {

void

int t [ M ][ N ]={{22,45, 56,30},

{19,33, 45,38}, {20,22, 66,40}}; int p [ N ], i, j, k;

printf ( \ for( i=0; i

printf ( \ printf(\ }

fun ( t, p );

printf( \ is:\\n\

for ( k = 0; k < N; k++ ) printf ( \ printf(\}

38、函数fun的功能是:将s所指字符串中ASCII值为偶数的字符删除,串中剩余字符形成一个新串放在t所指的数组中。 例如,若s所指字符串中的内容为:\,其中字符B的ASCII码值为偶数、?、字符2的ASCII码值为偶数、? 都应当删除,其它依此类推。最后t所指的数组中的内容应是:\。 注意: 部分源程序存在文件PROG1.C中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include #include

void fun(char *s, char t[]) { }

main() {

void

char s[100], t[100];

printf(\ fun(s, t);

printf(\}

39、编写函数fun,它的功能是计算:

s作为函数值返回。

27

学海教育 内部资料 版权所有 翻印必究

在C语言中可调用log ( n )函数求ln (n)。log函数的引用说明是:double log(double x)。

例如,若m的值为: 20,fun函数值为: 6.506583。 注意: 部分源程序在文件PROG1.C中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include #include

double fun( int m ) { }

main() {

void

printf(\}

40、假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:除了尾部的*号之外,将字符串中其它*号全部删除。形参p已指向字符串中最后的一个字母。在编写函数时,不得使用C语言提供的字符串函数。

例如,字符串中的内容为:****A*BC*DEF*G*******,删除后,字符串中的内容应当是: ABCDEFG*******。

注意: 部分源程序在文件PROG1.C中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include

void fun( char *a, char *p ) { }

main()

{ char s[81],*t; void

printf(\ t=s;

while(*t)t++; t--;

while(*t=='*')t--; fun( s , t );

printf(\}

41、编写函数fun,函数的功能是:根据以下公式计算s,计算结果作为函数值返回;n通过形参传入。

1 1 1

S=1 + ── + ─── + ... + ────── 1+2 1+2+3 1+2+3+...+n

例如:若n的值为11时,函数的值为:1.833333 注意: 部分源程序在文件PROG1.C中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include double fun(int n) { }

main()

{ int n; double s; void

printf(\ s = fun(n);

printf(\}

42、请编写函数fun, 函数的功能是:统计一行字符串中单词的个数,作为函数值返回。一行字符串在主函数中输入, 规定所有单词由小写字母组成,单词之间由若干个空格隔开, 一行的开始没有空格。 注意:部分源程序在文件PROG1.C中。

请勿改动主函数main和其它函数中的任何内容, 仅在函数fun的花括号中填入你编写的若干语句。 #include #include #define N 80 int fun( char *s) { }

main()

{ char line[N]; int num=0;void printf(\ num=fun( line );

printf(\ : %d\\n\\n\}

43、请编写函数fun,函数的功能是:统计各年龄段的人数。N个年龄通过调用随机函数获得,并放在主函数的age数组中;要求函数把0至9岁年龄段的人数放在d[0]中,把10至19岁年龄段的人数放在d[1]中,把20至29岁年龄段的人数放在d[2]中, 其余依此类推, 把100岁 (含100)以上年龄的人数都放在d[10]中。结果在主函数中输出。

注意:部分源程序在文件PROG1.C中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include #define N 50 #define M 11

void fun( int *a, int *b) { }

double rnd()

{ static t=29,c=217,m=1024,r=0; r=(r*t+c)%m; return((double)r/m); }

main()

{ int age[N], i, d[M];void

for(i=0; i

for(i=0;i

for(i=0;i<10;i++)printf(\ : M\\n\ printf(\ Over 100 : M\\n\}

44、程序定义了N×N的二维数组,并在主函数中自动赋值。请编写函数fun( int a[][N]),函数的功能是:使数组左下三角元素中的值全部置成0 。例如:a 数组中的值为

| 1 9 7 | | 0 9 7 | a = | 2 3 8 | 则返回主程序后a数组中的值应为 | 0 0 8 | | 4 5 6 | | 0 0 0 | 注意: 部分源程序存在文件PROG1.C中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

#include #include #define N 5

void fun ( int a[][N] ) { }

main ( ) {

void

int a[N][N], i, j;

printf(\ for ( i =0; i

{ a[i][j] = rand(); printf( \ printf(\ }

fun ( a );

printf (\ RESULT\\n\ for ( i =0; i

{ for ( j =0; j

45、程序定义了N×N的二维数组,并在主函数中自动赋值。请编写函数fun,函数的功能是:使数组右上三角元素中的值乘以m 。 例如:若m的值为2,a 数组中的值为

| 1 9 7 | | 2 18 14| a = | 2 3 8 | 则返回主程序后a数组中的值应为 | 2 6 16| | 4 5 6 | | 4 5 12| 注意: 部分源程序存在文件PROG1.C文件中。 请勿改动主函数main和其它函数中的任何内容, 仅在函数fun的花括号中填入你编写的若干语句。 #include

28

学海教育 内部资料 版权所有 翻印必究

#include #define N 5

void fun ( int a[][N], int m ) { }

main ( )

{ int a[N][N], m, i, j;void

printf(\ for ( i =0; i

{ a[i][j] = rand() ; printf( \ printf(\ }

do m = rand() ; while ( m>=3 ); printf(\ fun ( a ,m );

printf (\ RESULT\\n\ for ( i =0; i

{ for ( j =0; j

46、程序定义了N×N的二维数组,并在主函数中自动赋值。请编写函数fun(int a[][N], int n),函数的功能是:使数组左下三角元素中的值乘以n 。例如:若n的值为3,a 数组中的值为

| 1 9 7 | | 3 9 7 | a = | 2 3 8 | 则返回主程序后a数组中的值应为 | 6 9 8 | | 4 5 6 | | 12 15 18| 注意: 部分源程序存在文件PROG1.C中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include #include #define N 5

void fun ( int a[][N], int n ) { }

main ( ) {

void

int a[N][N], n, i, j;

printf(\ for ( i =0; i

{ a[i][j] = rand(); printf( \ printf(\ }

do n = rand() ; while ( n >=3 ); printf(\ fun ( a, n );

printf (\ RESULT *****\\n\ for ( i =0; i

{ for ( j =0; j

47、请编函数fun,其功能是将一个数字字符串转换成与其面值相同的长整型整数。可调用strlen函数求字符串的长度。例如:在键盘输入字符串2345210,函数返回长整型数2345210。

注意:部分源程序存在PROG1.C中,请勿改动主函数main和其他函数中的任何内容,仅在函数fun指定的部位填入所编写的若干语句。 #include #include void

long fun( char *s ) { }

main()

{ char s[10]; long r;

printf(\请输入一个长度不超过9个字符的数字字符串 : \ gets(s); r = fun( s );

printf(\}

48、学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构

体数组s中,请编写函数fun,它的功能是:函数返回指定学号的学生数据,指定的

学号在主函数中输入。若没找到指定学号,在结构体变量中给学号置空串,给成绩置-1,作为函数值返回。(用于字符串比较的函数是strcmp, strcmp(a, b)当a和b字符串相等时返回值为0)。

注意: 部分源程序在文件PROG1.C中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include #include #define N 16 typedef struct { char num[10]; int s; } STREC;

STREC fun( STREC *a, char *b ) {

int i;

STREC t = {'\\0', -1}; }

main()

{ STREC s[N]={{\ {\ {\ {\ STREC h; char m[10]; int i;FILE *out ;

printf(\ for(i=0; i

{ if(i%4==0) printf(\

printf(\ \ }

printf(\ \ h=fun( s,m );

printf(\ \

printf(\ M\\n\ printf(\

out = fopen(\ h=fun(s,\

fprintf(out,\ M\\n\ fclose(out); }

49、学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把低于平均分的学生数据放在b所指的数组中,低于平均分的学生人数通过形参n传回,平均分通过函数值返回。 注意: 部分源程序在文件PROG1.C中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include #define N 8 typedef struct { char num[10]; double s; } STREC;

double fun( STREC *a, STREC *b, int *n ) { }

main()

{ STREC s[N]={{\ {\ STREC h[N],t;FILE *out ; int i,j,n; double ave; ave=fun( s,h,&n );

printf(\ for(i=0;i

printf(\ %4.1f\\n\ printf(\

out = fopen(\ fprintf(out, \ for(i=0;i

if(h[i].s>h[j].s) {t=h[i] ;h[i]=h[j]; h[j]=t;} for(i=0;i

fprintf(out,\ fclose(out); }

29

学海教育 内部资料 版权所有 翻印必究

50、请编写函数fun, 函数的功能是: 删去一维数组中所有相同的数, 使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。

例如, 一维数组中的数据是: 2 2 2 3 4 4 5 6 6 6 6 7 7 8 9 9 10 10 10。删除后,数组中的内容应该是: 2 3 4 5 6 7 8 9 10。

注意:部分源程序在文件PROG1.C中。

请勿改动主函数main和其它函数中的任何内容, 仅在函数fun的花括号中3、(1)for(j=i+1;j<6;j++)(2)*(pstr+i)=*(pstr+j);

4、(1)#define FU(m,n) ((m)/(n))(2)return (value); 5、(1)while((fabs(t))>=num)(2)t=s/n; 6、(1)m=i;(2)if(a[k]>a[m]) m=k; 7、(1)double r;(2)while(fabs(m-n)>0.001) 8、(1)double fun(int m)(2)for(i=100;i<=m;i~1+=0) 9、(1)num[k]=0;(2)switch(*s) 填入你编写的若干语句。 #include #define N 80 int fun(int a[], int n) { }

main()

{ int a[N]={2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10,10},i,n=20;void printf(\

for(i=0; i

printf(\

for(i=0;i

参考答案

一、程序填空题 1、(1)b[k](2)N/2(3)< 2、(1)[N](2)i(3)i+1 3、(1)j++(2)s[i]=t1[i](3)j 4、(1)[N](2)t[i][j](3)t[j][i] 5、(1)t=i(2)i(3)0 6、(1)tt(2)tt.score[i](3)std 7、(1)sum=0(2)t[i][i](3)1 8、(1)0(2)x[i]/N(3)j++ 9、(1)x[i]/N(2)j++(3)i++ 10、(1)s/N(2)j++(3)-1 11、(1)1(2)j++(3)j 12、(1)M(2)<(3)k 13、(1)std[i].year(2)std[i](3)n 14、(1)1(2)i(3)a[p+i] 15、(1)FILE *(2)fp(3)ch 16、(1)a[0][i](2)<(3)x,y 17、(1)s[i](2)'9'(3)*t=n 18、(1)a[i](2)a[j](3)a[j] 19、(1)j(2)k(3)p 20、(1)i++(2)m(3)m 21、(1)a[i]%2(2)a[j](3)j 22、(1)0(2)||(3)1 23、(1)'0'(2)s++(3)ctod(a)+ctod(b) 24、(1)1(2)s[k](3)c 25、(1)ss[i](2)n+j(3)1 26、(1)N(2)N-1(3)0 27、(1)double(2)f1(3)f2 28、(1)pb(2)p->data(3)p->next 29、(1)i+1(2)k=j(3)t 30、(1)a[i](2)m(3)m/10 31、(1)&&(2)0(3)s[j] 32、(1)i%5(2)\\n(3)a[i] 33、(1)N(2)break(3)n 34、(1)char(2)ch<='9'(3)'0' 35、(1)[N](2)len(3)*n=len 36、(1)k(2)len(3)ss[i][j] 37、(1)*std(2)std[i].age(3)max.name 38、(1)STU(2)std[i].num(3)std[i] 39、(1)0(2)j--(3)j 40、(1)t[][N](2)i=0;i(3)fwrite 44、(1)*std(2)PERSON(3)std 45、(1)*av(2)i(3)x[j] 46、(1)STU(2)score[i](3)&std 47、(1)0(2)t(3)i+t 48、(1)n/2(2)i(3)a[n-i-1] 49、(1)*a(2)2(3)i+1 50、(1)FILE *(2)fclose(fp)(3)fp 二、程序修改题 1、(1)int t[N] ,i, num=0;(2)t[num++]=b[i];(3)for(i=0; i

10、(1)#include \(2)upfst(char *p) 11、(1)t=a;a=b;b=t;(2)return(b); 12、(1)if(('a'<=tt[i])&&(tt[i]<='z'))(2)tt[i]-=32; 13、(1)IsPrime(int n)(2)if(!(n%i)) 14、(1)float k;(2)if(*c>*a) 15、(1)s[j++]=s[i];(2)s[j]=0; 16、(1)void fun(int *x,int *y)(2)t=*x;*x=*y;*y=t; 17、(1)t=*x;*x=y;(2)return t; 18、(1)switch(g)(2)case 1: return 1; case 2:return 1; 19、(1)while(i a[i][j] ) 31、(1)for(i=2;i<=m;i++)(2)y+=1.0/i/i; 32、(1)return t;(2)for(i=0;ia[mid]) 41、(1)double sum=0.;(2)sum /= c; 42、(1)p=(NODE *)malloc(sizeof(NODE));(2)return h; 43、(1)p=s;(2)while(*p++); 44、(1)int k,q,i;(2)pt[i]=str[k][i]; 45、(1)float fun(int n)(2)for (i=1; i0)(2)else if(k==0) 47、(1)b[i]=0;(2)b[a[i] - 'a']++;(3)if (b[max] < b[i]) 48、(1)n= *p-'0';(2)n=n*8+*p-'0'; 49、(1)sum=0;(2)if((i+1)%5==0) 50、(1)t=(STU *)calloc(sizeof(STU),m);(2)t[k]=b[j]; 三、程序编写题 1、 int count=0; while(*s!='\\0') { if(*s>=48 && *s<=57) count++; s++; } return count; 2、len=strlen(a[i]) ; if(maxlen

int i,len=0;

while(a[len] == '*') len++; i=len;

while(a[i]!= '\\0') { a[i-len]=a[i]; i++;

30

学海教育 内部资料 版权所有 翻印必究

}

5、 a[n]=0 ; strcpy(b , a) ; strcat(b , a + strlen(a)+1); 6、 unsigned num=w,n=1; while(num!=0) { num=num/10; n=n*10; } n=n/10; return w%n; 7、 char *r,*q; for(q=p;q>h;q--) { if(*q == '*') { r=q; while(*r!='\\0') { *r=*(r+1); r++; } } }

8、 int i; *s=a[0]; for(i=1;i < N;i++) { if((*s).s > a[i].s ) *s=a[i]; }

9、 int sum=0,i; for(i=0;i

12、void fun( int m, int *k, int xx[] ) {

int i,j,num=0; for(i=2;i

*k=num; }

13、void fun( STU a[], STU *s ) {

int i,j=0,max; max = a[0].s; for(i=1;i

{

if(max

} }

14、int fun( STREC *a, STREC *b ) { int i,num=0,max; max = a[0].s; for(i=1;i return num; }

15、void fun(char s[][N], char *b) {

int i,j,n=0;

for(i=0; i < N;i++) /* 请填写相应语句完成其功能 */ {

for(j=0;j< M;j++) b[n++]=s[j][i]; }

b[n]='\\0'; }

16、int fun(int lim, int aa[MAX]) {

/* 以下代码仅供参考 */ int i,j,k=0;

/* 其中变量k用于统计素数个数 */ for(i=2;i<=lim;i++) {

/* 以下找出小于或等于lim的素数存入aa数组中并统计素数个数 */ for(j=2;j

return k; }

17、void fun (int *a, int *n) {

int i=1; *n=0;

while(i<1000)

{ if((i%7==0||i==0)&&(iw!=0))a[(*n)++]=i; i++; } }

18、void fun(STREC *a) { int i; float sum=0; for(i=0;is[i];} a->ave = sum/N; }

19、void fun(char *s, char t[]) {

int i,j=0,len; len = strlen(s); for(i=0;i

t[j]='\\0'; }

20、double fun() {double x1=0.0,x0;

31

学海教育 内部资料 版权所有 翻印必究

do{x0=x1;x1=cos(x0);} while(fabs(x0-x1)>=1e-6); return x1; }

21、void fun( char *a,int n ) { int num=0; char *p=a; while(*p)p++; p=p-1; while(*p=='*'){num++;p--;} if(num>n) { p=p+n+1; *p=0; } }

22、void fun(char *str) {

int i,j=0,len=0; char *p=str; while(*p){len++;p++;} p=str; for(i=0;i

23、float fun ( float h ) {

return (int)(100*h+0.5)/100.0; }

24、void fun(char *tt, int pp[]) { int i; for(i=0;i<26;i++)pp[i]=0; while( *tt) { pp[*tt-'a']++; tt++; } }

25、void fun(char *s,int num) {

int i,j; char t;

for(i=1;is[j]){t=s[i];s[i]=s[j];s[j]=t;} } 26、

int fun( int t) {

int f1=0,f2=1,fn; fn=f1+f2; while(fn<=t) { f1=f2; f2=fn; fn=f1+f2;}

return fn; } 27、

void fun(char *w, int m) /* 可调用fun1函数左移字符 */ { char a[N]; int i; for(i=0;i

for(;m>=0;m--,i--) w[i]=a[m];

}

28、void fun( char *a , char *s) { while(*a = *s) { a++; s++; } }

29、void fun ( char *s ) { nt i,j,k=0;char t;

while(s[k]!='\\0') k++;

for(i=0,j=k-1;i

30、double fun(double a[ ] , int n) {double t,r,sum; int i,j; for(i=0;i<9;i++) for(j=i+1;j<10;j++) if(a[i]>a[j]) { t=a[i];a[i]=a[j];a[j]=t;} sum=a[1]+a[2]+a[3]+a[4]+a[5]+a[6]+a[7]+a[8]; r=sum/8.0; return r; }

31、int i,j;

for(i=0;i<3;i++) for(j=0;j<3;j++) b[i][j]=0; for(i=0;i<3;i++) for(j=0;j<3;j++) b[i][j]=a[i][j]+a[j][i]; 32、int i; for(i=0;i

array[i][j]=array[j][i]; array[j][i]=t; }

34、float ave,sum=0.0; STREC *p; p=h->next; while(p) {sum+=p->s; p=p->next; } ave=sum/N; return ave; 35、 int i,j=0;

for(i=0;str[i+1]!=’\\0’;i++)

if(str[i]==substr[0]&&str[i+1]==substr[1]) j++; return j; 36、int i=0; char *p; p=s;

while(*p) {

if (*p!=c) {

s[i]=*p; i++; } }

s[i]=’\\0’; 37、int min; int i,j;

32

学海教育 内部资料 版权所有 翻印必究

for(i=0;i

min=tt[0][i];

for(j=0;j

if(min>tt[j][i]) min=tt[j][i]; }

pp[i]=min; }

38、int i=0;

for(;*s!=’\\0’;s++) if(*s%2==1) t[i++]=*s; t[i]=’\\0’; 39、int i; double s=0.0; for(i=1;i

for(;t<=p;t++) if(*t!=’*’) *(a++)=*t; for(;*t!=’\\0’;t++) *(a++)=*t; *a=’\\0’; 41、

double fun(int n) { int i;

float s=1.0, t=1.0; for(i=2;i<=n;i++) { t=t+i; s=s+1/t; }

return s; } 42、

int fun( char *s) {

int i=0,j=0,f=1; while(s[i]) {

if(s[i]<'a' || s[i]>'z') {

if(f) j++; f=0; } else f=1; i++; } 43、

void fun( int *a, int *b) {

int i,k;

for(i=0;i

if(k>=10) b[10]++; else b[k]++; } } 44、

void fun ( int a[][N] ) { int i,j;

for(i=0;i

void fun ( int a[][N], int m ) {

int i,j;

for(i=0;i

a[i][j]*=m; } 46、

void fun ( int a[][N], int n ) { int i,j;

for(i=0;i

long fun( char *s ) {int i,j; long int p; i=strlen(s); p=s[0]-48;

for(j=1;j

STREC fun( STREC *a, char *b ) {

STREC res; int i;

for(i=0;i

if(strcmp(a[i].num,b)==0) { res=a[i]; return res; } }

strcpy(res.num,\ res.s=-1; return res; } 49、

double fun( STREC *a, STREC *b, int *n ) {

int i,j;

double ave,sum=0.0; *n=0;

for(i=0;i

sum+=a[i].s; }

ave=sum/N; for(i=0,j=0;i

if(a[i].s<=ave) { b[j]=a[i]; j++; (*n)++; } i++; }

return ave; } 50、

int fun(int a[], int n) {

int i,j=0;

for(i=1;i

if(a[i]!=a[j]) { j++; a[j]=a[i]; } }

return j+1; }

33

本文来源:https://www.bwwdw.com/article/c1p6.html

Top