您的当前位置:首页正文

其他数学问题

来源:个人技术集锦


*******************************************************************************

19题

程序PROGI.C的功能是:在三位整数(100至999)中寻找符合下面条件的整数,并依次从小到大存入数组b【】中。条件如下:某数既是完全平方数,又是两位数字相同,例如144、676等。

请考生编制函数 int jsValue(int bb[])实现此功能,满足该条件的整数的个数通过说所编制的函数返回。

int jsValue(int bb[])

{

int n, k, a, b, c, cnt = 0 ;

for(k = 10 ;; k++) {

n = k * k ;

if(n < 100) continue ;

if(n > 999) break ;

a = n / 100 ;

b = n % 100 / 10 ;

c = n % 10 ;

if((a-b)*(a-c)*(b-c) == 0) {

printf(\"N=%d=%d*%d\\n\

bb[cnt++] = n ;

}

}

return cnt ;

}

*******************************************************************************

20题

已知数据样文IN1.DAT中存有200个4位数,并已调用函数readDat()把这些数存入数组a中,请编制一函数jsVal(),其功能是:依次从数组a中取出一个四位数,如果该四位数大于该四位数以前的连续五个数且该数是奇数,且该数必须能被7整除(该四位数以前不满5个数,则不统计),则统计出满足此条件的个数cnt并把这些四位数按从大

到小的顺序存入数组b中,最后调用写函数writeDat()把结果cnt以及数组b中符合条件的四位数输出到OUT.DAT文件中。

void jsVal()

{

int i, j, ab ;

for(i = 5 ; i < MAX ; i++) {

if((a[i] % 2) && (a[i] % 7==0) && a[i] > a[i-1] && a[i] > a[i-2] && a[i] >a[i-3] && a[i] >a[i-4] && a[i] >a[i-5]) b[cnt++] = a[i] ;

}

for(i = 0 ; i < cnt - 1 ; i++)

for(j = i + 1 ; j < cnt ; j++)

if(b[i] < b[j]) {

ab = b[j] ;

b[j] = b[i] ;

b[i] = ab ;

}

}

*******************************************************************************

54题

已知数据样文IN.DAT中存有200个四位数,并已调用函数readDat()把这些数存入数组a中,请编制一函数jsVal(),其功能是:依次从数组a中取出一个四位数,如果该四位数大于该四位数以前的连续五个数且该数是偶数(该四位数以前不满5个数,则不统计),则统计出满足此条件的个数cnt并把这些四位数按从大到小的顺序存入数组b中,最后调用写函数writeDat()把结果cnt以及数组b中符合条件的四位数输出到OUT.DAT文件中。

void jsVal()

{

int i, j, ab ;

for(i = 5 ; i < MAX ; i++) {

if((a[i] % 2==0) && a[i] > a[i-1] && a[i] > a[i-2] && a[i] >a[i-3] && a[i] >a[i-4]

&& a[i] >a[i-5]) b[cnt++] = a[i] ;

}

for(i = 0 ; i < cnt - 1 ; i++)

for(j = i + 1 ; j < cnt ; j++)

if(b[i] < b[j]) {

ab = b[j] ;

b[j] = b[i] ;

b[i] = ab ;

}

}

*******************************************************************************

56题

已知数据样文IN.DAT中存有200个四位数,并已调用函数readDat()把这些数存入数组a中,请编制一函数jsVal(),其功能是:依次从数组a中取出一个四位数,如果

该四位数连续小于该四位数以后的连续五个数且该数是偶数(该四位数以后不满5个数,则不统计),则统计出满足此条件的个数cnt,并把这些四位数存入数组b中而后对数组b进行升序排列,最后调用写函数writeDat()把结果cnt以及数组b中符合条件的四位数输出到OUT.DAT文件中。

void jsVal()

{

/* 判断一个四位数连续小于该四位数以后的五个数且该数是偶数 */

/* if((a[i] % 2==0) && a[i] < a[i+1] && a[i] < a[i+2] && a[i] /* 该提示仅供解题参考,考生也可用其他方法解题 */

int i, j, ab ;

for(i = 0 ; i < MAX - 5 ; i++) {

if((a[i] % 2==0) && a[i] < a[i+1] && a[i] < a[i+2] && a[i] }

for(i = 0 ; i < cnt - 1 ; i++)

for(j = i + 1 ; j < cnt ; j++)

if(b[i] > b[j]) {

ab = b[j] ;

b[j] = b[i] ;

b[i] = ab ;

}

}

*******************************************************************************

97题

已知数据样文IN.DAT中存有200个四位数,并已调用函数readDat()把这些数存入数组a中,请编制一函数jsVal(),其功能是:依次从数组a中取出一个四位数,如果该四位数连续大于四位数以后的五个数且该数是奇数(该四位数以后不满五个数,则不统计),则统计出满足此条件的个数cnt并把这些四位数按从小到大的顺序存入数组b中,最后调用写函数writeDat()把结果cnt以及数组b中符合条件的四位数输出到OUT.DAT文件中。

void jsVal()

{

int i, j, ab ;

for(i = 0 ; i < MAX - 5 ; i++) {

if((a[i] % 2) && a[i] > a[i+1] && a[i] > a[i+2] && a[i] >a[i+3] && a[i] >a[i+4] && a[i] >a[i+5]) b[cnt++] = a[i] ;

}

for(i = 0 ; i < cnt - 1 ; i++)

for(j = i + 1 ; j < cnt ; j++)

if(b[i] > b[j]) {

ab = b[j] ;

b[j] = b[i] ;

b[i] = ab ;

}

}

*******************************************************************************

22题

编写函数jsValue,它的功能是:求Fibonacci数列中大于t的最小的一个数,结果由函数返回。其中Fibonacci数列F(n)的定义为:

F(0)=0,F(1)=1

F(n)=F(n-1)+F(n-2)

最后调用函数writeDat()读取10个数据t,分别得出结果且把结果输出到文件out.dat中。

int jsValue(int t)

{

int f0 = 0, f1 = 1, f2 = 1 ;

while(f2 < t) {

f0 = f1 ;

f1 = f2 ;

f2 = f0 + f1 ;

}

return f2 ;

}

*******************************************************************************

88题

某级数的前两项A1=1,A2=1,以后各项具有如下关系:

An=An-2+2An-1

程序PROGI.C的功能是:要求依次对于整数M=100,1000和10000求出对应的n值,使其满足:Sn=M,这里

Sn=A1+A2+...+An,

并依次把n值存入数组单元b[0],b[1]和b[2]中,请考生编制jsValue()函数来实现此功能, 最后调用函数writeDat()把数组b[]中的值输出到out.dat文件中。

void jsValue()

{

int a1 = 1, a2 = 1, s= 2, n = 1, m = 10, i, t ;

for(i = 0 ; i < 3 ; i++) {

m *= 10 ;

while(s < m) {

t = a1 + 2 * a2 ;

s = s + t ;

n = n + 1 ;

a1 = a2 ;

a2 = t ;

}

printf(\"m=%d,n=%d\\n\

b[i] = n ;

}

}

*******************************************************************************

29题

函数ReadDat()实现从文件IN.DAT中读取1000个十进制整数到数组xx中;请编制函数Compute()分别计算出xx中数值为偶数的个数even,所有数值为奇数的平均值ave1,偶数的平均值ave2以及所有偶数的方差totfc的值,最后调用函数WriteDat()把结果输出到OUT.DAT文件中。

设N为偶数的个数,xx[i]为偶数,ave2为偶数的平均值。

原始数据文件存放的格式是:每行存放10个数,并用逗号隔开。(每个数均大于0且小于等于2000)

void Compute(void)

{

int i, odd=0 ;

for(i = 0 ; i < MAX ; i++)

if(xx[i] % 2) {odd++ ; ave1 += xx[i] ;}

else {even++ ; ave2 += xx[i] ; }

ave1 /= 1.0 * odd ; ave2 /= 1.0 * even ;

for(i = 0 ; i < MAX ; i++) {

if(xx[i] % 2 == 0) totfc += (xx[i] - ave2) * (xx[i] - ave2) ;

}

totfc /= 1.0 * even ;

}

*******************************************************************************

62题

将文件IN.DAT中的200个整数读至数组xx中。请编制JsValue()函数,要求:求出数组xx中的数值为奇数的个数cnt1和数值为偶数的个数cnt2以及数组xx下标为奇数的元素值的算术平均值pj(保留2位小数)。

void jsValue()

{

int i ; cnt1=0; cnt2=0;pj=0;

for(i = 0 ; i < N ; i++) {

if(xx[i] % 2) cnt1++ ; else cnt2++ ;

if(i % 2) pj += xx[i] ;

}

pj /= 100.0 ;

}

*******************************************************************************

24题

已知在文件IN.DAT中存有N个实数(N<200),函数ReadDat()是读取这N个实数并存入存入xx中,请编制函数CalValue(),其功能要求:1.求出这N个实数的平均值aver;2.分别求出这N个实数的整数部分值之和sumint以及其小数部分值之和sundec,最后调用函数WriteDat()把所求的结果输出到文件OUT.DAT中。

void CalValue(void)

{

int i ;

long num ;

for(i = 0 ; i < N ; i++) {

num = (long)xx[i] ;

sumint += num ;

sumdec += (xx[i] - num) ;

aver += xx[i] ;

}

aver /= N ;

}

*******************************************************************************

36题

程序PROGI.C的功能是:寻找并输出11至999之间的数m,它满足m,m2和m3均为回文数。所谓回文数是指其各位数字左右对称的整数,例如121,676,94249等。满足上述条件的数如m=11,m2=121,m3=1331皆为回文数。请考生编制函数int jsValue(long m)实现此功能,如果是回文数,则函数返回1,反之则返回0。最后把结果输出到文件out.dat中。

int jsValue(long n)

{

long i, m ;

i = n ;

m = 0 ;

while(i) {

m = m * 10 + i % 10 ;

i /= 10 ;

}

return m == n ;

}

*******************************************************************************

47题

请编写函数countValue(int n),它的功能是:求n以内(不包括n)同时能被3与7整除的所有自然数之和的平方根s,s作为函数返回值,最后结果s输出到文件out.dat中。

例如若n为1000时,函数值应为:s=153.909064。

double countValue(int n)

{

int i ;

double sum = 0.0 ;

for(i = 7 ; i < n ; i++)

if((i % 3) == 0 && (i % 7) == 0) sum += 1.0 * i ;

sum = sqrt(sum) ;

return sum ;

}

*******************************************************************************

63题

函数ReadDat()实现从文件IN.DAT中读取1000个十进制整数到数组xx中;请编制函数Compute()分别计算出xx中数值为奇数的个数odd,xx中所有数值为奇数的平均值ave1,并求出xx中偶数的平均值ave2以及所有奇数的方差totfc的值,最后调用函数WriteDat()把结果输入到OUT.DAT文件中。

设N为奇数的个数,xx[i]为奇数,ave1为奇数的平均值。

原始数据文件存放的格式是:每行存放10个数,并用逗号隔开。(每个数均大于0且小于等于2000)

void Compute(void)

{

int i ;

for(i = 0 ; i < MAX ; i++)

if(xx[i] % 2) {odd++ ; ave1 += xx[i] ;}

else {even++ ; ave2 += xx[i] ; }

ave1 /= 1.0 * odd ; ave2 /= 1.0 * even ;

for(i = 0 ; i < MAX ; i++) {

if(xx[i] % 2) totfc += (xx[i] - ave1) * (xx[i] - ave1) ;

}

totfc /= 1.0 * odd ;

}

*******************************************************************************

86题

函数ReadDat()实现从文件IN.DAT中读取1000个十进制整数到数组xx中;请编制函数Compute()分别计算出xx中数值为奇数的个数odd,偶数的个数even,平均值aver以及方差totfc的值,最后调用函数WriteDat()把结果输入到OUT.DAT文件中。

原始数据文件存放的格式是:每行存放10个数,并用逗号隔开。(每个数均大于0且小于等于2000)

void Compute(void)

{

int i ;

for(i = 0 ; i < MAX ; i++) {

if(xx[i] % 2) odd++ ; else even++ ;

aver += xx[i] ;

}

aver /= 1000.0 ;

for(i = 0 ; i < MAX ; i++)

totfc += (xx[i] - aver) * (xx[i] - aver) ;

totfc /= 1000.0 ;

}

因篇幅问题不能全部显示,请点此查看更多更全内容