C程序设计(第五版)第五章课后习题
3.输人两个正整数m和n,求其最大公约数和最小公倍数。
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
int m, n;//定义两个整型变量
int d;
scanf("%d%d", &m, &n);
if (m < n) {//d取两个值中最小的数
d = m;
}
else {
d = n;
}
while (m % d != 0 || n % d != 0) {//从最大的开始循环向下减,寻找最有可能的最大公约数,找到后跳出while循环
d--;
}
printf("最大公约数%d,最大公因数%d", d,(m/d)*(n/d)*d);//最大公约数和最小公倍数和m,n之间有联系
return 0;
}
运行结果
最大公约数和最小公倍数联系
-
n个a
求S,=a+ aa+ aa+…+ a…a之值,其中a是一个数字,n表示a的位数,n由键盘输入。例如:
2+22十222+ 2222 + 22222 (此时n=5)
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
int n,a;
int sum ;
scanf("%d%d", &n,&a);
sum = a;
while (n > 1) {//n大于1的情况,sum进行累加
a = a * 10 + a;
sum += a ;
n--;
}
printf("%d", sum);
}
运行结果
6.求1!+2!+3!+4!+…+20!
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
int n,a,sum;
scanf("%d", &n);
a = 1;
sum = 0;
for (int i = 1; i <= n; i++) {
a = 1;
for (int j = i; j > 0; j--) {
a *= j;
}
sum += a;
}
printf("%d", sum);
}
运行结果
11.一个球从100m高度自由落下,每次落地后反弹回原高度的一半,再落下,再反弹。求它在第10次落地时共经过多少米,第10次反弹多高。
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
int n;
double s,h;
h = 100;
s = 0;
scanf("%d", &n);
while (n > 1) {
s += (double)1.5*h;
h = (double)0.5 * h;
n--;
}
printf("经过的路程%.2f 现在的高度%.2f",s,h);
}
运行结果