循环语句
1:水仙花数是指一个n位的正整数,它的各位数字的n次幂之和等于它本身,求100—999之间的所有水仙花数。输入:无;输出:每个水仙花数用“,”分割。2:展开式求和,输入一个实数x,计划并输出s={1+x+x*2/2!+x*3/3!+x*4/4!+.......},直到最后一项的绝对值小于0.00001,计算结果保留小数点后五位。不要用fact函数和pow函数,直接计算,输入:实数x;输出:s=? 本帖最后由 jackz007 于 2021-10-28 14:34 编辑
【第1题】:
#include <stdio.h>
int main(void)
{
int c , d , k , s ;
for(c = 0 , d = 100 ; d < 1000 ; d ++) {
for(s = 0 , k = d ; k ; k /= 10) s += (k % 10) * (k % 10) * (k % 10) ;
if(s == d) {
if(c) printf(" , ") ;
printf("%d" , d) ;
c ++ ;
}
}
if(c) printf("\n") ;
}
编译、运行实况:
D:\0002.Exercise\C>g++ -o x x.c
D:\0002.Exercise\C>x
153 , 370 , 371 , 407
D:\0002.Exercise\C>
【第2题】:
#include <stdio.h>
int main(void)
{
double d , e , x , s ;
unsigned long long i , k , m ;
scanf("%lf" , & x) ;
for(s = e = k = 1 ; e >= 0.00001 ; k ++) {
for(m = 1 , i = k ; i ; m *= i , i --) ; // m = k !
for(d = 1 , i = 0 ; i < k ; d *= x , i ++) ; // d = x ^ k
e = 1.0 * d / m ;
s += e ;
}
printf("%.5lf\n" , s) ;
}
编译、运行实况:
D:\0002.Exercise\C>g++ -o x x.c
D:\0002.Exercise\C>x
1.8
6.04965
D:\0002.Exercise\C> #include <stdio.h>
#include <stdbool.h>
bool isNarcissistic(int n)
{
int a, b, c;
a = n/100;
b = (n%100)/10;
c = n%10;
return a*a*a + b*b*b + c*c*c == n;
}
int main()
{
for(int i = 100; i <= 999; i++){
if(isNarcissistic(i)){
printf("%d\n", i);
}
}
return 0;
}153
370
371
407
#include <stdio.h>
double f(int n){
double res = 1;
for(int i = n; i > 0; i--){
res *= i;
}
return res;
}
double formula(double x){
double sum = 1;
for(int i = 1; (i*x)/f(i) >= 0.00001; i++){
sum += (i*x)/f(i);
}
return sum;
}
int main()
{
double x;
scanf("%lf", &x);
printf("%.5lf", formula(x));
return 0;
}5
14.59141 本帖最后由 qq1151985918 于 2021-10-28 16:10 编辑
def isFlower(num):
r = 0
n = len(str(num))
for i in str(num):
r += int(i) ** n
return True if r == num else False
print(",".join())
def refact(num):
r = 1
for i in range(num, 0, -1):
r *= i
return r
def getsum(x):
s = t = 1
n = x
while abs(n) >= 0.00001:
s += n
t += 1
n = x * t / refact(t)
return round(s, 5)
print(getsum(5))
页:
[1]