Python123第十章答案(自写,仅供参考) By:肇院伟烨
前言
1、代码自己写的,不是标准答案,仅供参考。
2、建议看懂后自己另外写而不是复制粘贴。
3、点击目录可以转跳
第十章
第1题
#include <stdio.h>
int sum(int n);
int main()
{
int n;
scanf("%d", &n);
printf("%d\n", sum(n));
return 0;
}
int sum(int n)
{
if (n == 1)
return 1;
else if (n <= 0)
return 0;
else
return n + sum(n - 1);
}
第2题
#include <stdio.h>
#include <math.h>
int search(int n);
int main()
{
int number;
scanf("%d", &number);
printf("count=%d\n", search(number));
return 0;
}
int search(int n)
{
int digit = 11,result,count=0;
while (1)
{
result = pow(digit, 2);
if (result > 101 && result <= n)
{
int a, b, c;
a = result / 100;
b = (result - a * 100) / 10;
c = result - a * 100 - b * 10;
if(a==b||a==c||b==c)
count++;
digit++;
}
else
{
return count;
}
}
}
第3题
#include <stdio.h>
double fact(int n);
double factsum(int n);
int main()
{
int n;
scanf("%d", &n);
printf("fact(%d) = %.0f\n", n, fact(n));
printf("sum = %.0f\n", factsum(n));
return 0;
}
double fact(int n)
{
if (n <= 1)
return 1;
return n * fact(n - 1);
}
double factsum(int n)
{
double i, sum=0;
for ( i = 1; i <=n; i++)
{
sum += fact(i);
}
return sum;
}
第4题
#include <stdio.h>
double calc_pow(double x, int n);
int main()
{
double x;
int n;
scanf("%lf %d", &x, &n);
printf("%.0f\n", calc_pow(x, n));
return 0;
}
double calc_pow(double x, int n)
{
if (n == 1)
return x;
else
return x * calc_pow(x, n - 1);
}
第5题
#include <stdio.h>
#include<math.h>
double fn(double x, int n);
int main()
{
double x;
int n;
scanf("%lf %d", &x, &n);
printf("%.2f\n", fn(x, n));
return 0;
}
double fn(double x, int n)
{
if (n == 1)
return x;
else
return x - x * fn(x, n - 1);
}
第6题
#include <stdio.h>
int Ack(int m, int n);
int main()
{
int m, n;
scanf("%d %d", &m, &n);
printf("%d\n", Ack(m, n));
return 0;
}
int Ack(int m, int n)
{
if (m == 0)
return n + 1;
else if (n == 0 && m > 0)
return Ack(m - 1, 1);
else if (n > 0 && m > 0)
return Ack(m - 1, Ack(m, n - 1));
}
第7题
#include <stdio.h>
int f(int n);
int main()
{
int n;
scanf("%d", &n);
printf("%d\n", f(n));
return 0;
}
int f(int n)
{
if (n <= 1)
return n;
else
return f(n - 1) + f(n - 2);
}
第8题
#include <stdio.h>
void dectobin( int n );
int main()
{
int n;
scanf("%d", &n);
dectobin(n);
return 0;
}
void dectobin( int n ){
int result=0;
if(n==0)
printf("0");
else if(n==1)
printf("1");
else
{
dectobin(n/2);
result=n%2;
printf("%d",result);
}
}
第9题
#include <stdio.h>
void printdigits( int n );
int main()
{
int n;
scanf("%d", &n);
printdigits(n);
return 0;
}
void printdigits( int n )
{
if(n<=9)
printf("%d\n",n);
else
{
printdigits(n/10);
printf("%d\n",n%10);
}
}