以下函数按每行 8 个输出数组中的数据
void fun(int *w,int n)
{ int i;
for(i=0;i<n;i++)
{ ____________
printf("%d ",w[i]);
}
printf("\n");
}
下划线出应填入的语句是
A)if(i/8==0) printf("\n");
B)if(i/8==0) continue;
C)if(i%8==0) printf("\n");
D)if(i%8==0) continue;
编写函数jsValue,它的功能是:求Hofstadter数列中的第m项H(m)(m<1000),结果由函数返回。其中数列H(n)的定义为:
H(1)=H(2)=1
H(n)=H(n-H(n-1))+H(n-H(n-2))(n>2)
最后调用函数writeDat()读取50个数据m,分别得出结果且把结果输出到文件out.dat中。
例如:当t=997时,函数值为605。
部分源程序已给出。
请勿改动主函数main()和写函数writeDat()的内容。
include<stdio. h>
int jsValue(int m)
{
main ( )
{
int m;
m=300;
printf ("m=%d, k-%d\n", m, jsValue (m));
writeDat ( );
writeDat ( )
{
FILE *in, *out;
int i,m,s;
in= fopen ( "in. dar" , "r" );
ut=f open ( "out. dar" , "w" );
for (i=0; i<50; i++) {
fscanf (in, "%d", &m);
s=jsValue (m);
printf( "%d\n", s );
fprintf (out, "%d\n" , s );
}
fclose (in);
fclose (out);
请补充完整程序,使得程序能实现以下功能:
从文件IN.dat中读取200个整数至数组number中,求出最大数max及最大数的个数cnt和数组number中能被3整除或能被7整除的算术平均值ave(保留2位小数)。把结果max、 cnt、ave输出到OUT. dat文件中。
注意:部分程序、读数据函数read_ dat (int number[200])及输出格式已给出。
include <conio. h>
include <stdio. h>
define N 200
void read_ dat(int number[N])
{ int i, j;
FILE *fp;
fp = fopen("IN. dat", "r");
for (i=0; i<20; i++)
{ for (j=0; j<10; j++)
{ fscanf(fp, "%d,", &number[i*10+j]);
printf("%d ", number[i*10+j]);
}
printf ("\n");
}
fclose (fp);
}
void main ()
{ int cnt, number[N], max;
float ave;
FILE *fw;
int i, k; '
long j = 0;
fw = fopen("OUT.dat", "w");
read_ dat (number);
/ ************************************************ /
/ ************************************************ /
printf("\n\nmax=%d, cnt=%d, ave=%6.2f\n", max, cnt, ave);
fprintf(fw, "%d\n%d\n%6.2f\n", max, cnt, ave);
fclose (fw);
}
请编制程序,要求:将文件IN92.DAT中的200个整数读入数组xx中,求出数组xx中最大数max及最大数的个数cnt和数组xx中值能被3整除或能被7整除的数的算术平均值pj(保留两位小数),结果max,cnt,pj输出到out92.dar中。
部分程序、读函数read_dat(int xx[200])及输出格式已给出。
试题程序:
include<conio.h>
include<stdio.h>
define N 200
void read_dat(int xx[N])
{
int i,j;
FILE *fp;
fp=fopen("IN92.DAT","r");
for(i=0;i<20;i++)
{
for(j=0;j<10;j++)
{
fscanf(fp,"%d,",&xx[i*10+j]);
printf("%d",xx[i*10+j]);
}
printf("\n");
}
fclose(fp);
}
void main()
{
int i,k,cnt,xx[N],max;
float pj;
FILE *fw;
long j=0;
clrscr();
fw=fopen("out92.dat","w");
read_dat(xx);
printf("\n\nmax=%d,cnt=%d,pj=%6.2f/n",max,cnt,pj);
fprintf(fw,"%d\n%d\n%6.2f\n",max,cnt,pj);
fclose(fw);
}
已知在文件IN42.DAT中存有N个实数(N<200),函数ReadDat()读取这N个实数并存入数组xx中。请编制程序CalValue(),其功能要求:
(1)求出这N个实数的平均值aver。
(2)分别求出这N个实数的整数部分值之和sumint及其小数部分之和sumdec,最后调用函数WriteDat()把所求的结果输出到文件OUT42.DAT中。
注意;部分源程序已给出。
请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。
试题程序:
include<stdio.h>
include<conio.h>
define MAXNUM 200
float xx[MAXNUM];
int N=0;
double aver=0.0;
double sumint=0.0;
double sumdec=0.0;
int ReadDat( );
void WriteDat( );
void CalValue
{
}
void main( )
{
clrscr( );
if(ReadDat( ))
{
printf ("数据文件IN42.DAT不能打开! \007\n");
return;
}
CalValue ( );
printf ("文件IN42.DAT中共有实数%d个\n", N);
printf ("平均值=%.21f\n", aver);
printf ("整数部分=%.21f\n", sumint);
printf ("小数部分之和=%.21f\n", sumdec);
WriteDat( );
}
int ReadDat()
{
FILE *fp;
int j;
if((fp=fopen("in42.dat","r"))==NULL)
return 1;
while(!feof(fp))
{
fscanf (fp, "%f", &xx [N] );
if (xx[N] >0.001) N++;
}
fclose(fp);
return 0;
}
void WriteDat()
{
FILE *fp;
fp=fopen("OUT42.DAT","w");
fprintf(fP,"%d\n%.21f\n%.21f\n%.21f\n",N,aver,sumint,sumdec);
fclose(fp);
}
/*-【程序设计】-题目:用函数求一个N阶方阵右下三角元素的和(包括副 对角线上的元素)。 -*/#include #include #define N 3void wwjt(); int sum(int aN) /*Program*/ /* End */main() int aNN,i,j; for(i=0;iN;i+) for(j=0;jN;j+) aij=rand()%(10)+10; printf(%3d,aij); printf(n); printf(=n); printf(sum=%5dn,sum(a); wwjt();void wwjt() FILE *IN,*OUT; int m,n; int i33; int o; IN=fopen(in.dat,r); if(IN=NULL) printf(Read FILE Error); OUT=fopen(out.dat,w); if(OUT=NULL) printf(Write FILE Error); for(m=0;m3;m+) for(n=0;n3;n+) fscanf(IN,%d,&imn); o=sum(i); fprintf(OUT,%dn,o); fclose(IN); fclose(OUT);【参考代码】 int i,j,k=0; for(i=0;iN;i+) for(j=N-1-i;jN;j+) k=k+aij; return(k);/*-【程序设计】-功能:删除所有值为y的元素。数组元素中的值和y的值由 主函数通过键盘输入。-*/#include #include#include#define M 20void wwjt(); void fun(int bb,int *n,int y) /*Program*/ /* End */main() int aaM,n,y,k; printf(nPlease enter n:);scanf(%d,&n); printf(nEnter %d positive number:n,n); for(k=0;kn;k+) scanf(%d,&aak); printf(The original data is:n); for(k=0;kn;k+) printf(%5d,aak); printf(nEnter a number to deletede:);scanf(%d,&y); fun(aa,&n,y); printf(The data after deleted %d:n,y); for(k=0;kn;k+) printf(%4d,aak); printf(n); wwjt();void wwjt() FILE *IN,*OUT; int n; int i10; int o; IN=fopen(in.dat,r); if(IN=NULL) printf(Read FILE Error); OUT=fopen(out.dat,w); if(OUT=NULL) printf(Write FILE Error); for(n=0;n10;n+) fscanf(IN,%d,&in); fun(i,&n,3); for(o=0;on;o+) fprintf(OUT,%dn,io); fclose(IN); fclose(OUT);答案: int i,j; for(i=0;i*n;) if(bbi=y) for(j=i;j*n;j+) bbj=bbj+1; *n=*n-1; else i+; /*-【程序填空】-功能:删除字符串中的指定字符,字符串和要删除的字符均由键盘 输入。-*/#include main() char str80,ch; int i,k=0; /*SPACE*/ gets(【?】); ch=getchar(); /*SPACE*/ for(i=0;【?】;i+) if(stri!=ch) /*SPACE*/ 【?】; k+; /*SPACE*/ 【?】; puts(str); 答案(1)str (2)stri!=0 (3) strk=stri (4)strk=0/*-【程序填空】-功能:对数组 A 中的N( 0 N100)个整数从小到大进行连续编 号,输出各个元素的编号。要求不能改变数组中元素的 顺序,且相同的整数要具有相同的编号。例如:数组是: A=(5,3,4,7,3,5,6) 则输出为:(3,1,2,5,1,3,4)-*/#include main() int i,j,k,n,m=1,r=1,a2100=0 ; printf(Please enter n:) ; scanf(%d,&n) ; for(i=0 ; in ; i+) printf(a%d= ,i) ; scanf(%d,&a0i) ; /*SPACE*/ while(【?】) for(i=0 ; in ; i+) if(a1i=0) /*SPACE*/ 【?】 ; k=i ; for(j=i ; jn ; j+) /*SPACE*/ if(a1j=0 & a0ja0k) 【?】 ; a1k=r+ ; m+ ; for(j=0 ; jn ; j+) if(a1j=0 & a0j=a0k) a1j=a1k ; m+ ; for(i=0 ; in ; i+) printf(a%d=%d, %dn,i,a0i,a1i) ;答案: 1). mm 2). break 3). k=j/*- 【程序改错】-功能:编写函数求2!+4!+6!+8!+10+12!+14!。-*/#include long sum(int n) /*FOUND*/ int i,j long t,s=0; /*FOUND*/ for(i=2;i=n;i+) t=1; for(j=1;j=i;j+) t=t*j; s=s+t; /*FOUND*/ return(t);main() printf(this sum=%ldn,sum(14);答案: 1). int i , j ; 2). printf(score %d., j + 1 ); 3). for(i=0;iN;i+)/*-【程序设计】-功能:求出菲波那契数列的前一项与后一项之比的极限的 近似值。例如:当误差为0.0001时,函数值为0.618056。-*/#include #include math.hvoid wwjt(); float fun() /*Program*/ /* End */、 main() printf(y=%fn,fun(); wwjt();void wwjt() FILE *IN,*OUT; float fOUT; IN=fopen(19.IN,r); if(IN=NULL) printf(Please Verify The Currernt Dir.it May Be Changed); OUT=fopen(19.out,w); if(OUT=NULL) printf(Please Verify The Current Dir. it May Be Changed); fOUT=fun(); fprintf(OUT,%fn,fOUT); fclose(IN)、; fclose(OUT);答案floatf1=1,f2=1,f3;floatr1=2,r2;dor2=r1;r1=f1/f2;f3=f1+f2;f1=f2;f2=f3;while(fabs(r1-r2)1e-4);returnr1;/*-【程序设计】-功能:编写函数fun计算下列分段函数的值: x2+x+6 x0且x-3 f(x)= x2-5x+6 0 x10且x2及x3 x2-x-1 其它-*/ /* End */main() float x,f; printf(input x=); scanf(%f,&x); f=fun(x); printf(x=%f,f(x)=%fn,x,f); ww
请补充main 函数,该函数的功能是:把文本文件B中的内容追加到文本文件A的内容之后。
例如,文佃的内容为“I’m ten.”,文件A的内容为“I’ m a student!”,追加之后文件A的内容为“I’m a student !I’m ten.”
注意:部分源程序给出如下。
请勿改动主函数main 和其他函数中的任何内容,仅在函数main 的横线上填入所编写的若干表达式或语句。
试题程序:
include<stdio, h>
include<conio. h>
define N 80
main()
{
FILE *fp, * fp1, *fp2;
int i;
char c[N] ,t, ch;
clrscr ();
if ((fp=fopen ("A. dat ", "r") ) == NULL)
{
printf ("file A cannot be opened\n");
exit (0);
}
printf("\n A contents are : \n\n");
for (i=0; (ch=fgetc (fp)) !=EOF; i++)
{
C [i]=ch;
putchar (c [i]);
fclose (fp);
if((fp=fopen ("B. dat", "r") )==NULL)
{
printf ("file B cannot be opened\n");
exit (0);
}
printf("\n\n\nB contents are : \n\n");
for (i=0; (ch=fgetc (fp)) !=EOF; i++)
{
c [i] =ch;
putchar (c [i]);
}
fclose (fp);
if ( (fp1=fopen ("A.dat" ,"a"))【 】(fp2
=fopen ("B. dat", "r") ) )
{
while ( (ch=fgetc (fp2)) !=EOF)
【 】;
}
else
{
printf("Can not open A B !\n");
}
fclose (fp2);
fclose (fp1);
printf ("\n***new A contents***\n\n");
if ( ( fp=fopen ("A. dar", "r") )==NULL)
{
printf ("file A cannot be opened\n");
exit (0);
}
for (i=0; (ch=fgetc (fp)) !=EOF;i++)
{
c [i] =ch;
putchar (c [i] );
}
【 】;
}
下列程序的功能是:将大于整数m且紧靠m的k个被3除余1的素数存入数组xx。请编写函数num(int m,imt k,int xx[])实现程序的要求,最后调用函数readwriteDat()把结果输出到文件out.dat中。
例如:若输入17,5,则应输出:19,31,37,43,61。
部分源程序已给出。
请勿改动主函数main()和输出数据函数readwriteDat()的内容。
include <conio.h>
include <stdio.h>
void readwriteDat();
void num(int m, int k, int xx[])
{
}
main ( )
{
int m,n,xx[1000];
clrscr();
printf("\nPlease enter two integers:");
scanf(" %d%d" ,&m,&n);
num(m,n,xx);
for(m=0;m<n;m++)
printf(" %d" ,xx[m]);
printf("\n" );
readwriteDat();
}
viod readwriteDat()
{
int m,n, xx[1000], i;
FILE *rf,*wf;
rf=fopen("in.dat" ," r" );
wf=fopen(" out.dat" ," w" );
for(i=0;i<10;i++){
fscanf(rf," %d%d" ,&m,&n);
num(m,n,xx);
for(m=0;m<n;m++)fprintf(wf," %d" ,xx[m]
fprintf(wf,"\n" );
}
fclose(rf);
fclose(wf);
}
编写函数jsValue(),它的功能是求Fibonacci数列中大于t的最小的一个数,结果由函数返回,其中Fibonacci数列F(n)的定义为:
F(0)=0, F(1)=1
F(n)=F(n-1)+F(n-2)
最后调用函数writeDat(),把结果输出到文件OUT10.DAT中。
例如:当t=1000时,函数值为1597。
注意:部分源程序已给出。
请勿改动主函数main()和写函数WriteDat()的内容。
试题程序:
include<stdio.h>
int jsValue(int t)
{
}
main()
{
int n;
n=1000;
printf("n=%d, f=%d\n", n,jsValue(n));
writeDat();
}
writeDat()
{
FILE *in, *out;
int n,s;
ut = fopen("OUT10.DAT", "w");
s = jsValue(1000); printf("%d",s);
fprintf(out, "%d\n", s);
fclose(out);
}
请编制程序,要求:将文件IN94.DAT中的200个整数读入数组xx中,求出数组xx中奇数的个数cnt1和偶数的个数cnt2,以及数组xx下标为奇数的元素值的算术平均值pj(保留两位小数),结果cnt1,cnt2,pj输出到OUT94.DAT中。
部分程序、读函数read_dat(int xx[200))及输出格式已给出。
试题程序:
include<conio:h>
include<stdio.h>
define N 200
void read_dar (int xx [N] )
{
int i,j;
FILE *fp;
fp=fopen("IN94.DAT","r");
for(i=0;i<20;i++)
{
for(j=0;j<10;j++)
{
fscanf(fp,"%d,,&xx[i*10+j]);
printf("%d",xx[i*10+j]);
}
printf("\n");
}
fclose(fp);
}
void main()
{
int cnt1,cnt2,xx[N];
float pj;
FILE *fw;
clrscr();
fw=fopen("out94.dat","w");
read_dat(xx);
printf("\n\ncnt1=%d, cnt2=%d,pj=%6.2f\n",cnt1,cnt2,pj);
fprintf(fw,"%d\n%d\n%6.2f\n",cnt1,cnt2,pj);
fclose(fw);
}
下列程序的功能是:求出ss字符串中指定字符c的个数,并返回此值。请编写函数int num(*char ss,char c)以实现程序要求,最后调用函数readwriteDat(),把结果输出到文件out.dat中(注:大小写字母有区别)。例如:若输入字符串“ss="123412132" , c=’1’”,则输出“3”。部分源程序已给出。请勿改动主函数main()和输出数据函数writeDat()的内容。#include <conio.h>#include <stdio.h>#define M 81void readwriteDAT(); int num(char *ss,char c){ } main(){ char a[M],ch; clrscr(); printf("\nPlease enter a string:" );gets(a); printf("\nPlease enter a char;" );ch=getchar(); printf("\nThe number of the char is:%d\n" ,num(a,ch)); readwriteDAT();}viod readwriteDAT(){ int i; FILE *rf,*wf; char a[M],b[M],ch; rf=fopen("in.dat" ,"r" ); wf=fopen(" out.dat" ,"w" ); for(i=0;i<10;i++){ fscanf(rf," %s",a); fscanf(rf," %s" ,b); ch=*b; fprintf(wf," %c=%d\n:" ,ch,num(a,ch));} fclose(rf); fclose(wf);}