第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 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 -
相关推荐: