s=countValue(n); fprintf(wf,\ }
fclose(fp); fclose(wf); }
********************************************************************* 题目23 (实数运算题)
已知在文件in.dat中存有N个(个数<200)实数,函数readdat()读取这N个实数并存入数组xx中。请编制函数calvalue(),其功能要求: 1、求出这N个实数的平均值aver;
2、分别求出这N个实数的整数部分之和sumint以及小数部分之和sumdec,最后调用函数writedat()把所求的结果输出到文件out.dat中。 注意:部分源程序已给出。
请勿改动主函数main()、读数据函数readdat()和输出数据函数writedat()的内容。 #include
float xx[MAXNUM] ;
int N= 0 ; /* 文件IN.DAT中共有多少个实数 */ double aver=0.0;/*平均值*/
double sumint=0.0;/*整数部分之和*/ double sumdec=0.0;/*小数部分之和*/
int ReadDat(void) ; void WriteDat(void) ;
void CalValue(void) {int i;
for (i=0;i {sumint+=(long)xx[i]; sumdec+=xx[i]-(long)xx[i]; aver+=xx[i]; } aver/=N; } void main() { int i ; clrscr() ; for(i = 0 ; i < MAXNUM ; i++) xx[i] = 0 ; if(ReadDat()) { printf(\数据文件IN.DAT不能打开!\\007\\n\ return ; } Calvalue() ; printf(\文件IN.DAT中共有实数=%d个\\n\ printf(\平均值=%.2lf\\n\ printf(\整数部分之和=%.2lf\\n\ printf(\小数部分之和=%.2lf\\n\ WriteDat() ; system(\} int ReadDat(void) { FILE *fp ; int i = 0 ; if((fp = fopen(\ while(!feof(fp)) { fscanf(fp, \ } fclose(fp) ; return 0 ; } void WriteDat(void) { FILE *fp ; fp = fopen(\T\ fprintf(fp, \ fclose(fp) ; } **************************************************************************** 题目24(完全平方数问题) 下列程序prog1.c的功能是:在三位整数(100至999)中寻找符合条件的整数并依次从小到大存入数组中;它既是完全平方数,又是两位数字相同,例如144、676等。 请编制函数实现此功能,满足该条件的整数的个数通过所编制的函数返回。 最后调用函数writeDat()把结果输出到文件out.dat中。 请勿改动主函数main()和写函数writeDat()的内容。 #include int jsValue(int bb[]) {int i,j,k=0; int hun,ten,data; for(i=10;i<32;i++) {j=I*I; hum=j/100; ten=j0/10; data=j; if(hum==ten||hum==data||ten==data) bb[k++]=j;} return k; } main() { int b[20],num; num=jsValue(b); writeDat(num,b); } writeDat(int num,int b[]) { FILE *out; int i; out=fopen(\printf(\ fprintf(out,\ for(i=0;i ***************************************************************** ★题目25 (回文数问题) 下列程序的功能是:寻找并输出11至999之间的数m,它满足m,m2和m3均为回文数。所谓回文数是指其各位数字左右对称的整数,例如121,676,94249等。满足上述条件的数如m=11,m2=121,m3=1331皆为回文数。请编制函数int svalue(long m)实现此功能,如果是回文数,则函数返回1,反之则返回0。最后把结果输出到文件out.dat中。 注意:部分源程序已给出。 请勿改动主函数main()的内容。 #include int jsValue(long n) {int i,strl,half; char xy[20]; ltoa(n,xy,10); /*注意这里不能使用itoa()函数,因为n是long 型的*/ strl=strlen(xy); half=strl/2; for(i=0;i if(xy[i]!=xy[--strl]) break; if(i>=half) return 1; else return 0; } main() {long m; FILE *out; out=fopen(\ for(m=11;m<1000;m++) { if(jsValue(m)&&jsValue(m*m)&&jsValue(m*m*m)) { printf(\ fprintf(out,\ } } fclose(out); system(\} 或者下面的解法: int jsValue(long n) {long int s=0,k; k=n; while(k) { s=s*10+k; k/=10; } if(s==n) return 1; if(s!=n) return 0; } 输出结果为: m= 11,m*m= 121,m*m*m= 1331 m= 101,m*m= 10201,m*m*m= 1030301 m= 111,m*m= 12321,m*m*m= 1367631 ************************************************************************* ★☆题目26(整数统计运算题) 已知在文件IN.DAT中存有若干个(个数<200)四位数字的正整数,函数ReadDat()读取这若干个正整数并存入数组xx中。请编制函数CalValue(),其功能要求:1、求出这文件中共有多少个正整数totNum;2、求这些数右移1位后,产生的新数是偶数的数的个数totCnt,以及满足此条件的这些数(右移前的值)的算术平均值totPjz,最后调用函数writeDat()把所求的结果输出到文件OUT.DAT中。 部分源程序存在文件prog1.c中。 请勿改动主函数main()、读函数ReadDat()和写函数writeDat()的内容。 #include
相关推荐: