仅代表个人看法
如有错误请指正
注意第14,15,17题较难,主要与数学公式 有关,思考过程较复杂不做讲解,如有需要请留言
题目10:有一个分数序列求出这个数列的前20项之和。
#include <stdio.h>
int main()
{
int i, n = 20;
double a = 2, b = 1, s = 0, t;
for (i = 1; i <= n; i++)
{
s = s + a / b;
t = a, a = a + b, b = t;
}
printf("sum=%16.10f\n", s);
return 0;
}
结果:
题目11:一个球从100m高度自由落下,每次落地后反弹回原高度的一半,再落下,再反弹。求它在第 10 次落地时共经过多少米,第 10次反弹多高。
#include <stdio.h>
int main()
{
double sn = 100, hn = sn / 2;
int n;
for (n = 2; n <= 10; n++)
{
sn = sn + 2 * hn;
hn = hn / 2;
}
printf("第10次落地时共经过%f米\n", sn);
printf("第10次反弹%f米\n", hn);
return 0;
}
题目12:猴子吃桃问题。猴子第1天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第 2天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,就只剩一个桃子了。求第1天共摘多少个桃子。
#include <stdio.h>
int main()
{
int day, x1, x2;
day = 9;
x2 = 1;
while (day > 0)
{
x1 = (x2 + 1) * 2;
x2 = x1;
day--;
}
printf("total=%d\n", x1);
return 0;
}
题目13:用迭代法。求平方根的迭代公式为(数学符号不好打。。。请原谅)
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>
int main()
{
float a, x0, x1;
printf("enter a positive number:");
scanf("%f", &a);
x0 = a / 2;
x1 = (x0 + a / x0) / 2;
do
{
x0 = x1;
x1 = (x0 + a / x0) / 2;
} while (fabs(x0 - x1) >= 1e-5);
printf("The square root of %5.2f is %8.5f\n", a, x1);
return 0;
}
题目14:用牛顿迭代法求下面方程在1.5附近的根:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>
int main()
{
double x1, x0, f, f1;
x1 = 1.5;
do
{
x0 = x1;
f = ((2 * x0 - 4) * x0 + 3) * x0 - 6;
f1 = (6 * x0 - 8) * x0 + 3;
x1 = x0 - f / f1;
} while (fabs(x1 - x0) >= 1e-5);
printf("The root of equation is %5.2f\n", x1);
return 0;
}
题目15:用二分法求下面方程在(-10,10)的值
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>
int main()
{
float x0, x1, x2, fx0, fx1, fx2;
do
{
printf("enter x1 & x2:");
scanf("%f,%f", &x1, &x2);
fx1 = x1 * ((2 * x1 - 4) * x1 + 3) - 6;
fx2 = x2 * ((2 * x2 - 4) * x2 + 3) - 6;
} while (fx1 * fx2 > 0);
do
{
x0 = (x1 + x2) / 2;
fx0 = x0 * ((2 * x0 - 4) * x0 + 3) - 6;
if ((fx0 * fx1) < 0)
{
x2 = x0;
fx2 = fx0;
}
else
{
x1 = x0;
fx1 = fx0;
}
} while (fabs(fx0) >= 1e-5);
printf("x=%6.2f\n", x0);
return 0;
}
题目16:输出以下图案
#include <stdio.h>
int main()
{
int i, j, k;
for (i = 0; i <= 3; i++)
{
for (j = 0; j <= 2 - i; j++)
printf(" ");
for (k = 0; k <= 2 * i; k++)
printf("*");
printf("\n");
}
for (i = 0; i <= 2; i++)
{
for (j = 0; j <= i; j++)
printf(" ");
for (k = 0; k <= 4 - 2 * i; k++)
printf("*");
printf("\n");
}
return 0;
}
题目17:两个乒乓球队进行比赛,各出3人。甲队为A,B,C3人,乙队为X,Y,Z3人。已抽签决定比赛名单。有人向队员打听比赛的名单,A说他不和 X 比,C说他不和 X,Z比,请编程序找出3对赛手的名单。
#include <stdio.h>
int main()
{
char i, j, k;
for (i = 'x'; i <= 'z'; i++)
for (j = 'x'; j <= 'z'; j++)
if (i != j)
for (k = 'x'; k <= 'z'; k++)
if (i != k && j != k)
if (i != 'x' && k != 'x' && k != 'z')
printf("A--%c\nB--%c\nC--%c\n", i, j, k);
return 0;
}
本文遵守Creative Commons 协议
如有征用请说明出处