}
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) ; }
in.dat文件内容为:
0.0005 0.00005 0.000005 0.0001 0.00001 0.000001 0.0004 0.00004 0.000004 0.0003
分析:本题没有办法利用特殊做法把out.dat文件数据写出,只有通过编写程序来实现生成out.dat文件。也就是说,这题只有通过编写程序才能做出。 现将编写的程序如下所示(可查看实验手册上的实验三函数(5)): double fun ( double eps) { int i=0;
double pi=0,a=1; while(a>=eps)
{ pi+=a; i++; a=a*i/(2*i+1); } return pi*2; }
这样编译运行之后生成out.dat文件,且其文件内容为:
3.140578 3.141480 3.141580 3.141358 3.141566 3.141590 3.140578 3.141480 3.141580 3.140578
第7题【重要】
m个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平均分的人数作为函数值返回,将低于平均分的分数放在below所指的数组中。例如,当score数组中的数据为:10、20、30、40、50、60、70、80、90时,函数返回的人数应该是4,below中的数据应该为:10、20、30、40。 源程序:
#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) ; }
in.dat文件内容为:
111 121 10 12 76 88 56 57 54 32
980 876 675 896 101 301 401 431 451 777 910 806 605 496 901 101 101 231 151 444 120 576 275 596 401 201 211 441 401 321 180 176 175 196 201 201 201 231 451 888 280 276 275 296 201 201 287 231 451 555 380 376 375 396 301 301 301 331 351 999 480 476 475 496 201 201 101 131 151 777 580 176 475 296 301 601 801 131 151 111 98 76 75 96 10 30 40 43 41 77
out.dat文件(标准答案测试数据) 内容为:
10 12 56 57 54 32 101 301 401 431 451 101 101 231 151 444 120 275 201 211 321
180 176 175 196 201 201 201 231 280 276 275 296 201 201 287 231 380 376 375 396 301 301 301 331 351 201 201 101 131 151 176 296 301 131 151 111 10 30 40 43 41
分析:从上面的红色程序中 n = fun(score, 10, below) ;
for(j = 0 ; j < n ; j++) fprintf(wf, \
可以看出输出的格式是\%d \,在d之后有一个空格,注意看VC编译环境下的源程序,也就是说输出的时候每一行中低于平均分的分数之间必须有一个空格。
第8题【8、9、10、19、45、54、57、61】
假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:除了字符串前导的*号之外,将字符串中其它的*号全部删除。在编写函数时,不得使用C语言中提供的字符串函数。例如,字符串的内容为:****A*BC*DEF*G*******,删除后,字符串中的内容应当为:****ABCDEFG。 源程序:
#include
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) ; }
in.dat文件内容为:
****A*BC*DEF*G********
**********LKJFHG****KHJ***SDFGH****KJKJ*J*K*K*J***** ******OGH*GKLJ*LKJ*LKJ*KLKJHG*DQ*LJ*KJ*****
********HJJKD***JHHKJH*DGH*TDFHG*TYRYTRIU*JGJ********** *****HKHJLKH***GUHHJ*GFHJ**GJHK***GJKGK****KHKLHKJHKJ*** ******JHGDFXGGJH****JFHGFK**HKH**KJHKL***KLH*** ************UYKJDFARTQYW*****HFGUJ**KJHKJ**KJHK***
********JKHILUHIUGCLKLKJGH*******HJGHG**KJH**JY*JH*M*HJH**** *****JKH***GHJK*JHGG*GGJK*GJKG*GKJ*GH*GK*JK***** ****KJKHLKJHSQDQDQ*DQDQ*DQ*DQLKDKJQ*POUOIUO*LKJL*****
out.dat文件(标准答案测试数据) 内容为:
****ABCDEFG
**********LKJFHGKHJSDFGHKJKJJKKJ ******OGHGKLJLKJLKJKLKJHGDQLJKJ ********HJJKDJHHKJHDGHTDFHGTYRYTRIUJGJ *****HKHJLKHGUHHJGFHJGJHKGJKGKKHKLHKJHKJ ******JHGDFXGGJHJFHGFKHKHKJHKLKLH ************UYKJDFARTQYWHFGUJKJHKJKJHK ********JKHILUHIUGCLKLKJGHHJGHGKJHJYJHMHJH *****JKHGHJKJHGGGGJKGJKGGKJGHGKJK
****KJKHLKJHSQDQDQDQDQDQDQLKDKJQPOUOIUOLKJL
相关推荐: