中国石油大学C语言程序网络作业题(含大数相加) 下载本文

选做 5.29 爱因斯坦的数学题

爱因斯坦出了一道这样的数学题:有一条长阶梯,若每步跨2阶,则最后剩一阶;若每步跨3阶,则最后剩2阶;若每步跨5阶,则最后剩4阶;若每步跨7阶,最后才正好一阶不剩。请问,这条阶梯共有多少阶? 输出语句格式为:printf(\ #include #include int main() {

int number;

for(number=1; number<=1000; number++)

if(number%2==1&&number%3==2&&number%5==4&&number%7==0) {

printf(\ break; } return 0; }

选做 5.30 抓交通肇事犯

一辆卡车违反交通规则,撞人后逃跑。现场有三人目击事件, 但都没有记住车号,只记下车号的一些特征。甲说:牌照的前 两位数字是相同的;乙说:牌照的后两位数字是相同的,但与 前两位不同;丙是位数学家,他说:四位的车号刚好是一个整 数的平方,请根据以上线索求出车号。 #include #include int main() {

int a,b,c,n; for(a=0; a<=9; a++) for(b=0; b<=9; b++) if(a!=b) {

n=1100*a+11*b; for(c=30; c<1000; c++) if(n==c*c)

printf(\ } return 0; } 5.31 求和

输入整数 m 和正整数 n ,按下列公式计算 s : s=m-(m+1)+m+2-(m+3)+ ?? +(-1)n(m+n) 。 输入: m 和 n 输出: s

#include int main()

- 33 -

{

int i,sign=1,m,n,s=0,t; scanf(\ for (i=0;i<=n;i++) { }

printf(\ }

5.32 计算SUM的值

已知公式:SUM = 1 + 1/2 + 1/3 + 1/4 + ... + 1/n 输入:n

输出:表达式 sum 的值。结果保留 6 位小数 #include int main() { int i,n; float s = 0.0, t; scanf(\ for (i=1;i<=n;i++) {

t=1.0/i; s+=t; t=sign*(m+i); sign=-sign; s=s+t;

}

printf(\ return 0; }

5.33 迭代法

用迭代法求.求平方根的迭代公式为:

要求前后两次求出的x的差的绝对值小于10-5。 #include #include int main() {

double x1,x2,a; scanf(\ { x2=1.0; do { x1=x2;

- 34 -

x2=0.5*(x1+a/x1); }

while(fabs(x2-x1)>=1e-5);

printf(\ } return 0; }

5.34 分数序列

有一个分数序列:...............,输入整数n,求出其前n项的和。 输出语句格式为:printf(\#include int main() {

int a,b,c,n,i; double s; scanf(\ a=2,b=1,s=0; for (i=1;i<=n;i ++) { s+=(1.0*a/b); c=b; b=a; a=a+c;

}

printf(\ return 0;

}

5.35 求e的值

编写程序,从键盘输入整数 n , 求 e 的值 . e=1+1/1!+1/2!+1/3!+..+1/n! printf(\ #include int main() {

double e=1.0,f=1.0; int n,i; scanf(\ for(i=1;i<=n;i++) { f=f/i; e=e+f; }

printf(\ }

5.36 编程计算

- 35 -

注意:用 double 型数据计算输出语句: 编写程序,输入n的值,求 :1-1/2+1/3-1/4+1/5-1/6+1/7-...+1/n (保留四位小数) #include int main() {

int i, sign = 1, n; float s = 0.0, t; scanf(\ for (i = 1; i <= n; i ++)

{ t = 1.0 / (sign * i); sign = -sign; s += t; } printf(\ return 0; }

5.37 cos(x)-x=0

利用以下所示的简单迭代方法求方程: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的一个实根,输出X0,输出语句为printf(\。 #include #include int main() { }

选做 5.38 SIX+SIX+SIX=NINE+NINE

计算出自然数SIX和NINE(它们满足的条件是SIX+SIX+SIX=NINE+NINE)的个数cnt。其中的S,I,X,N,E各代表一个十进制数字。输出语句:printf(\ #include #include int main() {

int S,I,X,N,E,cnt=0; for(S=1; S<=9; S++)

double x1,x2; scanf(\x2=cos(x1);

while(fabs(x2-x1)>0.000001) { }

printf(\

x1=x2; x2=cos(x1);

- 36 -