#include <stdio.h>
#include <math.h> //程序中用到数学函数fabs,应包含头文件math.n
int main()
{
int sign = 1, count = 0; //sign用来表示数值的符号,count用来统计循环次数
double pi = 0.0, n = 1.0, term = 1.0; //pi开始代表多项式的值,最后代表π的值, n代表分母,term代表当前项的值
while (fabs(term) >= 1e-8) //检查当前项term的绝对值是否大于或等于10的(-6)次方
{
pi = pi + term; //把当前项term累加到pi中
n = n + 2; //n+2是下一项的分母
sign = -sign; //sign代表符号,下一项的符号与上一项符号相反
term = sign / n; //求出下一项的值term
count++; //count累加1
}
pi = pi * 4; //多项式的和pi乘以4,才是π的近似值
printf("pi=%10.8f\n", pi); //输出π的近似值
printf("count=%d\n", count); //输出循环次数
return 0;
}
3.输人两个正整数m和n,求其最大公约数和最小公倍数
#include <stdio.h>
int main()
{
int p, r, n, m, temp;
printf("请输入两个正整数n,m:");
scanf("%d,%d,", &n, &m);
if (n < m)
{
temp = n;
n = m;
m = temp;
}
p = n * m;
while (m != 0)
{
r = n % m;
n = m;
m = r;
}
printf("它们的最大公约数为:%d\n", n);
printf("它们的最小公约数为:%d\n", p / n);
return 0;
}
4.输人一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。
#include <stdio.h>
int main()
{
char c;
int letters = 0, space = 0, digit = 0, other = 0;
printf("请输入一行字符:\n");
while ((c = getchar()) != '\n')
{
if (c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z')
letters++;
else if (c == ' ')
space++;
else if (c >= '0' && c <= '9')
digit++;
else
other++;
}
printf("字母数:%d\n空格数:%d\n数字数:%d\n其它字符数:%d\n", letters, space, digit, other);
return 0;
}
#include <stdio.h>
int main()
{
int a, n, i = 1, sn = 0, tn = 0;
printf("a,n=:");
scanf("%d,%d", &a, &n);
while (i <= n)
{
tn = tn + a; //赋值后的tn为i个 a组成数的值
sn = sn + tn; //赋值后的sn为多项式前i项之和
a = a * 10;
++i;
}
printf("a+aa+aaa+...=%d\n", sn);
return 0;
}
#include <stdio.h>
int main()
{
double s = 0, t = 1;
int n;
for (n = 1; n <= 20; n++)
{
t = t * n;
s = s + t;
}
printf("1!+2!+...+20!=%22.15e\n", s);
return 0;
}
#include <stdio.h>
int main()
{
int i, j, k, n;
printf("parcissus numbers are ");
for (n = 100; n < 1000; n++)
{
i = n / 100;
j = n / 10 - i * 10;
k = n % 10;
if (n == i * i*i + j * j*j + k * k*k)
printf("%d ", n);
}
printf("\n");
return 0;
}
9.一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如,6的因子为1,2,3,而6=1+2+3,因此6是“完数”。编程序找出1000之内的所有完数,并按下面格式输出其因子:6 its factors are 1,2,3
//4.9.1
#define M 1000 //定义寻找范围
#include <stdio.h>
int main()
{
int k1, k2, k3, k4, k5, k6, k7, k8, k9, k10;
int i, a, n, s;
for (a = 2; a <= M; a++) //a是2-1000之间的整数,检查它是否完数
{
n = 0; //n用来累计a的因子的个数
s = a; //s用来存放尚未求出的因子之和,开始时等于a
for (i = 1; i < a; i++) //检查i是否a的因子
if (a%i == 0) //如果i是a的因子
{
n++; //n加1,表示新找到一个因子
s = s - i; //s减去已找到的因子,s的新值是尚未求出的因子之和
switch (n) //将找到的因子赋给k1...k9,或k10
{
case 1:
k1 = i; break; //找出的笫1个因子赋给k1
case 2:
k2 = i; break; //找出的笫2个因子赋给k2
case 3:
k3 = i; break; //找出的笫3个因子赋给k3
case 4:
k4 = i; break; //找出的笫4个因子赋给k4
case 5:
k5 = i; break; //找出的笫5个因子赋给k5
case 6:
k6 = i; break; //找出的笫6个因子赋给k6
case 7:
k7 = i; break; //找出的笫7个因子赋给k7
case 8:
k8 = i; break; //找出的笫8个因子赋给k8
case 9:
k9 = i; break; //找出的笫9个因子赋给k9
case 10:
k10 = i; break; //找出的笫10个因子赋给k10
}
}
if (s == 0)
{
printf("%d ,Its factors are ", a);
if (n > 1) printf("%d,%d", k1, k2); //n>1表示a至少有2个因子
if (n > 2) printf(",%d", k3); //n>2表示至少有3个因子,故应再输出一个因子
if (n > 3) printf(",%d", k4); //n>3表示至少有4个因子,故应再输出一个因子
if (n > 4) printf(",%d", k5); //以下类似
if (n > 5) printf(",%d", k6);
if (n > 6) printf(",%d", k7);
if (n > 7) printf(",%d", k8);
if (n > 8) printf(",%d", k9);
if (n > 9) printf(",%d", k10);
printf("\n");
}
}
return 0;
}
//4.9.2
#include <stdio.h>
int main()
{
int m, s, i;
for (m = 2; m < 1000; m++)
{
s = 0;
for (i = 1; i < m; i++)
if ((m%i) == 0) s = s + i;
if (s == m)
{
printf("%d,its factors are ", m);
for (i = 1; i < m; i++)
if (m%i == 0) printf("%d ", i);
printf("\n");
}
}
return 0;
}
#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;
}
#include <stdio.h>
int main()
{
char i, j, k; //是a的对手;j是b的对手;k是c的对手
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;
}