☆题目1(迭代方法求方程题)
下列程序prog1.c的功能是:利用以下所示的简单迭代方法求方程: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中。
float countValue()
{ float x0,x1;
x1=0.0;
do{ x0=x1;
x1=cos(x0);
}while(fabs(x0-x1)>=0.000001);
return x1;
}
注:本题在无忧或捷成模拟盘中,需定义double x0,x1;才能通过,据实际上机抽到该题的考生反映,实际上机需按上面解法的定义方能通过,特此说明,供参考。
****************************************************************************
★题目2(平方根问题)
请编写函数countValue(),它的功能是:求n以内(不包括n)同时能被3与7整除的所有自然数之和的平方根s,并作为函数值返回,最后结果s输出到文件out.dat中。
例如若n为1000时,函数值应为:s=153.909064。
double countValue(int n)
{ int i;
double s=0.0;
for(i=1;i if(i!==0) s+=i; return sqrt(s); } 实例如下: #include #include double countValue(int n) { int i; double s=0.0; for(i=1;i if(i!==0) s+=i; return sqrt(s); } s=s+i s+=i; void main() { /* 请编写函数countValue(),它的功能是: 求n以内(不包括n)同时能被3与7整除的所有自然数之和的平方根s, 并作为函数值返回,最后结果s输出到文件out.dat中。 例如若n为1000时,函数值应为:s=153.909064。 int sum,i,n; double s; n=1000; sum=0; for(i=7;i if(i%3==0&&i%7==0) sum=sum+i; s=sqrt(sum); printf("%f\n",s); */中华考试网 double s; s=countValue(1000); printf("%f\n",s); } ********************************************************************* 题目3 (实数运算题) 已知在文件in.dat中存有N个(个数<200)实数,函数readdat()读取这N个实数并存入数组xx中。请编制函数calvalue(),其功能要求: 1、求出这N个实数的平均值aver; 2、分别求出这N个实数的整数部分之和sumint以及小数部分之和sumdec,最后调用函数writedat()把所求的结果输出到文件out.dat中。 注意:部分源程序已给出。 void CalValue(void) {int i; for (i=0;i {sumint+=(long)xx[i]; sumdec+=xx[i]-(long)xx[i]; aver+=xx[i]; } aver/=N; } **************************************************************************** 题目4(完全平方数问题) 下列程序prog1.c的功能是:在三位整数(100至999)中寻找符合条件的整数并依次从小到大存入数组中;它既是完全平方数,又是两位数字相同,例如144、676等。 请编制函数实现此功能,满足该条件的整数的个数通过所编制的函数返回。 int jsValue(int bb[]) {int i,j,k=0;转自:考试网 - [Examw.Com] 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; } ***************************************************************** ★题目5 (回文数问题) 下列程序的功能是:寻找并输出11至999之间的数m,它满足m,m2和m3均为回文数。所谓回文数是指其各位数字左右对称的整数,例如121,676,94249等。满足上述条件的数如m=11,m2=121,m3=1331皆为回文数。请编制函数int svalue(long m)实现此功能,如果是回文数,则函数返回1,反之则返回0。最后把结果输出到文件out.dat中。 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; } 或者下面的解法: 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