C语言题目举例
- 格式:doc
- 大小:420.00 KB
- 文档页数:73
1、(27—1)已知数据文件IN.DAT中存有300个四位数,并已调用读函数ReadDat()把这些数存入数组a中,请编制一函数jsvalue(),其功能是:求出千位数上的数减百位数减十位数上的数减个位数上的数大于零的个数cnt,再求出所有满足此条件的四位数平均值pjz1,以及不满足此条件的四位数平均值pjz2,最后调用写函数writeDat()把结果输出到OUT.DAT文件。
例如:9123,9-1-2-3>0,则该数满足条件计算平均值pjz1,且个数cnt=cnt+1。
9812,9-8-1-2<0,则该数不满足条件计算平均值pjz2.注意:部分源程序已给出。
程序中已定义数组:a[300],已定义变量:cnt请勿改动主函数main()、读函数ReadDat()和写函数writeDat()的内容。
---------------------void jsValue() /*标准答案*/{int I,thou,hun,ten,data,j;for(I=0;I<300;I++){thou=a[I]/1000; hun=a[I]%1000/100;ten=a[I]%100/10; data=a[I]%10;if (thou-hun-ten-data>0){b[cnt]=a[I];cnt++;}}for(I=0;I<cnt-1;I++)for(j=I+1;j<cnt;j++)if(b[I]>b[j]){data=b[I]; b[I]=b[j]; b[j]=data;}}原程序如下:#include <stdio.h>int a[300],b[300],cnt=0;double pjz1=0.0,pjz2=0.0;jsValue(){}main(){int i;readDat();jsValue();writeDat();for (i=0;i<cnt;i++) printf("b[%d]=%d\n",i,b[i]);system("pause");}readDat(){FILE *fp;int i;fp=fopen("in.dat","r");for (i=0;i<300;i++) fscanf(fp, "%d,",&a[i]);fclose(fp);}writeDat(){FILE *fp;int i;fp=fopen("out.dat","w");fprintf(fp, "%d\n",cnt);for (i=0;i<cnt;i++) fprintf(fp, "%d\n",b[i]);fclose(fp);}2、下列程序的功能是:找出所有100以内(含100)满足I,I+4,I+10都是素数的整数I(I+10也在100以内)的个数cnt以及这些I之和sum。
请编写函数countvalue()实现程序要求,最后调用函数writeDat()把结果cnt和sum输出到文件out.dat中。
注意:部分源程序已给出。
请勿改动主函数main()和函数writeDAT()的内容。
---------类型:素数。
void countValue() /*标准答案*/{int I,count=0,xx[30];int j,k,m;cnt=0;sum=0;for(I=1;I<=90;I++)if(isPrime(I)) {xx[count]=I;count++;}for(I=0;I<count;I++)if (isPrime(xx[I]+4)&&isPrime(xx[I]+10)){cnt++;sum+=xx[I];}}原程序如下:#include<stdio.h>int cnt, sum ;int isPrime(int number){ int i, tag = 1 ;if(number==1) return 0;for(i = 2 ; tag && i<= number / 2 ; i++)if(number % i == 0) tag = 0 ;return tag ;}void countvalue(){}void main(){cnt = sum = 0 ;countvalue() ;printf("满足条件的整数的个数=%d\n", cnt) ;printf("满足条件的整数的和值=%d\n", sum) ;writeDAT() ;system("pause");}writeDAT(){ FILE *fp ;fp = fopen("out.out", "w") ;fprintf(fp, "%d\n%d\n", cnt, sum) ;fclose(fp) ;}3、已知在文件in.dat中存有若干个(个数<200)四位数字的正整数,函数readdat()读取这若干个正整数并存入数组xx中。
请编制函数calvalue(),其功能要求:1、求出这文件中共有多少个正整数totnum;2、求出这些数中的各位数字之和是奇数的数的个数totcnt,以及满足此条件的这些数的算术平均值totpjz,最后调用函数writedat()把所求的结果输出到文件out.dat中。
注意:部分源程序已给出。
请勿改动主函数main()、读数据函数readdat()和输出数据函数writedat()的内容。
----------------------------void CalValue(void) /*标准答案*/{int I,thou,hun,ten,data;for(I=0;I<MAXNUM;I++){if (!xx[I]) break;if (xx[I]>0) totNum++;thou=xx[I]/1000;hun=xx[I]%1000/100;ten=xx[I]%100/10;data=xx[I]%10;if ((thou+hun+ten+data)%2){totCnt++;totPjz+=xx[I];} }totPjz/=totCnt;}原程序如下:#include <stdio.h>#include <conio.h>#define MAXNUM 200int xx[MAXNUM] ;int totNum = 0 ; /* 文件IN.DAT中共有多少个正整数*/ int totCnt = 0 ; /* 符合条件的正整数的个数*/ double totPjz = 0.0 ; /* 平均值*/int ReadDat(void) ;void WriteDat(void) ;void Calvalue(void){}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", totNum) ; printf("符合条件的正整数的个数=%d个\n", totCnt) ; printf("平均值=%.2lf\n", totPjz) ;WriteDat() ;system("pause");}int ReadDat(void){FILE *fp ;int i = 0 ;if((fp = fopen("in.dat", "r")) == NULL) return 1 ; while(!feof(fp)) {fscanf(fp, "%d,", &xx[i++]) ;}fclose(fp) ;return 0 ;}void WriteDat(void){FILE *fp ;fp = fopen("OUT.DAT", "w") ;fprintf(fp, "%d\n%d\n%.2lf\n", totNum, totCnt, totPjz) ;fclose(fp) ;}4、(21-5)下列程序的功能是:利用发下所示的简单迭代方法求方程:cos(x)-x=0的一个实根。
xn+1=cos(xn)迭代步骤如下:(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的一个实根,作为函数值返回。
请编写函数countvalue()实现程序的要求,最后调用函数WRITEDAT()把结果输出到文件OUT17.DAT中。
注意:部分源程序已给出。
请勿改动主函数main()和输出数据函数writeDAT()的内容。
-----------------------------float countValue() /*标准答案*/{float x0,x1=0.0;while(1){x0=x1;x1=cos(x0);if(fabs(x0-x1)<1e-6) break;}return x1;}原程序如下:#include <conio.h>#include <math.h>#include <stdio.h>float countvalue(){}main(){clrscr();printf("实根=%f\n",countvalue());printf("%f\n",cos(countvalue())-countvalue());writeDat();}writeDat(){FILE *wf;wf=fopen("OUT17.DAT","w");fprintf(wf,"%f\n",countvalue());fclose(wf);}5、(a41-6)已知数据文件in.dat中存有300个四位数,并已调用读函数ReadDat()把这些数存入数组a中,请编制一函数jsValue(),其功能是:求出千位数上的数加百位数上的数等于十位数上的数加个位数上的数的个数cnt,再把所有满足此条件的四位数依次存入数组b中,然后对数组b的四位数按从大到小的顺序进行排序,最后调用写函数writeDat()把结果输出到out.dat文件。