全国计算机二级C语言上机(2改错题)

更新时间:2024-02-03 04:04:01 阅读量: 教育文库 文档下载

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

1、请编写函数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

void fun(char *w, int m) /*可调用fun1函数左移字符 */ { }

main()

{ char a[N]= \ int m;

printf(\ printf(\ fun(a,m);

printf(\ printf(\ NONO(); }

NONO()

{/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。FILE *rf, *wf ; char a[N] ; int m, i ; rf = fopen(\wf = fopen(\for(i = 0 ; i < 10 ; i++) {

fscanf(rf, \ fun(a, m) ;

fprintf(wf, \}

fclose(rf) ; fclose(wf) ;

*/ } 2、学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中, 请编写函数fun,它的功能是:把指定分数范围内的学生数据放在b所指的数组中,分数范围内的学生人数由函数值返回。

例如,输入的分数是60 69, 则应当把分数在60到69的学生数据进行输出,包含60分和69分的学生数据。主函数中将把60放在low中,把69放在heigh中。 注意: 部分源程序在文件PROG1.C文件中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include #define N 16 typedef struct { char num[10]; int s; } STREC;

int fun( STREC *a,STREC *b,int l, int h ) { }

main()

{ STREC s[N]={{\

{\ {\ {\ {\ {\ STREC h[N],tt;FILE *out ; int i,j,n,low,heigh,t;

printf(\ scanf(\

if ( heigh< low ){ t=heigh;heigh=low;low=t; } n=fun( s,h,low,heigh );

printf(\ for(i=0;i

printf(\ printf(\

out = fopen(\ n=fun( s,h,80,98 ); fprintf(out,\ for(i=0;i

if(h[i].s>h[j].s) {tt=h[i] ;h[i]=h[j]; h[j]=tt;}

for(i=0;i

fprintf(out,\ fprintf(out,\ fclose(out); }

3、已知学生的记录由学号和学习成绩构成,N名学生的数据已存入a结构体数组中。请编写函数 fun,函数的功能是:找出成绩最低的学生记录,通过形参返回主函数(规定只有一个最低分)。

注意: 部分源程序存在文件PROG1.C文件中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include #include #define N 10 typedef struct ss

{ char num[10]; int s; } STU; fun( STU a[], STU *s ) { }

main ( )

{ STU a[N]={ {\ {\ {\ {\ int i;

printf(\

for ( i=0; i< N; i++ )printf(\ fun ( a, &m );

printf (\

printf (\ NONO( ); }

NONO( )

{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *rf, *wf ; STU a[N], m ; int i ;

rf = fopen(\wf = fopen(\

for(i = 0 ; i < 10; i++) fscanf(rf, \fun(a, &m) ;

fprintf (wf, \fclose(rf) ; fclose(wf) ; }

4、请编写一个函数fun, 其功能是: 将ss所指字符串中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母, 则不转换)。

例如, 若输入\,则应输出\。 注意: 部分源程序在文件PROG1.C文件中。

请勿改动主函数main和其它函数中的任何内容, 仅在函数fun的花括号中填入你编写的若干语句。 #include #include void fun( char *ss ) { }

void main( void ) {

char tt[51];

printf( \ gets( tt );

printf( \ fun(tt) ;

printf( \ NONO(); }

NONO() {

/* 请在此函数内打开文件,输入测试数据,调用 fun 函数, 输出数据,关闭文件。 */ char tt[51], ch; FILE *rf, *wf ; int len, i=0 ;

rf = fopen(\ wf = fopen(\ while(i < 10) { fgets( tt, 50, rf ); len = strlen(tt) - 1 ; ch = tt[len] ;

if(ch == '\\n' || ch == 0x1a) tt[len] = 0 ; fun(tt);

fprintf( wf, \ i++ ; }

fclose(rf) ; fclose(wf) ; } 5、请编一个函数fun,函数的功能是使实型数保留2位小数,并对第三位进行四舍五入 (规定实型数为正数)。

例如:实型数为 1234.567, 则函数返回 1234.57; 实型数为 1234.564, 则函数返回 1234.56。 注意: 部分源程序存在文件PROG1.C文件中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include float fun ( float h ) { }

main( ) { float a;

printf (\ printf ( \ \ printf ( \

printf ( \ NONO( ); }

NONO( )

{/* 请在此函数内打开文件,输入测试数据,调用 fun 函数, 输出数据,关闭文件。 */ int i ; float a ;

FILE *rf, *wf ;

rf = fopen(\wf = fopen(\for(i = 0 ; i < 20 ; i++) { fscanf(rf, \

fprintf(wf, \}

fclose(rf) ; fclose(wf) ; }

6、请编写一个函数fun,它的功能是:根据以下公式求鸬闹 (要求满足精度0.0005, 即某项小于0.0005时停止迭代):

1 1 2 1 2 3 1 2 3 4 1 2讌譶

─ = 1 + ─ + ─— + ──── + ────── +……+──────── 2 3 3×5 3×5×7 3×5×7×9 3×5×…×(2n+1)

程序运行后,如果输入精度0.0005,则程序输出为3.14…。 注意: 部分源程序存在文件PROG1.C文件中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include #include

double fun ( double eps) { }

main( ) { double x;

printf(\

scanf(\NONO(); }

NONO ( )

{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *fp, *wf ; int i ; double x ;

fp = fopen(\wf = fopen(\for(i = 0 ; i < 10 ; i++) { fscanf(fp, \

fprintf(wf, \}

fclose(fp) ; fclose(wf) ; }

7、m个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平均分的人数作为函数值返回,将低于平均分的分数放在below所指的数组中。

例如,当score数组中的数据为:10、20、30、40、50、60、70、80、90时,函数返回的人数应该是4, below中的数据应为: 10、20、30、40。 注意: 部分源程序在文件PROG1.C文件中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

#include #include

int fun(int score[], int m, int below[]) { }

main( )

{ int i, n, below[9] ;

int score[9] = {10, 20, 30, 40, 50, 60, 70, 80, 90} ; n = fun(score, 9, below) ;

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

NONO ( )

{/* 本函数用于打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/ int i, j, n, below[10], score[10] ; FILE *rf, *wf ;

rf = fopen(\wf = fopen(\for(i = 0 ; i < 10 ; i++) {

for(j = 0 ; j < 10 ; j++) fscanf(rf, \ n = fun(score, 10, below) ;

for(j = 0 ; j < n ; j++) fprintf(wf, \ fprintf(wf, \}

fclose(rf) ; fclose(wf) ; }

8、假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:除了字符串前导的*号之外,将串中其它*号全部删除。在编写函数时,不得使用C语言提供的字符串函数。

例如,字符串中的内容为:****A*BC*DEF*G*******,删除后, 字符串中的内容应当是:****ABCDEFG。

注意: 部分源程序在文件PROG1.C文件中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include void fun( char *a ) {

/* 以下代码仅供参考 */ int i=0,k;

while(a[i]=='*') i++; k=i+1;

while(a[i]!='\\0') /* 以下程序段实现非*字符前移 */ { }

a[i+1]='\\0'; }

main()

{ char s[81];

printf(\ fun( s );

printf(\ NONO(); }

NONO()

{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *in, *out ; int i ; char s[81] ;

in = fopen(\out = fopen(\for(i = 0 ; i < 10 ; i++) { fscanf(in, \ fun(s) ;

fprintf(out, \ }

fclose(in) ; fclose(out) ; }

9、假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:将字符串中的前导*号全部移到字符串的尾部。

例如,字符串中的内容为:*******A*BC*DEF*G****,移动后,字符串中的内容应当是:A*BC*DEF*G***********。在编写函数时, 不得使用C语言提供的字符串函数。 注意: 部分源程序在文件PROG1.C文件中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include void fun( char *a ) {

/* 以下代码仅供参考 */ char *p,*q;

int n=0; p=a;

while(*p=='*') /* 统计串头'*'个数n */ {n++; p++;} q=a;

/* 向前复制字符串,请填写相应的语句完成其功能 */

for(;n>0;n--) /* 在串尾补n个'*' */ *q++='*'; *q='\\0'; }

main()

{ char s[81],*p; int n=0;

printf(\ fun( s );

printf(\ NONO(); }

NONO()

{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *in, *out ; int i ; char s[81] ;

in = fopen(\out = fopen(\for(i = 0 ; i < 10 ; i++) { fscanf(in, \ fun(s) ;

fprintf(out, \ }

fclose(in) ; fclose(out) ; }

10、假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:使字符串的前导*号不得多于n个;若多于n个,则删除多余的*号; 若少于或等于n个,则什么也不做,字符串中间和尾部的*号不删除。

例如,字符串中的内容为:*******A*BC*DEF*G****,若n的值为4,删除后,字符串中的内容应当是:****A*BC*DEF*G****;若n的值为8,则字符串中的内容仍为:*******A*BC*DEF*G****。n的值在主函数中输入。 在编写函数时,不得使用C语言提供的字符串函数。

注意: 部分源程序在文件PROG1.C文件中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写

的若干语句。 #include

void fun( char *a, int n ) {

/* 以下代码仅供参考 */ int i=0,j,k=0;

while(a[k]=='*') k++; /* k为统计*字符个数 */ if(k>n) {

i=n;j=k;

/* 以下完成将下标为k至串尾的字符前移k-n个位置 */

} }

main()

{ char s[81]; int n;

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

printf(\ NONO(); }

NONO()

{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *in, *out ; int i, n ; char s[81] ;

in = fopen(\out = fopen(\for(i = 0 ; i < 10 ; i++) { fscanf(in, \ fscanf(in, \ fun(s,n) ;

fprintf(out, \ }

fclose(in) ; fclose(out) ; }

11、请编写函数fun,它的功能是:求出能整除形参x且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。

例如,若 x 中的值为: 35,则有 4 个数符合要求,它们是: 1, 5, 7, 35。 注意: 部分源程序在文件PROG1.C文件中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include

void fun ( int x, int pp[], int *n ) { }

main( )

{ int x, aa[1000], n, i ;

printf( \ fun(x, aa, &n ) ;

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

printf(\ printf(\ NONO( ) ; }

NONO ( )

{/* 本函数用于打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/ int x, aa[1000], n, i, j ; FILE *fp ;

fp = fopen(\for(j = 0 ; j < 10 ; j++) { x = 30 + j ; fun(x, aa, &n) ;

for(i = 0 ; i < n ; i++) fprintf(fp, \ fprintf(fp, \}

fclose(fp) ; }

12、函数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];

printf(\fun(s, t);

printf(\NONO(); }

NONO( )

{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ char s[100], t[100] ; FILE *rf, *wf ; int i ;

rf = fopen(\wf = fopen(\for(i = 0 ; i < 10 ; i++) { fscanf(rf, \ fun(s, t) ;

fprintf(wf, \}

fclose(rf) ; fclose(wf) ; }

13、函数fun的功能是:将a、b中的两个两位正整数合并形成一个新的整数放在c中。合并的方式是:将a中的十位和个位数依次放在变量c的百位和个位上,b中的十位和个位数依次放在变量c的十位和千位上。

例如,当a=45,b=12。调用该函数后,c=2415。

注意: 部分源程序存在文件PROG1.C中。数据文件IN.DAT中的数据不得修改。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include

void fun(int a, int b, long *c) { }

main()

{ int a,b; long c; printf(\ scanf(\ fun(a, b, &c);

printf(\ NONO(); }

NONO ( )

{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *rf, *wf ; int i, a,b ; long c ;

rf = fopen(\wf = fopen(\for(i = 0 ; i < 10 ; i++) {

fscanf(rf, \ fun(a, b, &c) ;

fprintf(wf, \}

fclose(rf) ; fclose(wf) ; }

14、编写函数fun,它的功能是:求小于形参n同时能被3与7整除的所有自然数之和的平方根,并作为函数值返回。

例如若n为1000时,程序输出应为:s = 153.909064。 注意: 部分源程序在文件PROG1.C文件中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include #include double fun( int n) { }

main() /* 主函数 */ {

printf(\ NONO(); }

NONO ( )

{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *fp, *wf ; int i, n ;

float s;

fp = fopen(\wf = fopen(\for(i = 0 ; i < 10 ; i++) { fscanf(fp, \ s = fun(n) ;

fprintf(wf, \}

fclose(fp) ; fclose(wf) ; }

15、请编写函数fun, 函数的功能是: 将M行N列的二维数组中的数据,按行的顺序依次放到一维数组中, 一维数组中数据的个数存放在形参n所指的存储单元中。 例如, 二维数组中的数据为: 33 33 33 33 44 44 44 44 55 55 55 55

则一维数组中的内容应是:

33 33 33 33 44 44 44 44 55 55 55 55。 注意:部分源程序在文件PROG1.C中。

请勿改动主函数main和其它函数中的任何内容, 仅在函数fun的花括号中填入你编写的若干语句。 #include

void fun(int (*s)[10], int *b, int *n, int mm, int nn) { }

main()

{ int w[10][10] = {{33,33,33,33},

{44,44,44,44},{55,55,55,55}},i,j ; int a[100] = {0}, n = 0 ; printf(\for(i = 0 ; i < 3 ; i++)

{ for(j = 0 ; j < 4 ; j++) printf(\ printf(\}

fun(w, a, &n, 3, 4) ;

printf(\

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

NONO()

{/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。*/ FILE *rf, *wf ; int i, j, k ;

int w[10][10], a[100], n = 0, mm, nn ; rf = fopen(\wf = fopen(\for(k = 0 ; k < 5 ; k++) {

fscanf(rf, \ for(i = 0 ; i < mm ; i++)

for(j = 0 ; j < nn ; j++) fscanf(rf, \ fun(w, a, &n, mm, nn) ;

for(i = 0 ; i < n ; i++) fprintf(wf, \}

fclose(rf) ; fclose(wf) ; } 16、学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:按分数的高低排列学生的记录,高分在前。 注意: 部分源程序在文件PROG1.C文件中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include #define N 16 typedef struct { char num[10]; int s; } STREC;

int fun( STREC a[] ) { }

main()

{ STREC s[N]={{\

{\ {\ {\ {\ {\ int i;FILE *out ; fun( s );

printf(\ for(i=0;i

{ if( (i)%4==0 )printf(\

printf(\ }

printf(\

out = fopen(\ for(i=0;i

{ if( (i)%4==0 && i) fprintf(out, \ fprintf(out, \ }

fprintf(out,\ fclose(out) ; }

17、程序定义了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; double s ;

printf(\ for ( i =0; i

{ printf( \ printf(\ }

s = fun ( a );

printf (\ printf( \ NONO( ); }

NONO( )

{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *rf, *wf ;

int i, j, a[5][5]; double s ;

rf = fopen(\wf = fopen(\for(i = 0 ; i < 5 ; i++)

for(j = 0 ; j < 5 ; j++) fscanf(rf, \s = fun(a) ;

fprintf(wf, \fclose(rf) ; fclose(wf) ; }

18、请编写函数fun,其功能是求出数组的最大元素在数组中的下标并存放在k所指的存储单元中。

例如, 输入如下整数: 876 675 896 101 301 401 980 431 451 777 则输出结果为: 6, 980

注意: 部分源程序在文件PROG1.C文件中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include

int fun(int *s, int t, int *k) { }

main( ) {

int a[10]={876,675,896,101,301,401,980,431,451,777}, k ; fun(a, 10, &k) ;

printf(\ NONO( ) ; }

NONO ( )

{/* 本函数用于打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/ int a[10], i, k, j ; FILE *rf, *wf ;

rf = fopen(\wf = fopen(\for(i = 0 ; i < 10 ; i++) {

for(j = 0 ; j < 10 ; j++) fscanf(rf, \ fun(a, 10, &k) ;

fprintf(wf, \}

fclose(rf) ; fclose(wf) ; }

19、假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:将字符串尾部的*号全部删除,前面和中间的*号不删除。

例如,字符串中的内容为:****A*BC*DEF*G*******,删除后,字符串中的内容应当是:****A*BC*DEF*G。在编写函数时,不得使用C语言提供的字符串函数。 注意: 部分源程序在文件PROG1.C文件中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include #include void fun( char *a ) { }

main()

{ char s[81];

printf(\ fun( s );

printf(\ NONO(); }

NONO()

{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *in, *out ; int i ; char s[81] ;

in = fopen(\out = fopen(\for(i = 0 ; i < 10 ; i++) { fscanf(in, \ fun(s) ;

fprintf(out, \ }

fclose(in) ;

fclose(out) ; } 20、编写函数fun, 函数的功能是求出小于或等于lim的所有素数并放在aa数组中,函数返回所求出的素数的个数。

注意:部分源程序在文件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++) {

/* 以下完成判断aa数组中小于或等于lim的素数并统计个数 */ }

return k; }

main() {

int limit, i, sum; int aa[MAX] ;

printf(\输入一个整数\scanf(\sum=fun(limit, aa); for(i=0 ; i < sum ; i++) {

if(i % 10 == 0 && i != 0) printf(\ printf(\}

NONO(); }

NONO() {

/* 请在此函数内打开文件,输入测试数据,调用 fun 函数, 输出数据,关闭文件。 */

FILE *rf, *wf ;

int limit, i, sum, aa[MAX] ;

rf = fopen(\wf = fopen(\fscanf(rf, \sum=fun(limit, aa);

for(i=0 ; i < sum ; i++) fprintf(wf,\fclose(rf) ; fclose(wf) ; }

21、请编写函数fun,函数的功能是:将大于形参m且紧靠m的k个素数存入xx所指的数组中。例如,若输入17, 5,则应输出:19, 23, 29, 31, 37。 注意: 部分源程序在文件PROG1.C文件中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include

void fun(int m, int k, int xx[]) {

/* 以下代码仅供参考 */ int i, j=1, t=m+1; while(j<=k) {

/* 以下完成判断素数,并存放到数组xx中 */ } }

main() {

int m, n, zz[1000] ;

printf( \ scanf(\ fun( m, n, zz) ;

for( m = 0 ; m < n ; m++ ) printf(\ printf(\ NONO( ) ; }

NONO ( )

{/* 本函数用于打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/ int m, n, zz[1000], i ; FILE *rf, *wf ;

rf = fopen(\wf = fopen(\for(i = 0 ; i < 10 ; i++) {

fscanf(rf, \ fun(m, n, zz) ;

for( m = 0 ; m < n ; m++ ) fprintf(wf, \ fprintf(wf, \}

fclose(rf) ; fclose(wf) ; } 22、N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。请编写函数fun,它的功能是:找出学生的最高分,由函数值返回。 注意: 部分源程序在文件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}, max; STREC *h;

h=creat( s ); outlist(h); max=fun( h );

printf(\ NONO(); }

NONO()

{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *in, *out ;

int i,j ; double s[N],max; STREC *h ;

in = fopen(\out = fopen(\for(i = 0 ; i < 10 ; i++) {

for(j=0 ; j < N; j++) fscanf(in, \ h=creat( s ); max=fun( h );

fprintf(out, \}

fclose(in) ; fclose(out) ; }

23、学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中, 请编写函数fun,它的功能是:把高于等于平均分的学生数据放在b所指的数组中,高于等于平均分的学生人数通过形参n传回,平均分通过函数值返回。 注意: 部分源程序在文件PROG1.C文件中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include #define N 12 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(\ printf(\

out = fopen(\ fprintf(out, \ for(i=0;i

if(h[i].s

fprintf(out,\ fclose(out); }

24、请编写函数 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; clrscr();

printf ( \ for ( i=0; i

{ for ( j =0; j

y = fun ( aa );

printf( \ printf(\ NONO( ); }

NONO( )

{/* 请在此函数内打开文件,输入测试数据,调用 fun 函数, 输出数据,关闭文件。 */ int i, j, y, k, aa[M][N] ; FILE *rf, *wf ;

rf = fopen(\wf = fopen(\for(k = 0 ; k < 10 ; k++) { for(i = 0 ; i < M ; i++)

for(j = 0 ; j < N ; j++) fscanf(rf, \ y = fun ( aa );

fprintf(wf, \}

fclose(rf) ; fclose(wf) ; }

25、函数fun的功能是: 将s所指字符串中除了下标为奇数、同时ASCII值也为奇数的字符之外,其余的所有字符都删除,串中剩余字符所形成的一个新串放在t所指的数组中。 例如,若s所指字符串中的内容为:\其中字符A的ASCII码值虽为奇数,但所在元素的下标为偶数,因此必需删除;而字符1的ASCII码值为奇数,所在数组中的下标也为奇数,因此不应当删除,其它依此类推。最后t所指的数组中的内容应是:\。 注意: 部分源程序存在文件PROG1.C中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写

的若干语句。 #include #include

void fun(char *s, char t[]) { }

main() {

char s[100], t[100];

printf(\fun(s, t);

printf(\NONO(); }

NONO ( )

{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ char s[100], t[100] ; FILE *rf, *wf ; int i ;

rf = fopen(\wf = fopen(\for(i = 0 ; i < 10 ; i++) { fscanf(rf, \ fun(s, t) ;

fprintf(wf, \}

fclose(rf) ; fclose(wf) ; }

26、编写一个函数,从num个字符串中找出最长的一个字符串,并通过形参指针max传回该串地址。(注意: 主函数中用****作为结束输入的标志) 注意:部分源程序在文件PROG1.C中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include #include

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; 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(\ NONO(); }

NONO() {

/* 请在此函数内打开文件,输入测试数据,调用 fun 函数, 输出数据,关闭文件。 */ char ss[20][81],*ps; int n,i=0; FILE *rf, *wf ;

rf = fopen(\wf = fopen(\fgets(ss[i], 81, rf);

while(!strncmp(ss[i],\{

i++;

fgets(ss[i], 81, rf); } n=i;

fun(ss,n,&ps);

fprintf(wf, \fclose(rf) ; fclose(wf) ; }

27、请编写函数fun, 函数的功能是: 判断字符串是否为回文?若是, 函数返回1,主函数中输出: YES, 否则返回0, 主函数中输出NO。回文是指顺读和倒读都一样的字符串。 例如, 字符串LEVEL是回文, 而字符串123312就不是回文。 注意:部分源程序在文件PROG1.C中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include #define N 80 int fun(char *str) { }

main()

{ char s[N] ;

printf(\printf(\if(fun(s)) printf(\else printf(\NONO() ; }

NONO()

{/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */ FILE *rf, *wf ; int i ; char s[N] ;

rf = fopen(\wf = fopen(\for(i = 0 ; i < 10 ; i++) { fscanf(rf, \

if(fun(s)) fprintf(wf, \ else fprintf(wf, \}

fclose(rf) ; fclose(wf) ; }

28、请编写函数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的花括号中填入你编写的若干语句。 #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; printf(\ for(i=0; i

printf(\

for(i=0;i

NONO()

{/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */ FILE *rf, *wf; int a[N], n, i, j ; rf = fopen(\wf = fopen(\for(i = 0 ; i < 5 ; i++) { fscanf(rf, \

for(j = 0 ; j < n ; j++) fscanf(rf, \ n = fun(a, n) ;

for(j = 0 ; j < n ; j++) fprintf(wf, \ fprintf(wf, \}

fclose(rf) ; fclose(wf) ; } 29、请编写一个函数fun,它的功能是:找出一维整型数组元素中最大的值和它所在的下标, 最大的值和它所在的下标通过形参传回。数组元素中的值已在主函数中赋予。

主函数中x是数组名, n是x中的数据个数,max存放最大值,index存放最大值所在元素的下标。

注意: 部分源程序存在文件PROG1.C文件中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写

的若干语句。 #include #include

void fun(int a[], int n , int *max, int *d ) { }

main()

{ int i, x[20], max , index, n = 10; randomize() ;

for (i=0;i < n;i++) {x[i] = rand()P; printf(\printf(\

fun( x, n , &max, &index);

printf(\NONO(); }

NONO ( )

{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *fp, *wf ;

int i, x[20], max , index, n = 10, j ; fp = fopen(\wf = fopen(\for(i = 0 ; i < 10 ; i++) {

for(j = 0 ; j < n ; j++) fscanf(fp, \ fun( x, n , &max, &index);

fprintf(wf, \}

fclose(fp) ; fclose(wf) ; }

30、请编写函数fun, 函数的功能是:统计一行字符串中单词的个数,作为函数值返回。一行字符串在主函数中输入, 规定所有单词由小写字母组成,单词之间由若干个空格隔开, 一行的开始没有空格。

注意:部分源程序在文件PROG1.C中。

请勿改动主函数main和其它函数中的任何内容, 仅在函数fun的花括号中填入你编写的若干语句。 #include #include #define N 80 int fun( char *s) {

}

main()

{ char line[N]; int num=0;

printf(\ num=fun( line );

printf(\ NONO(); }

NONO()

{/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */ FILE *rf, *wf ; int i, num ; char line[N], *p ; rf = fopen(\wf = fopen(\for(i = 0 ; i < 10 ; i++) { fgets(line, N, rf) ; p = strchr(line, '\\n') ; if(p != NULL) *p = 0 ; num = fun(line) ;

fprintf(wf, \}

fclose(rf) ; fclose(wf) ; }

31、程序定义了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 #include #define N 5

int fun ( int a[][N], int m ) { }

main ( )

{ int a[N][N], m, i, j;

printf(\ for ( i =0; i

{ a[i][j] = rand() ; printf( \ printf(\ }

do m = rand() ; while ( m>=3 ); printf(\ fun ( a ,m );

printf (\ for ( i =0; i

{ for ( j =0; j

NONO ( ); }

NONO( )

{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *rf, *wf ; int i, j, n, a[5][5] ;

rf = fopen(\wf = fopen(\for(i = 0 ; i < 5 ; i++) for(j = 0 ; j < 5 ; j++)

fscanf(rf, \fscanf(rf, \fun(a, n) ;

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

for ( j = 0; j < 5; j++ ) fprintf(wf, \ fprintf(wf, \}

fclose(rf) ; fclose(wf) ; }

32、请编写函数fun, 函数的功能是: 将M行N列的二维数组中的字符数据, 按列的顺序依次放到一个字符串中。

例如, 二维数组中的数据为: W W W W S S S S H H H H

则字符串中的内容应是: WSHWSHWSH。 注意:部分源程序在文件PROG1.C中。

请勿改动主函数main和其它函数中的任何内容, 仅在函数fun的花括号中填入你编写的若干语句。 #include #define M 3 #define N 4

void fun(char s[][N], char *b) {

int i,j,n=0;

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;

printf(\ for(i=0; i

{ for(j=0;j

fun(w,a);

printf(\ printf(\ NONO(); }

NONO()

{/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。FILE *rf, *wf ; int i,j,k ; char a[100],w[M][N], b ;

rf = fopen(\wf = fopen(\for(k = 0 ; k < 10 ; k++) { for(i = 0 ; i < M ; i++) {

for(j = 0 ; j < N ; j++) fscanf(rf, \ fscanf(rf, \ }

fun(w, a) ;

fprintf(wf, \}

fclose(rf) ; fclose(wf) ; }

*/

33、学生的记录由学号和成绩组成,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(\ printf(\

out = fopen(\ fprintf(out, \ for(i=0;i

fprintf(out, \ fclose(out); }

34、编写函数fun,它的功能是计算下列级数和,和值由函数值返回。

例如,当n = 10,x=0.3时,函数值为1.349859。 注意: 部分源程序在文件PROG1.C文件中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include #include

double fun(double x , int n) { }

main() {

printf(\ NONO(); }

NONO ( )

{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *fp, *wf ; int i, n ; double s, x ;

fp = fopen(\wf = fopen(\for(i = 0 ; i < 10 ; i++) {

fscanf(fp, \ s = fun(x, n) ;

fprintf(wf, \}

fclose(fp) ; fclose(wf) ; }

35、函数fun的功能是:将s所指字符串中ASCII值为奇数的字符删除,串中剩余字符形成一个新串放在t所指的数组中。 例如,若s所指字符串中的内容为:\,其中字符A的ASCII码值为奇数、…、字符1的ASCII码值也为奇数、… 都应当删除,其它依此类推。最后t所指的数组中的内容应是:\。

注意: 部分源程序存在文件PROG1.C中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include #include

void fun(char *s, char t[]) {

}

main() {

char s[100], t[100];

printf(\fun(s, t);

printf(\NONO(); }

NONO ( )

{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ char s[100], t[100] ; FILE *rf, *wf ; int i ;

rf = fopen(\wf = fopen(\for(i = 0 ; i < 10 ; i++) { fscanf(rf, \ fun(s, t) ;

fprintf(wf, \}

fclose(rf) ; fclose(wf) ; }

36、请编写一个函数fun,它的功能是:求出一个2×M整型二维数组中最大元素的值,并将此值返回调用函数。

注意: 部分源程序存在文件PROG1.C文件中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include #define M 4 fun (int a[][M]) { }

main( )

{ int arr[2][M]={5,8,3,45,76,-4,12,82} ; printf(\ NONO( ) ; }

NONO ( )

{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *wf ;

int arr[][M]={5,8,3,90,76,-4,12,82} ; wf = fopen(\fprintf(wf, \fclose(wf) ; }

37、请编写一个函数fun,它的功能是:将一个数字字符串转换为一个整数(不得调用C语言提供的将字符串转换为整数的函数)。例如,若输入字符串\则函数把它转换为整数值 -1234。

注意: 部分源程序存在文件PROG1.C文件中。 请勿改动主函数main和其它函数中的任何内容, 仅在函数fun的花括号中填入你编写的若干语句。 #include #include long fun ( char *p) {

/* 以下代码仅供参考 */

int i, len, t; /* len为串长,t为正负标识 */ long x=0; len=strlen(p); if(p[0]=='-')

{ t=-1; len--; p++; } else t=1;

/* 以下完成数字字符串转换为一个数字 */

return x*t; }

main() /* 主函数 */ { char s[6]; long n;

printf(\gets(s); n = fun(s);

printf(\NONO ( ); }

NONO ( )

{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */

FILE *fp, *wf ; int i ;

char s[20] ; long n ;

fp = fopen(\wf = fopen(\for(i = 0 ; i < 10 ; i++) { fscanf(fp, \ n = fun(s);

fprintf(wf, \}

fclose(fp) ; fclose(wf) ; }

38、函数fun的功能是: 将a、b中的两个两位正整数合并形成一个新的整数放在c中。合并的方式是:将a中的十位和个位数依次放在变量c的百位和个位上,b中的十位和个位数依次放在变量c的千位和十位上。

例如,当a=45,b=12。调用该函数后,c=1425。

注意: 部分源程序存在文件PROG1.C中。数据文件IN.DAT中的数据不得修改。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include

void fun(int a, int b, long *c) { }

main() /* 主函数 */ { int a,b; long c;

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

printf(\ NONO(); }

NONO ( )

{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *rf, *wf ; int i, a,b ; long c ;

rf = fopen(\wf = fopen(\for(i = 0 ; i < 10 ; i++) {

fscanf(rf, \ fun(a, b, &c) ;

fprintf(wf, \}

fclose(rf) ; fclose(wf) ; }

39、请编写一个函数,函数的功能是删除字符串中的所有空格。 例如, 主函数中输入\则输出为 \。 注意:部分源程序在文件PROG1.C中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include #include int fun(char *str) { }

main() {

char str[81]; int n;

printf(\gets(str); puts(str); fun(str);

printf(\NONO(); }

NONO() {

/* 请在此函数内打开文件,输入调试数据,调用 fun 函数, 输出数据,关闭文件。 */ char str[81]; int n = 0; FILE *rf, *wf ;

rf = fopen(\wf = fopen(\while(n < 10) {

fgets(str, 80, rf); fun(str);

fprintf(wf, \

n++ ; }

fclose(rf) ; fclose(wf) ; } 40、编写一个函数fun,它的功能是:实现两个字符串的连接(不使用库函数strcat),即把p2所指的字符串连接到p1所指的字符串后。 例如,分别输入下面两个字符串: FirstString-- SecondString 程序输出:

FirstString--SecondString

注意: 部分源程序在文件PROG1.C文件中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include

void fun(char p1[], char p2[]) { }

main()

{ char s1[80], s2[40] ;

printf(\ scanf(\ printf(\ printf(\

printf(\ fun(s1, s2) ;

printf(\ printf(\ NONO() ; }

NONO ( )

{/* 本函数用于打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/ int i ;

FILE *rf, *wf ;

char s1[80], s2[40] ;

rf = fopen(\wf = fopen(\for(i = 0 ; i < 10 ; i++) { fscanf(rf, \ fscanf(rf, \

fun(s1, s2) ;

fprintf(wf, \}

fclose(rf) ; fclose(wf) ; }

41、编写程序, 实现矩阵(3行3列)的转置(即行列互换) 例如, 输入下面的矩阵: 100 200 300 400 500 600 700 800 900 程序输出:

100 400 700 200 500 800 300 600 900

注意: 部分源程序在文件PROG1.C中。

请勿改动主函数main和其它函数中的任何内容, 仅在函数fun的花括号中填入你编写的若干语句。 #include int fun(int array[3][3]) { }

main() {

int i,j;

int array[3][3]={{100,200,300}, {400,500,600}, {700,800,900}}; for (i=0;i<3;i++) { for (j=0;j<3;j++)

printf(\ printf(\ }

fun(array);

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

printf(\ printf(\ }

NONO();

}

NONO() {

/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */ int i,j, array[3][3]; FILE *rf, *wf ;

rf = fopen(\ wf = fopen(\ for (i=0;i<3;i++) for (j=0;j<3;j++)

fscanf(rf, \ fun(array); for (i=0;i<3;i++) { for (j=0;j<3;j++)

fprintf(wf, \ fprintf(wf, \ }

fclose(rf) ; fclose(wf) ; }

42、请编写函数fun, 函数的功能是: 移动一维数组中的内容; 若数组中有n个整数, 要求把下标从0到p(含p,p小于等于n-1)的数组元素平移到数组的最后。 例如, 一维数组中的原始内容为: 1,2,3,4,5,6,7,8,9,10; p的值为3。移动后, 一维数组中的内容应为: 5,6,7,8,9,10,1,2,3,4。

注意:部分源程序在文件PROG1.C中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include #define N 80

void fun(int *w, int p, int n) { }

main()

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

printf(\ for(i=0; i

printf(\ for(i=0; i

printf(\ NONO(); }

NONO()

{/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */ FILE *rf,*wf ; int a[N], i, j, p, n ; rf = fopen(\wf = fopen(\for(i = 0 ; i < 5 ; i++) {

fscanf(rf, \

for(j = 0 ; j < n ; j++) fscanf(rf, \ fun(a, p, n) ;

for(j = 0 ; j < n ; j++) fprintf(wf, \}

fclose(rf) ; fclose(wf) ; }

43、请编写函数fun, 函数的功能是: 将放在字符串数组中的M个字符串(每串的长度不超过N), 按顺序合并组成一个新的字符串。 例如, 字符串数组中的M个字符串为 AAAA BBBBBBB CC

则合并后的字符串的内容应是: AAAABBBBBBBCC。 注意:部分源程序在文件PROG1.C中。

请勿改动主函数main和其它函数中的任何内容, 仅在函数fun的花括号中填入你编写的若干语句。 #include #define M 3 #define N 20

void fun(char a[M][N], char *b) {

/* 以下代码仅供参考 */ int i; *b=0; }

main()

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

printf(\ for(i=0; i

printf(\ printf(\ NONO(); }

NONO()

{/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */ FILE *rf, *wf ;

char w[M][N], a[100] ; int i ;

rf = fopen(\wf = fopen(\for(i = 0 ; i < 10 ; i++) {

fscanf(rf, \ fun(w, a) ;

fprintf(wf, \}

fclose(rf) ; fclose(wf) ; }

44、函数fun的功能是:将a、b中的两个两位正整数合并形成一个新的整数放在c中。合并的方式是:将a中的十位和个位数依次放在变量c的十位和千位上,b中的十位和个位数依次放在变量c的个位和百位上。

例如,当a=45,b=12。调用该函数后,c=5241。

注意: 部分源程序存在文件PROG1.C中。数据文件IN.DAT中的数据不得修改。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include

void fun(int a, int b, long *c) { }

main()

{ int a,b; long c;

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

printf(\ NONO(); }

NONO ( )

{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *rf, *wf ; int i, a,b ; long c ;

rf = fopen(\

wf = fopen(\for(i = 0 ; i < 10 ; i++) {

fscanf(rf, \ fun(a, b, &c) ;

fprintf(wf, \}

fclose(rf) ; fclose(wf) ; }

45、假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:只删除字符串前导和尾部的*号,串中字母之间的*号都不删除。形参n给出了字符串的长度, 形参h给出了字符串中前导*号的个数,形参e给出了字符串中最后*号的个数。在编写函数时,不得使用C语言提供的字符串函数。

例如,字符串中的内容为:****A*BC*DEF*G*******,删除后,字符串中的内容应当是:A*BC*DEF*G。

注意: 部分源程序在文件PROG1.C文件中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include

void fun( char *a, int n,int h,int e ) { }

main()

{ char s[81],*t,*f; int m=0, tn=0, fn=0; printf(\ t=f=s;

while(*t){t++;m++;} t--;

while(*t=='*'){t--;tn++;} while(*f=='*'){f++;fn++;} fun( s , m,fn,tn );

printf(\ NONO(); }

NONO()

{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *in, *out ;

int i ; char s[81], *t, *f ; int m=0, tn=0, fn=0;

in = fopen(\out = fopen(\

for(i = 0 ; i < 10 ; i++) { fscanf(in, \ t=f=s;

m=0; tn=0; fn=0; while(*t){t++;m++;} t--;

while(*t=='*'){t--;tn++;} while(*f=='*'){f++;fn++;} fun(s, m, fn, tn);

fprintf(out, \ }

fclose(in) ; fclose(out) ; }

46、函数fun的功能是:将a、b中的两个两位正整数合并形成一个新的整数放在c中。合并的方式是:将a中的十位和个位数依次放在变量c的千位和十位上,b中的十位和个位数依次放在变量c的个位和百位上。

例如,当a=45,b=12。调用该函数后,c=4251。

注意: 部分源程序存在文件PROG1.C中。数据文件IN.DAT中的数据不得修改。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include

void fun(int a, int b, long *c) { }

main()

{ int a,b; long c;

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

printf(\ NONO(); }

NONO ( )

{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *rf, *wf ; int i, a,b ; long c ;

rf = fopen(\wf = fopen(\for(i = 0 ; i < 10 ; i++) {

fscanf(rf, \

fun(a, b, &c) ;

fprintf(wf, \}

fclose(rf) ; fclose(wf) ; }

47、请编写函数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];

for(i=0; i

for(i=0;i

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

NONO(int d[M])

{/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */ FILE *wf ; int i ;

wf = fopen(\

for(i = 0 ; i < 10 ; i++) fprintf(wf, \fprintf(wf, \fclose(wf) ;

}

48、编写函数fun,它的功能是:计算并输出下列级数和: 1 1 1

S = ── + ── + … + ─── 1×2 2×3 n(n+1)

例如,当n = 10时,函数值为:0.909091。 注意: 部分源程序在文件PROG1.C文件中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include double fun( int n ) { }

main() /* 主函数 */ {

printf(\ NONO(); }

NONO ( )

{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *fp, *wf ; int i, n ; double s ;

fp = fopen(\wf = fopen(\for(i = 0 ; i < 10 ; i++) { fscanf(fp, \ s = fun(n) ;

fprintf(wf, \}

fclose(fp) ; fclose(wf) ; }

49、编写函数fun,其功能是:根据以下公式求P的值,结果由函数值带回。m与n为两个正整数且要求m > n。 m! P = ─── n!(m-n)!

例如:m=12,n=8时,运行结果为495.000000。 注意: 部分源程序在文件PROG1.C文件中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include float fun(int m, int n) { }

main() /* 主函数 */ {

printf(\ NONO(); }

NONO ( )

{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *fp, *wf ; int i, m, n ; float s;

fp = fopen(\wf = fopen(\for(i = 0 ; i < 10 ; i++) {

fscanf(fp, \ s = fun(m, n) ;

fprintf(wf, \}

fclose(fp) ; fclose(wf) ; }

50、请编写函数fun, 函数的功能是: 将M行N列的二维数组中的数据, 按列的顺序依次放到一维数组中。

例如, 二维数组中的数据为: 33 33 33 33 44 44 44 44 55 55 55 55

则一维数组中的内容应是:

33 44 55 33 44 55 33 44 55 33 44 55。 注意:部分源程序在文件PROG1.C中。

请勿改动主函数main和其它函数中的任何内容, 仅在函数fun的花括号中填入你编写的若干语句。 #include

void fun(int s[][10], int b[], int *n, int mm, int nn) {

/* 以下代码仅供参考 */

int i,j,np=0; /* np用作b数组下标 */

*n=np; }

main()

{ int w[10][10]={{33,33,33,33},{44,44,44,44},{55,55,55,55}},i,j; int a[100]={0}, n=0; printf(\ for(i=0; i<3; i++)

{ for(j=0;j<4; j++)printf(\ printf(\ }

fun(w,a,&n,3,4);

printf(\

for(i=0;i

NONO()

{/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。FILE *rf, *wf ; int i, j, k ;

int w[10][10], a[100], n = 0, mm, nn ; rf = fopen(\wf = fopen(\for(k = 0 ; k < 5 ; k++) {

fscanf(rf, \ for(i = 0 ; i < mm ; i++)

for(j = 0 ; j < nn ; j++) fscanf(rf, \ fun(w, a, &n, mm, nn) ;

for(i = 0 ; i < n ; i++) fprintf(wf, \}

fclose(rf) ; fclose(wf) ; }

编程答案

1、void fun(char *w, int m) /*可调用fun1函数左移字符 */ { int i;

for(i=0;i

2、int fun( STREC *a,STREC *b,int l, int h )

*/ {

int i,j=0;

for(i=0;i

if(a[i].s>=l && a[i].s<=h) {

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

return j; }

3、fun( STU a[], STU *s ) { int i; *s=a[0];

for(i=1;i

if(a[i].ss) {

*s=a[i]; } } }

4、void fun( char *ss ) {

int i=1;

while(ss[i-1] && ss[i]) {

if(ss[i]>='a' && ss[i]<='z') ss[i]+='A'-'a'; i+=2; } }

5、float fun ( float h ) {

long i=h*1000;

if(i<5) return (i/10)/100.0; else return (i/10+1)/100.0; }

6、double fun ( double eps)

本文来源:https://www.bwwdw.com/article/tltw.html

Top