//Homework
//P141
//5.3
void max_min_Number(void)
{
unsigned int m, n;
int i;
unsigned int min, max,mul;
scanf_s("%d%d", &m, &n);
mul = m * n;
for ( i= m; i > 0; i--)
{
if (m % i == 0 && n % i == 0)
break;
}
max = i;
printf("The greatest common divisor is %d\n", max);
min = mul / max; // m*n = max*min
printf("The least common multiple is %d\n", min);
}
//5.4
void char_Stati(void)
{
char s[100];
int i;
int abc=0, nul=0, num=0, other=0;
gets(s);
//printf("%s", m);
//scanf_s("%s",s, 100); // VS2019特性
for (i = 0; i < strlen(s);i++)
{
if (('a' <= s[i] && s[i] <= 'z') || ('A' <= s[i] && s[i] <= 'Z'))
{
abc++;
}
else if ('0' <= s[i] && s[i] <= '9')
{
num++;
}
else if (s[i] == ' ')
{
nul++;
}
else
{
other++;
}
}
printf("%s\n", s);
printf("字母:%d 数字:%d 空格:%d 其它:%d\n", abc, num, nul, other);
}
//5.5
void multi_2Sum(void)
{
int i,j,n;
long sum = 0,num=0;
scanf_s("%d", &n);
for (i = 1; i <= n; i++)
{
for (j = 1; j <= i; j++)
{
num = num + 2 * pow(10, j - 1);
if(i==j)
{
printf("per: %d\n", num); // 方便查看
}
}
sum += num;
num = 0;
}
printf("total: %d\n", sum);
}
//5.6
void sum_Sn(void)
{
int i, j;
long long int mul=1, sum=0;
for (i = 1; i <= 20; i++) // 外层循环用于求和
{
for (j = 1; j <= i; j++)//内层循环用于求阶乘
{
mul = mul*j;
if (i == j)
{
printf("%-d的阶乘是:%-lld\n", j, mul); // 使用lld输出
}
}
sum += mul;
mul = 1;
}
printf("1到20各数的阶乘之和为:%-lld\n", sum); // 使用lld输出
}
//5.7
void sum_Dir(void)
{
int i;
double k;
int l = 0;
double sum1 = 0, sum2 = 0, sum3 = 0;
scanf_s("%f", &k); //输入k
for (i = 1; i <= 100; i++)
{
sum1 += k ;
}
printf("%d\n", sum1);
for (i = 1; i <= 50; i++)
{
sum2 += k * k;
}
printf("%d\n", sum2);
for (i = 1; i <= 10; i++)
{
sum3+= 1 / k;
}
printf("%d\n", sum3);
printf("%d\n", sum1+sum2+sum2);
}
//5.8
void narcissus_Numbers(void)
{
int i;
int _n100, _n10, _n1;
printf("This is a program of narciaaus numbers:\n");
for (i = 100; i <= 999; i++)
{
_n100 = i / 100;
_n10 = i % 100 / 10;
_n1 = i %10;
if (_n100 * _n100 * _n100 + _n10 * _n10 * _n10 + _n1 * _n1 * _n1 == i)
{
printf("%d\n", i);
}
}
}
//5.9
void full_Numbers(void)
{
int i = 1000, j=1, k=0;
int sum = 0;
char num[100] = { 0 };
while (--i) // 1-1000,i=999
{
printf("---------第%d层循环--------\n", i);
while (j<i)
{
if(i % j == 0) // 得到因子
{
sum += j; // 因子求和
printf("%d\n", j);
}
j++;
if (sum == i)
{
printf("sum is %d\n", sum);
printf("%d is full number\n ", i);
sum = 0;
}
}
j = 1;
k = 0;
sum = 0;
printf("--------------------------\n", i);
printf("\n");
}
}
//5.10
void fraction_20(void)
{
int k=20;
float i = 2, j = 1;
int last_i=1, last_j = 1;
float sum=0;
int temp_i, temp_j;
while (k--)
{
printf("%.0f/%.0f\n", i, j); //输出验证
temp_i = i; //暂存i0
temp_j = j;
sum += i / j;
i = i + last_i; // 求值i1
j = j + last_j; //
last_i = temp_i; // last_i = temp_i
last_j = temp_j; // last_j = temp_j
}
printf("%.2f", sum);
}
//5.11
void ball_Height(void)
{
float _height = 100;
int i;
for (i = 0; i < 10; i++)
{
_height = 1.0 / 2 * _height;
}
printf("the height is %.2f m\n", _height);
}
//5.12
void monkey_Peach(void)
{
int i;
double first_day, last_day=1;
for (i = 0 ;i < 10; i++)
{
last_day = (2 * last_day + 1);
}
first_day = last_day;
printf("the number of peach in the first day is %.0f\n", first_day);
// 下面是验证
for (i = 0; i < 10; i++)
{
last_day = (1/2 * last_day + 1);
}
first_day = last_day;
printf("the number of peach in the last day is %.0f\n", first_day);
}
//5.13
void loop_Roots(void)
{
double a=0;
double xn=1.0,xn_1=0; // 设初值
double error=1.0;
printf("please enter a number:\n");
scanf_s("%lf", &a); // 键入求根值
xn = a / 2;
while (error > 1e-5)
{
xn_1 = 1.0 / 2 * (xn + a / xn);
error = abs(xn_1 - xn);
xn = xn_1;
}
printf("the root of sqrt number is %.2f:\n",xn_1);
}
//5.14
//牛顿迭代法求根公式:
// Pn+1 = Pn-[f(Pn)/f'(Pn)]
void newton_Roots(void)
{
#
double pn_1=0, pn=1.5;
double err=1.0;
while (err >= 1e-6)
{
pn_1 = pn - ((2*pn*pn*pn-4*pn*pn+3*pn-6)/(6 * pn * pn - 8 * pn + 3));
err = abs(pn_1 - pn);
pn = pn_1;
}
printf("the root of f(x) is %.4f.\n", pn_1);
}
//5.15
void half_Roots(void)
{
double x0=-10, x1=10; //定义区间
double xn;
double err = 1.0;
double zero = 0.0;
int i = 10;
while(err>1e16 || err!=0)
{
err = (x1 - x0)/2.0; //误差
xn = 1.0 / 2.0 * ((float)abs(x1) - (float)abs(x0)); // 二分,
if ((2 * x1 * x1 * x1 - 4 * x1 * x1 + 3 * x1 - 6)*(2 * x0 * x0 * x0 - 4 * x0 * x0 + 3 * x0 - 6) < zero) //
{
x1 = xn;
}
else
{
x0 = xn;
}
}
printf("the root of f(x) is %.4f.\n", xn);
}
// 5.16
void print_Shape(void)
{
printf(" * \n *** \n ***** \n*******\n ***** \n *** \n * ");
}
//5.17
void game_Combine(void)
{
int i, j;
for (i = 1; i <= 3; i++)
{
for (j = 1; j <= 3; j++)
{
if ((i != 1 || j != 1)&& (i != 3 || j != 1) && (i != 3 || j != 3))
{
printf("T1-%d VS T2-%d\n", i, j);
}
}
}
}