三、编程题 考试做题要求:
1、按题目要求编写部分代码,不要改动已经有的代码。 2、在运行时如果遇到死循环,按Ctrl+Break键结束运行。 3、题目做完后必须要有运行结果,没有运行结果没有分。
1: 请编写函数fun, 其功能是: 计算并输出下列多项式的值:
例如, 在主函数中从键盘给n输入8后, 输出为: s=0.662872。 注意: 要求n的值大于1但不大于100。 部分源程序在文件PROG1.C中。
请勿改动主函数main和其他函数中的任何内容, 仅在函数fun的花括号中填入你编写的若干语句。
#include { int n; double s; printf(\"\\nInput n: \"); scanf(\"%d\ s=fun(n); printf(\"\\ns=%f\\n\ NONO(); } NONO() {/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */ FILE *rf, *wf ; int n, i ; double s ; rf = fopen(\"c:\\\est\\\\in.dat\ wf = fopen(\"c:\\\est\\\\out.dat\ for(i = 0 ; i < 10 ; i++) { fscanf(rf, \"%d\ s = fun(n) ; fprintf(wf, \"%lf\\n\ } fclose(rf) ; fclose(wf) ; } 2: 学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:函数返回指定学号的学生数据,指定的学号在主函数中输入。若没找到指定学号,在结构体变量中给学号置空串,给成绩置-1,作为函数值返回。(用于字符串比较的函数是strcmp)。 注意: 部分源程序在文件PROG1.C中。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include STREC fun( STREC *a, char *b ) { } main() { STREC s[N]={{\"GA005\ {\"GA001\{\"GA015\{\"GA011\ STREC h; char m[10]; int i;FILE *out ; printf(\"The original data:\\n\"); for(i=0; i printf(\"%s %3d \ } printf(\"\\n\\nEnter the number: \");gets(m); h=fun( s,m ); printf(\"The data : \"); printf(\"\\n%s %4d\\n\ printf(\"\\n\"); out = fopen(\"c:\\\est\\\\out.dat\ h=fun(s,\"GA013\"); fprintf(out,\"%s %4d\\n\ fclose(out); } 3: 已知学生的记录由学号和学习成绩构成,N名学生的数据已存入结构体数组a中。请编写函数 fun,函数的功能是:找出成绩最高的学生记录,通过形参指针传回主函数(规定只有一个最高分)。已给出函数的首部,请完成该函数。 注意: 部分源程序存在文件PROG1.C中。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include { char num[10]; int s; } STU; fun( STU a[], STU *s ) { } main ( ) { STU a[N]={ {\"A01\ {\"A06\ int i; printf(\"***** The original data *****\\n\"); for ( i=0; i< N; i++ )printf(\"No = %s Mark = %d\\n\ fun ( a, &m ); printf (\"***** THE RESULT *****\\n\"); printf (\"The top : %s , %d\\n\ NONO( ); } NONO( ) {/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *rf, *wf ; STU a[N], m ; int i ; rf = fopen(\"c:\\\est\\\\in.dat\ wf = fopen(\"c:\\\est\\\\out.dat\ for(i = 0 ; i < 10; i++) fscanf(rf, \"%s %d\ fun(a, &m) ; fprintf (wf, \"The top : %s, %d\\n\ fclose(rf) ; fclose(wf) ; } 4: 请编写函数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]; printf( \"\\nPlease enter an integer number between 10 and 100: \" ); scanf( \"%d\ fun( n, &m, zz ); printf( \"\\n\\nThere are %d non-prime numbers less than %d:\ for( n = 0; n < m; n++ ) printf( \"\\n %4d\ NONO(); } NONO() { /* 请在此函数内打开文件,输入测试数据,调用 fun 函数, 输出数据,关闭文件。 */ int m, n, zz[100]; FILE *rf, *wf ; rf = fopen(\"c:\\\est\\\\in.dat\ wf = fopen(\"c:\\\est\\\\out.dat\ fscanf( rf, \"%d\ fun( n, &m, zz ); fprintf(wf, \"%d\\n%d\\n\ for( n = 0; n < m; n++ ) fprintf(wf, \"%d\\n\ fclose(rf) ; fclose(wf) ; } 5: 请编写一个函数 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( ) { unsigned x; printf ( \"Enter a unsigned integer number : \" ); scanf ( \"%u\ printf ( \"The original data is : %u\\n\ if ( x < 10 ) printf (\"Data error !\"); else printf ( \"The result : %u\\n\ NONO( ); } NONO( ) {/* 请在此函数内打开文件,输入测试数据,调用 fun 函数, 输出数据,关闭文件。 */ unsigned x ; int i ; FILE *rf, *wf ; rf = fopen(\"c:\\\est\\\\in.dat\ wf = fopen(\"c:\\\est\\\\out.dat\ for(i = 0 ; i < 20 ; i++) { fscanf(rf, \"%u\ fprintf(wf, \"%u\\n\ } fclose(rf) ; fclose(wf) ; } 6: 请编写一个函数fun,它的功能是:比较两个字符串的长度,(不得调用C语言提供的求字符串长度的函数),函数返回较长的字符串。若两个字符串长度相同,则返回第一个字符串。 例如,输入beijing 函数将返回shanghai。 注意: 部分源程序存在文件PROG1.C中。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include char *fun ( char *s, char *t) { } main( ) { char a[20],b[20]; printf(\"Input 1th string:\") ; gets( a); printf(\"Input 2th string:\") ; gets( b); printf(\"%s\\n\ NONO (); } NONO ( ) {/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 FILE *fp, *wf ; int i ; char a[20], b[20] ; fp = fopen(\"c:\\\est\\\\in.dat\ wf = fopen(\"c:\\\est\\\\out.dat\ for(i = 0 ; i < 10 ; i++) { fscanf(fp, \"%s %s\ fprintf(wf, \"%s\\n\ } fclose(fp) ; fclose(wf) ; } */ 7: 请编写函数fun, 函数的功能是:实现B=A+A', 即把矩阵A加上A的转置, 存放在矩阵B中。计算结果在 main 函数中输出。例如,输入下面的矩阵: 其转置矩阵为: 1 2 3 1 4 7 4 5 6 2 5 8 7 8 9 3 6 9 程序输出: 2 6 10 6 10 14 10 14 18 注意: 部分源程序在文件PROG1.C中。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include void fun ( int a[3][3], int b[3][3]) { } main( ) /* 主程序 */ { int a[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}, t[3][3] ; int i, j ; fun(a, t) ; for (i = 0 ; i < 3 ; i++) { for (j = 0 ; j < 3 ; j++) printf(\"%7d\ printf(\"\\n\") ; } NONO () ; } NONO ( ) {/* 本函数用于打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/ int i, j, k, a[3][3], t[3][3] ; FILE *rf, *wf ; rf = fopen(\"c:\\\est\\\\in.dat\ wf = fopen(\"c:\\\est\\\\out.dat\ for(k = 0 ; k < 5 ; k++) { for(i = 0 ; i < 3 ; i++) fscanf(rf, \"%d %d %d\ fun(a, t) ; for(i = 0 ; i < 3 ; i++) { for(j = 0 ; j < 3 ; j++) fprintf(wf, \"%7d\ fprintf(wf, \"\\n\") ; } } fclose(rf) ; fclose(wf) ; } 8: 假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:除了尾部的*号之外,将字符串中其它*号全部删除。形参p已指向字符串中最后的一个字母。在编写函数时,不得使用C语言提供的字符串函数。 例如,字符串中的内容为:****A*BC*DEF*G*******,删除后,字符串中的内容应当是: ABCDEFG*******。 注意: 部分源程序在文件PROG1.C中。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include void fun( char *a, char *p ) { } main() { char s[81],*t; printf(\"Enter a string:\\n\");gets(s); t=s; while(*t)t++; t--; while(*t=='*')t--; fun( s , t ); printf(\"The string after deleted:\\n\");puts(s); NONO(); } NONO() {/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *in, *out ; int i ; char s[81],*t ; in = fopen(\"c:\\\est\\\\in.dat\ out = fopen(\"c:\\\est\\\\out.dat\ for(i = 0 ; i < 10 ; i++) { fscanf(in, \"%s\ t=s; while(*t)t++; t--; while(*t=='*')t--; fun(s,t) ; fprintf(out, \"%s\\n\ } fclose(in) ; fclose(out) ; } 9: 假定输入的字符串中只包含字母和*号。请编写函数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的花括号中填入你编写的若干语句。 #include void fun( char *a,int n ) { } main() { char s[81]; int n; printf(\"Enter a string:\\n\");gets(s); printf(\"Enter n : \");scanf(\"%d\ fun( s,n ); printf(\"The string after deleted:\\n\");puts(s); NONO(); } NONO() {/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *in, *out ; int i, n ; char s[81] ; in = fopen(\"c:\\\est\\\\in.dat\ out = fopen(\"c:\\\est\\\\out.dat\ for(i = 0 ; i < 10 ; i++) { fscanf(in, \"%s\ fscanf(in, \"%d\ fun(s,n) ; fprintf(out, \"%s\\n\ } fclose(in) ; fclose(out) ; } 10: 假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:删除字符串中所有的*号。在编写函数时,不得使用C语言提供的字符串函数。 例如,字符串中的内容为:****A*BC*DEF*G*******,删除后,字符串中的内容应当是:ABCDEFG。 注意: 部分源程序在文件PROG1.C中。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写 的若干语句。 #include { char s[81]; printf(\"Enter a string:\\n\");gets(s); fun( s ); printf(\"The string after deleted:\\n\");puts(s); NONO(); } NONO() {/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *in, *out ; int i ; char s[81] ; in = fopen(\"c:\\\est\\\\in.dat\ out = fopen(\"c:\\\est\\\\out.dat\ for(i = 0 ; i < 10 ; i++) { fscanf(in, \"%s\ fun(s) ; fprintf(out, \"%s\\n\ } fclose(in) ; fclose(out) ; } 11: 请编写函数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 ; fun ( aa, &n ) ; for ( k = 0 ; k < n ; k++ ) if((k + 1) % 10 == 0) printf(\"\\n\") ; else printf(\"%5d\ NONO( ); } NONO ( ) {/* 本函数用于打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/ int aa[1000], n, k ; FILE *fp ; fp = fopen(\"c:\\\est\\\\out.dat\ fun ( aa, &n ) ; for ( k = 0 ; k < n ; k++ ) if((k + 1) % 10 == 0) fprintf(fp, \"\\n\") ; else fprintf(fp, \"%5d\ fclose(fp) ; } 12: 函数fun的功能是:将s所指字符串中ASCII值为偶数的字符删除,串中剩余字符形成一个新串放在t所指的数组中。 例如,若s所指字符串中的内容为:\"ABCDEFG12345\",其中字符B的ASCII码值为偶数、…、字符2的ASCII码值为偶数、… 都应当删除,其它依此类推。最后t所指的数组中 的内容应是:\"ACEG135\"。 注意: 部分源程序存在文件PROG1.C中。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include void fun(char *s, char t[]) { } main() { char s[100], t[100]; printf(\"\\nPlease enter string S:\"); scanf(\"%s\ fun(s, t); printf(\"\\nThe result is: %s\\n\ NONO(); } NONO ( ) {/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 char s[100], t[100] ; FILE *rf, *wf ; int i ; rf = fopen(\"c:\\\est\\\\in.dat\ wf = fopen(\"c:\\\est\\\\out.dat\ for(i = 0 ; i < 10 ; i++) { fscanf(rf, \"%s\ fun(s, t) ; fprintf(wf, \"%s\\n\ } fclose(rf) ; */ fclose(wf) ; } 13: 函数fun的功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的个位和百位上, b数的十位和个位数依次放在c数的千位和十位上。 例如,当a=45,b=12时,调用该函数后,c=1524。 注意: 部分源程序存在文件PROG1.C中。数据文件IN.DAT中的数据不得修改。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include void fun(int a, int b, long *c) { } main() { int a,b; long c; printf(\"Input a, b:\"); scanf(\"%d,%d\ fun(a, b, &c); printf(\"The result is: %ld\\n\ NONO(); } NONO ( ) {/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *rf, *wf ; int i, a,b ; long c ; rf = fopen(\"c:\\\est\\\\in.dat\ wf = fopen(\"c:\\\est\\\\out.dat\ for(i = 0 ; i < 10 ; i++) { fscanf(rf, \"%d,%d\ fun(a, b, &c) ; fprintf(wf, \"a=%d,b=%d,c=%ld\\n\ } fclose(rf) ; fclose(wf) ; } 14: 编写函数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.739085。 注意: 部分源程序在文件PROG1.C中。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include printf(\"Root =%f\\n\ NONO(); } NONO ( ) {/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *wf ; wf = fopen(\"c:\\\est\\\\out.dat\ fprintf(wf, \"%f\\n\ fclose(wf) ; } 15: 请编写函数fun, 其功能是: 计算并输出下列多项式的值: 例如, 在主函数中从键盘给n输入15, 则输出为:s=2.718282。 注意: 要求n的值大于1但不大于100。 部分源程序在文件PROG1.C中。 请勿改动主函数main和其他函数中的任何内容, 仅在函数fun的花括号中填入你编写的若干语句。 #include { int n; double s; printf(\"Input n: \"); scanf(\"%d\ s=fun(n); printf(\"s=%f\\n\ NONO(); } NONO() {/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */ FILE *rf, *wf ; int n, i ; double s ; rf = fopen(\"c:\\\est\\\\in.dat\ wf = fopen(\"c:\\\est\\\\out.dat\ for(i = 0 ; i < 10 ; i++) { fscanf(rf, \"%d\ s = fun(n) ; fprintf(wf, \"%lf\\n\ } fclose(rf) ; fclose(wf) ; } 16: 学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把分数最高的学生数据放在b所指的数组中,注意:分数最高的学生可能不止一个,函数返回分数最高的学生的人数。 注意: 部分源程序在文件PROG1.C中。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include int fun( STREC *a, STREC *b ) { } main() { STREC s[N]={{\"GA05\ {\"GA01\{\"GA015\{\"GA011\ STREC h[N]; int i,n;FILE *out ; n=fun( s,h ); printf(\"The %d highest score :\\n\ for(i=0;i out = fopen(\"c:\\\est\\\\out.dat\ fprintf(out, \"%d\\n\ for(i=0;i 17: 程序定义了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 int fun ( int a[][N] ) { } main ( ) { int a[N][N], i, j; printf(\"***** The array *****\\n\"); for ( i =0; i fun ( a ); printf (\"THE RESULT\\n\"); for ( i =0; i {/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *rf, *wf ; int i, j, a[5][5] ; rf = fopen(\"c:\\\est\\\\in.dat\ wf = fopen(\"c:\\\est\\\\out.dat\ for(i = 0 ; i < 5 ; i++) for(j = 0 ; j < 5 ; j++) fscanf(rf, \"%d \ fun(a) ; for ( i = 0; i < 5; i++ ) { for ( j = 0; j < 5; j++ ) fprintf(wf, \"%4d\ fprintf(wf, \"\\n\"); } fclose(rf) ; fclose(wf) ; } 18: 请编写一个函数void fun (char a[],char b[],int n),其功能是:删除一个字符串中指定下标的字符。其中, a指向原字符串, 删除指定字符后的字符串存放在b所指的数组中,n中存放指定的下标。 例如,输入一个字符串: World,然后输入3,则调用该函数后的结果为: Word。 注意: 部分源程序在文件PROG1.C中。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include void fun (char a[], char b[], int n) { } main( ) { char str1[LEN], str2[LEN] ; int n ; printf(\"Enter the string:\\n\") ; gets(str1) ; printf(\"Enter the position of the string deleted:\") ; scanf(\"%d\ fun(str1, str2, n) ; printf(\"The new string is: %s\\n\ NONO() ; } NONO ( ) {/* 本函数用于打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/ char str1[LEN], str2[LEN] ; int i, n ; FILE *rf, *wf ; rf = fopen(\"c:\\\est\\\\in.dat\ wf = fopen(\"c:\\\est\\\\out.dat\ for(i = 0 ; i < 10 ; i++) { fscanf(rf, \"%s %d\ fun(str1, str2, n) ; fprintf(wf, \"%s\\n\ } fclose(rf) ; fclose(wf) ; } 19: 规定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:将字符串中的前导*号全部删除,中间和尾部的*号不删除。 例如,字符串中的内容为:*******A*BC*DEF*G****,删除后,字符串中的内容应当是:A*BC*DEF*G****。在编写函数时,不得使用C语言提供的字符串函数。 注意: 部分源程序在文件PROG1.C中。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include { char s[81]; printf(\"Enter a string:\\n\");gets(s); fun( s ); printf(\"The string after deleted:\\n\");puts(s); NONO(); } NONO() {/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *in, *out ; int i ; char s[81] ; in = fopen(\"c:\\\est\\\\in.dat\ out = fopen(\"c:\\\est\\\\out.dat\ for(i = 0 ; i < 10 ; i++) { fscanf(in, \"%s\ fun(s) ; fprintf(out, \"%s\\n\ } fclose(in) ; fclose(out) ; } 20: 编写函数fun,函数的功能是: 从s所指的字符串中删除给定的字符。同一字母的大、小写按不同字符处理。 若程序执行时输入字符串为: turbo c and borland c++ 从键盘上输入字符:n, 则输出后变为: turbo c ad borlad c++ 如果输入的字符在字符串中不存在, 则字符串照原样输出。 注意: 部分源程序在文件PROG1.C中。 请勿改动主函数main和其它函数中的任何内容, 仅在函数fun的花括号中填入你编写的若干语句。 #include int fun(char s[],char c) { } main() { static char str[]=\"turbo c and borland c++\"; char ch; printf(\"原始字符串:%s\\n\ printf(\"输入一个字符:\"); scanf(\"%c\ fun(str,ch); printf(\"str[]=%s\\n\ NONO(); } NONO() { /* 请在此函数内打开文件,输入测试数据,调用 fun 函数, 输出数据,关闭文件。 */ FILE *rf, *wf ; char s[81], ch, w ; int len ; rf = fopen(\"c:\\\est\\\\in.dat\ wf = fopen(\"c:\\\est\\\\out.dat\ fgets(s, 80, rf) ; fscanf(rf, \"%c\ len = strlen(s) - 1 ; w = s[len] ; if(w == '\\n' || w == 0x1a) s[len] = 0 ; fun(s, ch) ; fprintf(wf, \"%s\ fclose(rf) ; fclose(wf) ; } 21: 请编写一个函数 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 void fun(char *tt, int pp[]) { } main( ) { char aa[1000] ; int bb[26], k, n ; printf( \"\\nPlease enter a char string:\" ) ; scanf(\"%s\ fun(aa, bb ) ; for ( k = 0 ; k < 26 ; k++ ) printf (\"%d \ printf( \"\\n\" ) ; NONO ( ) ; } NONO ( ) {/* 本函数用于打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/ char aa[1000] ; int bb[26], k, n, i ; FILE *rf, *wf ; rf = fopen(\"c:\\\est\\\\in.dat\ wf = fopen(\"c:\\\est\\\\out.dat\ for(i = 0 ; i < 10 ; i++) { fscanf(rf, \"%s\ fun(aa, bb) ; for ( k = 0 ; k < 26 ; k++ ) fprintf (wf, \"%d \ fprintf(wf, \"\\n\" ) ; } fclose(rf) ; fclose(wf) ; } 22: N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。请编写函数fun,它的功能是:求出平均分,由函数值返回。 例如,若学生的成绩是:85,76,69,85,91,72,64,87, 则平均分应当是:78.625。 注意: 部分源程序在文件PROG1.C中。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include 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 p->next=0; return h; } outlist( STREC *h) { STREC *p; p=h->next; printf(\"head\"); do { printf(\"->%4.1f\ while(p!=0); printf(\"\\n\\n\"); } main() { double s[N]={85,76,69,85,91,72,64,87},ave; STREC *h; h=creat( s ); outlist(h); ave=fun( h ); printf(\"ave= %6.3f\\n\ NONO(); } NONO() {/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 FILE *in, *out ; int i,j ; double s[N],ave; STREC *h ; in = fopen(\"c:\\\est\\\\in.dat\ */ out = fopen(\"c:\\\est\\\\out.dat\ for(i = 0 ; i < 10 ; i++) { for(j=0 ; j < N; j++) fscanf(in, \"%lf,\ h=creat( s ); ave=fun( h ); fprintf(out, \"%6.3lf\\n\ } fclose(in) ; fclose(out) ; } 23: 某学生的记录由学号、8门课程成绩和平均分组成,学号和8门课程的成绩已在主函数中给出。请编写函数fun,它的功能是:求出该学生的平均分放在记录的ave成员中。 例如,学生的成绩是:85.5,76,69.5,85,91,72,64.5,87.5,他的平均分应当是:78.875。 注意: 部分源程序在文件PROG1.C中。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun部位中填入你编写的若干语句。 #include void fun(STREC *a) { } main() { STREC s={\"GA005\ int i; fun( &s ); printf(\"The %s's student data:\\n\ for(i=0;i {/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *out ; int i,j ; STREC s[10] = { {\"GA005\ {\"GA001\ {\"GA002\ {\"GA003\ {\"GA004\ {\"GA006\ {\"GA007\ {\"GA008\ {\"GA009\ {\"GA010\}; out = fopen(\"c:\\\est\\\\out.dat\ for(i = 0 ; i < 10 ; i++) { fun(&s[i]) ; fprintf(out, \"%7.3f\\n\ } fclose(out) ; } 24: 请编一个函数void fun(int tt[M][N ], int pp[N]),tt指向一个M行N列的二维数组,求出二维数组每列中最小元素,并依次放入pp所指一维数组中。二维数组中的数已在主函数中赋予。 注意: 部分源程序存在文件PROG1.C中。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include void fun ( int tt[M][N], int pp[N] ) { } main( ) { int t [ M ][ N ]={{22,45, 56,30}, {19,33, 45,38}, {20,22, 66,40}}; int p [ N ], i, j, k; printf ( \"The original data is : \\n\" ); for( i=0; i printf( \"\\nThe result is:\\n\" ); for ( k = 0; k < N; k++ ) printf ( \" %4d \ printf(\"\\n\"); NONO( ); } NONO( ) {/* 请在此函数内打开文件,输入测试数据,调用 fun 函数, 输出数据,关闭文件。 */ int i, j, k, m, t[M][N], p[N] ; FILE *rf, *wf ; rf = fopen(\"c:\\\est\\\\in.dat\ wf = fopen(\"c:\\\est\\\\out.dat\ for(m = 0 ; m < 10 ; m++) { for( i=0; i fun ( t, p ) ; for ( k = 0; k < N; k++ ) fprintf (wf, \" %4d \ fprintf(wf, \"\\n\") ; } fclose(rf) ; fclose(wf) ; } 25: 函数fun的功能是: 将s所指字符串中除了下标为偶数、同时ASCII值也为偶数的字符外,其余的全都删除;串中剩余字符所形成的一个新串放在t所指的数组中。 例如,若s所指字符串中的内容为:\"ABCDEFG123456\",其中字符A的ASCII码值为奇数,因此应当删除;其中字符B的ASCII码值为偶数,但在数组中的下标为奇数,因此也应当删除;而字符2的ASCII码值为偶数,所在数组中的下标也为偶数,因此不应当删除,其它依此类推。最后t所指的数组中的内容应是:\"246\"。 注意: 部分源程序存在文件PROG1.C中。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include void fun(char *s, char t[]) { } main() { char s[100], t[100]; printf(\"\\nPlease enter string S:\"); scanf(\"%s\ fun(s, t); printf(\"\\nThe result is: %s\\n\ NONO(); } NONO ( ) {/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ char s[100], t[100] ; FILE *rf, *wf ; int i ; rf = fopen(\"c:\\\est\\\\in.dat\ wf = fopen(\"c:\\\est\\\\out.dat\ for(i = 0 ; i < 10 ; i++) { fscanf(rf, \"%s\ fun(s, t) ; fprintf(wf, \"%s\\n\ } fclose(rf) ; fclose(wf) ; } 26: 请编写函数fun, 对长度为7个字符的字符串, 除首、尾字符外,将其余5个字符按ASCII码降序排列。 例如,原来的字符串为 CEAedca,排序后输出为 CedcEAa 。 注意: 部分源程序在文件PROG1.C中。 请勿改动主函数main和其它函数中的任何内容, 仅在函数fun的花括号中填入你编写的若干语句。 #include int fun(char *s,int num) { } main() { char s[10]; printf(\"输入7个字符的字符串:\"); gets(s); fun(s,7); printf(\"\\n%s\ NONO(); } NONO() { /* 请在此函数内打开文件,输入测试数据,调用 fun 函数, 输出数据,关闭文件。 */ char s[10] ; FILE *rf, *wf ; int i = 0 ; rf = fopen(\"c:\\\est\\\\in.dat\ wf = fopen(\"c:\\\est\\\\out.dat\ while(i < 10) { fgets(s,10,rf) ; s[7] = 0 ; fun(s,7); fprintf(wf, \"%s\\n\ i++ ; } fclose(rf) ; fclose(wf) ; } 27: 请编写一个函数fun, 它的功能是: 计算并输出给定整数n的所有因子(不包括1与n自身)之和。规定n的值不大于1000。 例如,在主函数中从键盘给n输入的值为856, 则输出为:sum=763。 注意:部分源?帠在文件PROG1.C中。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include } main() { int n,sum; printf(\"Input n: \"); scanf(\"%d\ sum=fun(n); printf(\"sum=%d\\n\ NONO(); } NONO() {/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */ FILE *rf, *wf ; int i, n, sum ; rf = fopen(\"c:\\\est\\\\in.dat\ wf = fopen(\"c:\\\est\\\\out.dat\ for(i = 0 ; i < 10 ; i++) { fscanf(rf, \"%d\ sum = fun(n) ; fprintf(wf, \"%d=%d\\n\ } fclose(rf) ; fclose(wf) ; } 28: 请编写函数fun, 它的功能是:计算并输出n(包括n)以内能被5或9整除的所有自然数的倒数之和。 例如,在主函数中从键盘给n输入20后, 输出为: s=0.583333。 注意: 要求n的值不大于100。 部分源程序在文件PROG1.C中。 请勿改动主函数main和其他函数中的任何内容, 仅在函数fun的花括号中填入你编写的若干语句。 #include { int n; double s; printf(\"\\nInput n: \"); scanf(\"%d\ s=fun(n); printf(\"\\n\\ns=%f\\n\ NONO(); } NONO() {/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */ FILE *rf, *wf ; int n, i ; double s ; rf = fopen(\"c:\\\est\\\\in.dat\ wf = fopen(\"c:\\\est\\\\out.dat\ for(i = 0 ; i < 10 ; i++) { fscanf(rf, \"%d\ s = fun(n) ; fprintf(wf, \"%lf\\n\ } fclose(rf) ; fclose(wf) ; } 29: 请编写一个函数fun,它的功能是:求出1到m之间(含m)能被7或11整除的所有整数放在数组a中,通过n返回这些数的个数。例如,若传送给m的值为50,则程序 输出: 7 11 14 21 22 28 33 35 42 44 49 注意: 部分源程序存在文件PROG1.C中。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include void fun ( int m, int *a , int *n ) { } main( ) { int aa[M], n, k; fun ( 50, aa, &n ); for ( k = 0; k < n; k++ ) if((k+1)%20==0) printf(\"\\n\"); else printf( \"%4d\ printf(\"\\n\") ; NONO( ); } NONO ( ) {/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *fp, *wf ; int i, n, j, k, aa[M], sum ; fp = fopen(\"c:\\\est\\\\in.dat\ wf = fopen(\"c:\\\est\\\\out.dat\ for(i = 0 ; i < 10 ; i++) { fscanf(fp, \"%d,\ fun(j, aa, &n) ; sum = 0 ; for(k = 0 ; k < n ; k++) sum+=aa[k] ; fprintf(wf, \"%d\\n\ } fclose(fp) ; fclose(wf) ; } 30: 请编写函数fun, 其功能是: 计算并输出 例如, 在主函数中从键盘给n输入20后,输出为:s=534.188884。 注意: 要求n的值大于1但不大于100。 部分源程序在文件PROG1.C中。 请勿改动主函数main和其他函数中的任何内容, 仅在函数fun的花括号中填入你编写的若干语句。 #include { } main() { int n; double s; printf(\"\\n\\nInput n: \"); scanf(\"%d\ s=fun(n); printf(\"\\n\\ns=%f\\n\\n\ NONO(); } NONO() {/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */ FILE *rf, *wf ; int n, i ; double s ; rf = fopen(\"c:\\\est\\\\in.dat\ wf = fopen(\"c:\\\est\\\\out.dat\ for(i = 0 ; i < 10 ; i++) { fscanf(rf, \"%d\ s = fun(n) ; fprintf(wf, \"%lf\\n\ } fclose(rf) ; fclose(wf) ; } 31: 程序定义了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 int fun ( int a[][N], int n ) { } main ( ) { int a[N][N], n, i, j; printf(\"***** The array *****\\n\"); for ( i =0; i do n = rand()%10 ; while ( n >=3 ); printf(\"n = %4d\\n\ fun ( a, n ); printf (\"***** THE RESULT *****\\n\"); for ( i =0; i rf = fopen(\"c:\\\est\\\\in.dat\ wf = fopen(\"c:\\\est\\\\out.dat\ for(i = 0 ; i < 5 ; i++) for(j = 0 ; j < 5 ; j++) fscanf(rf, \"%d \ fscanf(rf, \"%d\ fun(a, n) ; for ( i = 0; i < 5; i++ ) { */ for ( j = 0; j < 5; j++ ) fprintf(wf, \"%4d\ fprintf(wf, \"\\n\"); } fclose(rf) ; fclose(wf) ; } 32: 请编写函数fun, 其功能是: 计算并输出下列多项式的值: 1 1 1 S = 1 + ── + ─── + … + ───── 1*2 1*2*3 1*2*3*…50 例如, 在主函数中从键盘给n输入50后,输出为:s=1.718282。 注意: 要求n的值大于1但不大于100。 部分源程序在文件PROG1.C中。 请勿改动主函数main和其他函数中的任何内容, 仅在函数fun的花括号中填入你编写的若干语句。 #include { int n; double s; printf(\"\\nInput n: \"); scanf(\"%d\ s=fun(n); printf(\"\\n\\ns=%f\\n\\n\ NONO(); } NONO() {/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */ FILE *rf, *wf ; int n, i ; double s ; rf = fopen(\"c:\\\est\\\\in.dat\ wf = fopen(\"c:\\\est\\\\out.dat\ for(i = 0 ; i < 10 ; i++) { fscanf(rf, \"%d\ s = fun(n) ; fprintf(wf, \"%lf\\n\ } fclose(rf) ; fclose(wf) ; } 33: 学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把低于平均分的学生数据放在b所指的数组中,低于平均分的学生人数通过形参n传回,平均分通过函数值返回。 注意: 部分源程序在文件PROG1.C中。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include double fun( STREC *a, STREC *b, int *n ) { } main() { STREC s[N]={{\"GA05\ {\"GA01\ STREC h[N],t;FILE *out ; int i,j,n; double ave; ave=fun( s,h,&n ); printf(\"The %d student data which is lower than %7.3f:\\n\ for(i=0;i out = fopen(\"c:\\\est\\\\out.dat\ fprintf(out, \"%d\\n%7.3f\\n\ for(i=0;i 34: 编写函数fun,它的功能是计算: s作为函数值返回。 在C语言中可调用log ( n )函数求ln (n)。log函数的引用说明是: double log(double x)。 例如,若m的值为: 20,fun函数值为: 6.506583。 注意: 部分源程序在文件PROG1.C中。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include printf(\"%f\\n\ NONO(); } NONO ( ) {/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *fp, *wf ; int i, n ; double s ; fp = fopen(\"c:\\\est\\\\in.dat\ wf = fopen(\"c:\\\est\\\\out.dat\ for(i = 0 ; i < 10 ; i++) { fscanf(fp, \"%d\ s = fun(n) ; fprintf(wf, \"%f\\n\ } fclose(fp) ; fclose(wf) ; } 35: 函数fun的功能是:将s所指字符串中下标为偶数的字符删除,串中剩余字符形成的新串放在t所指数组中。 例如,当s所指字符串中的内容为:\"ABCDEFGHIJK\", 在t所指数组中的内容应是:\"BDFHJ\"。 注意: 部分源程序存在文件PROG1.C中。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include char s[100], t[100]; printf(\"\\nPlease enter string S:\"); scanf(\"%s\ fun(s, t); printf(\"\\nThe result is: %s\\n\ NONO(); } NONO ( ) {/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ char s[100], t[100] ; FILE *rf, *wf ; int i ; rf = fopen(\"c:\\\est\\\\in.dat\ wf = fopen(\"c:\\\est\\\\out.dat\ for(i = 0 ; i < 10 ; i++) { fscanf(rf, \"%s\ fun(s, t) ; fprintf(wf, \"%s\\n\ } fclose(rf) ; fclose(wf) ; } 36: 请编写一个函数fun,它的功能是:将ss所指字符串中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。 例如, 若输入\"abc4EFg\",则应输出\"aBc4EFg\"。 注意: 部分源程序存在文件PROG1.C中。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include printf( \"\\nPlease enter an string within 80 characters:\\n\" ); gets( tt ); printf( \"\\n\\nAfter changing, the string\\n \\\"%s\\\"\ fun( tt ); printf( \"\\nbecomes\\n \\\"%s\\\"\\n\ NONO ( ); } NONO ( ) {/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *fp, *wf ; char tt[81] ; int i ; fp = fopen(\"c:\\\est\\\\in.dat\ wf = fopen(\"c:\\\est\\\\out.dat\ for(i = 0 ; i < 10 ; i++) { fscanf(fp, \"%s\ fun( tt ) ; fprintf(wf, \"%s\\n\ } fclose(fp) ; fclose(wf) ; } 37: 请编写一个函数fun,它的功能是:计算n门课程的平均分,计算结果作为函数值返回。 例如:若有5门课程的成绩是:90.5, 72, 80, 61.5, 55 则函数的值为:71.80。 注意: 部分源程序存在文件PROG1.C中。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include float fun ( float *a , int n ) { } main() { float score[30]={90.5, 72, 80, 61.5, 55}, aver; aver = fun( score, 5 ); printf( \"\\nAverage score is: %5.2f\\n\ NONO ( ); } NONO ( ) {/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *fp, *wf ; int i, j ; float aver, score[5] ; fp = fopen(\"c:\\\est\\\\in.dat\ wf = fopen(\"c:\\\est\\\\out.dat\ for(i = 0 ; i < 10 ; i++) { for(j = 0 ; j < 5 ; j++) fscanf(fp,\"%f,\ aver = fun(score, 5) ; fprintf(wf, \"%5.2f\\n\ } fclose(fp) ; fclose(wf) ; } 38: 函数fun的功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的千位和十位上, b数的十位和个位数依次放在c数的百位和个位上。 例如,当a=45,b=12时,调用该函数后,c=4152。 注意: 部分源程序存在文件PROG1.C中。数据文件IN.DAT中的数据不得修改。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include void fun(int a, int b, long *c) { } main() { int a,b; long c; printf(\"Input a, b:\"); scanf(\"%d,%d\ fun(a, b, &c); printf(\"The result is: %d\\n\ NONO(); } NONO ( ) {/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *rf, *wf ; int i, a,b ; long c ; rf = fopen(\"c:\\\est\\\\in.dat\ wf = fopen(\"c:\\\est\\\\out.dat\ for(i = 0 ; i < 10 ; i++) { fscanf(rf, \"%d,%d\ fun(a, b, &c) ; fprintf(wf, \"a=%d,b=%d,c=%ld\\n\ } fclose(rf) ; fclose(wf) ; } 39: 编写一个函数,该函数可以统计一个长度为2的字符串在另一个字符串中出现的次数。例如,假定输入的字符串为: asd asasdfg asd as zx67 asd mklo,子字符串为:as,则应输出6。 注意:部分源程序在文件PROG1.C中。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include int fun(char *str,char *substr) { } main() { char str[81],substr[3]; int n; printf(\"输入主字符串: \"); gets(str); printf(\"输入子字符串: \"); gets(substr); puts(str); puts(substr); n=fun(str,substr); printf(\"n=%d\\n\ NONO(); } NONO() { /* 请在此函数内打开文件,输入测试数据,调用 fun 函数, 输出数据,关闭文件。 */ char str[81],substr[3], ch; int n,len, i = 0; FILE *rf, *wf ; rf = fopen(\"c:\\\est\\\\in.dat\ wf = fopen(\"c:\\\est\\\\out.dat\ while(i < 5) { fgets(str, 80, rf) ; fgets(substr, 10, rf) ; len = strlen(substr) - 1 ; ch = substr[len] ; if(ch == '\\n' || ch == 0x1a) substr[len] = 0 ; n=fun(str,substr); fprintf(wf, \"%d\\n\ i++ ; } fclose(rf) ; fclose(wf) ; } 40: 请编写函数fun,它的功能是:求出ss所指字符串中指定字符的个数,并返回此值。 例如,若输入字符串: 123412132,输入字符为: 1,则输出:3。 注意: 部分源程序在文件PROG1.C中。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include int fun(char *ss, char c) { } main() { char a[M], ch; printf(\"\\nPlease enter a string:\"); gets(a); printf(\"\\nPlease enter a char:\"); ch = getchar(); printf(\"\\nThe number of the char is: %d\\n\ NONO ( ); } NONO ( ) {/* 本函数用于打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/ int i ; FILE *rf, *wf ; char a[M], b[M], ch ; rf = fopen(\"c:\\\est\\\\in.dat\ wf = fopen(\"c:\\\est\\\\out.dat\ for(i = 0 ; i < 10 ; i++) { fscanf(rf, \"%s\ fscanf(rf, \"%s\ ch = *b ; fprintf(wf, \"%c=%d\\n\ } fclose(rf) ; fclose(wf) ; } 41: 请编一个函数fun(char *s),函数的功能是把s所指字符串中的内容逆置。 例如:字符串中原有的字符串为:abcdefg, 则调用该函数后, 串中的内容为:gfedcba。 注意: 部分源程序存在文件PROG1.C中。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include printf ( \"Enter a string : \" ); gets ( a ); printf ( \"The original string is : \" ); puts( a ); fun ( a ); printf(\"\\n\"); printf ( \"The string after modified : \"); puts ( a ); NONO( ); } NONO( ) {/* 请在此函数内打开文件,输入测试数据,调用 fun 函数, 输出数据,关闭文件。 */ int i ; char a[N] ; FILE *rf, *wf ; rf = fopen(\"c:\\\est\\\\in.dat\ wf = fopen(\"c:\\\est\\\\out.dat\ for(i = 0 ; i < 10 ; i++) { fscanf(rf, \"%s\ fun(a) ; fprintf(wf, \"%s\\n\ } fclose(rf) ; fclose(wf) ; } 42: 请编写函数fun, 其功能是: 计算并输出给定数组(长度为9)中每相邻两个元素之平均值的平方根之和。 例如, 给定数组中的9个元素依次为12.0、34.0、4.0、23.0、34.0、45.0、18.0、3.0、11.0, 输出应为: s=35.951014。 注意:部分源程序在文件PROG1.C中。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include { double s,a[9]={12.0,34.0,4.0,23.0,34.0,45.0,18.0,3.0,11.0}; int i; printf(\"\\nThe original data is :\\n\"); for(i=0;i<9;i++)printf(\"%6.1f\ s=fun(a); printf(\"s=%f\\n\\n\ NONO(); } NONO() {/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */ FILE *rf, *wf ; int i, j ; double s, a[9] ; rf = fopen(\"c:\\\est\\\\in.dat\ wf = fopen(\"c:\\\est\\\\out.dat\ for(i = 0 ; i < 5 ; i++) { for(j = 0 ; j < 9 ; j++) fscanf(rf, \"%lf\ s = fun(a) ; fprintf(wf, \"%lf\\n\ } fclose(rf) ; fclose(wf) ; } 43: 请编写函数fun, 其功能是: 计算并输出给定10个数的方差: 例如,给定的10个数为95.0、89.0、76.0、65.0、88.0、72.0、85.0、81.0、 90.0、56.0,输出为s=11.730729。 注意:部分源程序在文件PROG1.C中。 请勿改动主函数main和其他函数中的任何内容, 仅在函数fun的花括号中填入你编写的若干语句。 #include #include { double s, x[10]={95.0,89.0,76.0,65.0,88.0,72.0,85.0,81.0,90.0,56.0}; int i; printf(\"\\nThe original data is :\\n\"); for(i=0;i<10;i++)printf(\"%6.1f\ s=fun(x); printf(\"s=%f\\n\\n\ NONO(); } NONO() {/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */ FILE *rf, *wf ; int i, j ; double s, x[10] ; rf = fopen(\"c:\\\est\\\\in.dat\ wf = fopen(\"c:\\\est\\\\out.dat\ for(i = 0 ; i < 5 ; i++) { for(j = 0 ; j < 10 ; j++) fscanf(rf, \"%lf\ s = fun(x) ; fprintf(wf, \"%lf\\n\ } fclose(rf) ; fclose(wf) ; } 44: 函数fun的功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的十位和千位上, b数的十位和个位数依次放在c数的百位和个位上。 例如,当a=45,b=12时,调用该函数后,c=5142。 注意: 部分源程序存在文件PROG1.C中。数据文件IN.DAT中的数据不得修改。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include void fun(int a, int b, long *c) { } main() { int a,b; long c; printf(\"Input a, b:\"); scanf(\"%d,%d\ fun(a, b, &c); printf(\"The result is: %ld\\n\ NONO(); } NONO ( ) {/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *rf, *wf ; int i, a,b ; long c ; rf = fopen(\"c:\\\est\\\\in.dat\ wf = fopen(\"c:\\\est\\\\out.dat\ for(i = 0 ; i < 10 ; i++) { fscanf(rf, \"%d,%d\ fun(a, b, &c) ; fprintf(wf, \"a=%d,b=%d,c=%ld\\n\ } fclose(rf) ; fclose(wf) ; } 45: 假定输入的字符串中只包含字母和*号。请编写函数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; printf(\"Enter a string:\\n\");gets(s); t=f=s; while(*t)t++; t--; while(*t=='*')t--; while(*f=='*')f++; fun( s , f,t ); printf(\"The string after deleted:\\n\");puts(s); NONO(); } NONO() {/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 FILE *in, *out ; int i ; char s[81], *t, *f ; in = fopen(\"c:\\\est\\\\in.dat\ out = fopen(\"c:\\\est\\\\out.dat\ for(i = 0 ; i < 10 ; i++) { fscanf(in, \"%s\ t=f=s; while(*t)t++; t--; while(*t=='*')t--; while(*f=='*')f++; fun(s, f, t); fprintf(out, \"%s\\n\ } fclose(in) ; fclose(out) ; } */ 46: 函数fun的功能是: 将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是: 将a数的十位和个位数依次放在c数的个位和百位上, b数的十位和个位数依次放在c数的十位和千位上。 例如, 当a=45, b=12时, 调用该函数后, c=2514。 注意: 部分源程序存在文件PROG1.C中。数据文件IN.DAT中的数据不得修改。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include void fun(int a, int b, long *c) { } main() { int a,b; long c; printf(\"Input a, b:\"); scanf(\"%d,%d\ fun(a, b, &c); printf(\"The result is: %ld\\n\ NONO(); } NONO ( ) {/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 FILE *rf, *wf ; int i, a,b ; long c ; rf = fopen(\"c:\\\est\\\\in.dat\ wf = fopen(\"c:\\\est\\\\out.dat\ for(i = 0 ; i < 10 ; i++) { fscanf(rf, \"%d,%d\ fun(a, b, &c) ; fprintf(wf, \"a=%d,b=%d,c=%ld\\n\ } fclose(rf) ; fclose(wf) ; */ } 47: 请编写函数fun, 其功能是: 计算并输出3到n之间(含3和n)所有素数的平方根之和。 例如, 在主函数中从键盘给n输入100后,输出为: sum=148.874270。 注意: 要求n的值大于2但不大于100。 部分源程序在文件PROG1.C中。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include { int n; double sum; printf(\"\\n\\nInput n: \"); scanf(\"%d\ sum=fun(n); printf(\"\\n\\nsum=%f\\n\\n\ NONO(); } NONO() {/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */ FILE *rf, *wf ; int n, i ; double s ; rf = fopen(\"c:\\\est\\\\in.dat\ wf = fopen(\"c:\\\est\\\\out.dat\ for(i = 0 ; i < 10 ; i++) { fscanf(rf, \"%d\ s = fun(n) ; fprintf(wf, \"%lf\\n\ } fclose(rf) ; fclose(wf) ; } 48: 编写函数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 main() /* 主函数 */ { int n; n=1000; printf(\"n = %d, f = %d\\n\ NONO(); } NONO ( ) {/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 FILE *fp, *wf ; int i, n, s ; fp = fopen(\"c:\\\est\\\\in.dat\ wf = fopen(\"c:\\\est\\\\out.dat\ for(i = 0 ; i < 10 ; i++) { fscanf(fp, \"%d\ s = fun(n) ; fprintf(wf, \"%d\\n\ } fclose(fp) ; fclose(wf) ; */ } 49: 编写函数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 float fun(int n) { } main() { int n; float s; printf(\"\\nPlease enter N:\"); scanf(\"%d\ s = fun(n); printf(\"the result is: %f\\n\ NONO(); } NONO ( ) {/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *fp, *wf ; int i, n ; float s; fp = fopen(\"c:\\\est\\\\in.dat\ wf = fopen(\"c:\\\est\\\\out.dat\ for(i = 0 ; i < 10 ; i++) { fscanf(fp, \"%d\ s = fun(n) ; fprintf(wf, \"%f\\n\ } fclose(fp) ; fclose(wf) ; } 50: 例如, 在主函数中从键盘给x输入0.21后,输出为:s=1.100000。 注意: 部分源程序在文件PROG1.C中。 请勿改动主函数main和其他函数中的任何内容, 仅在函数fun的花括号中填入你编写的若干语句。 #include { } main() { double x,s; printf(\"Input x: \"); scanf(\"%lf\ s=fun(x); printf(\"s=%f\\n\ NONO(); } NONO() {/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 FILE *rf, *wf ; int i ; double s, x ; rf = fopen(\"c:\\\est\\\\in.dat\ wf = fopen(\"c:\\\est\\\\out.dat\ for(i = 0 ; i < 10 ; i++) { fscanf(rf, \"%lf\ s = fun(x) ; fprintf(wf, \"%lf\\n\ } fclose(rf) ; fclose(wf) ; } */ 因篇幅问题不能全部显示,请点此查看更多更全内容