《计算机软件技术基础》习题及参考答案

发布时间 : 星期六 文章《计算机软件技术基础》习题及参考答案更新完毕开始阅读

第2章 软件工程基础

二、输入正整数m和n,求它们的最大公约数和最小公倍数。(辗转相除法) main()

{int m,n,r,k,l;

printf(“请输入两个正整数:“); scanf(“%d,%d”,&m,&n); l=m*n;

if(m

l=l/n; /*求最小公倍数*/

printf(“最大公约数为:%最小公倍数为:%\\n”,k,l); } 三、 ① main() {float I,j; scanf(“%f”,&I); if (I<=100000) j=I*0.1;

if (I>100000&&I<=200000) j=100000*0.1+(I-100000)*0.075; if (I>200000&&I<=400000)

j=100000*0.1+100000*0.075+(I-200000)*0.05; if (I>400000&&I<=600000)

j=100000*0.1+100000*0.075+ 200000*0.05+ (I-400000)*0.03; if (I>600000&&I<=1000000)

j=100000*0.1+100000*0.075+ 200000*0.05+200000*0.03+(I-600000)*0.015; if (I>1000000)

j=100000*0.1+100000*0.075+ 200000*0.05+200000*0.03+400000)*0.015 +(I-1000000)*0.01; Printf(“%d”,j); }

- 17 -

第2章 软件工程基础

② main()

{float b,b1,b2,b4,b6,b10; int c; long int i; b1=100000*0.1; b2=b1+100000*0.075; b4=b2+200000*0.05; b6=b4+200000*0.03; b10=b6+400000*0.015; scanf(“%ld”,&i); c=i/100000; if (c>10) then c=10 switch(c)

{case 0: b=i*0.1;break;

case 1: b=b1+(i-100000)*0.075;break; case 2:

case 3: b=b2+(i-200000)*0.05;break; case 4:

case 5: b=b4+(i-400000)*0.03;break; case 6: case 7: case 8:

case 9: b=b6+(i-600000)*0.015;break; case 10: b=b10+(i-1000000)*0.01; }

printf(“%f”,b); } 四、 main()

{float k,s1=0,s2=0,s3=0; int i;

int n1=100,n2=50,n3=10; for (i=1;i<=n1;i++) s1=s1+i;

for (i=1;i<=n2;i++) s2=s2+i*i;

- 18 -

第2章 软件工程基础

for (i=1;i<=n3;i++) {k=1/(float)i;s3=s3+k;} printf(“%f”,s1+s2+s3); }

五、

#include main() {char c;

int letter=0,space=0,digit=0,other=0; printf(“请输入一行字符:\\n”); while((c=getchar())!=’\\n’)

{if (c>=’a’&&c<=’z’|| c>=’A’&&c<=’Z’) letter++; else if (c==’ ’) space++;

else if (c>=’0’&&c<=’9’) digit++; else other++; }

printf(“字母数%d,空格数%d,数字数%d,其它字符数%d”,

letter,space,digit,other);

}

- 19 -

第2章 软件工程基础

习题9

一、已有变量定义double a=5.0;int n=5;和函数调用语句mypow(a,n);,用以求a的n次方。请编写double mypow(double x,int y)函数。

double mypow (double x, int y) { }

二、以下程序的功能是应用下面的近似公式计算e的n次方。函数f1用来计算每项分子的值;函数f2用来计算每项分母的值。请编写f1和f2函数。

ex?1?x?x?x2!233! ?...(前20项的和)float f2(int n) { }

float f1 (int x, int n) { } main( )

{float exp=1.0;int n, x; printf (\:\;

scanf (\,&x); printf(\, x); exp=exp+x;

for(n=2; n<=19; n++)exp=exp+f1(x,n)/f2(n); printf(\, x,exp); }

运行结果:

Input a number: 3 The is exp (3)=20.0855 三、求以下数列前20项之和。 四、求

23581321,,,,,,......... 1235813sn?a?aa?aaa?...?aa...a

之值,其中a是一个数字。例如:2+22+222+2222+22222(此时n为5),n由键盘输入。

五、用迭代法求:

- 20 -

联系合同范文客服:xxxxx#qq.com(#替换为@)