经典的C程序

程序一:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数

 1 #include<stdio.h>
 2 void main(){
 3     int a, b, c, i;
 4     for (i = 100; i <= 999; i++){
 5         //获取百位数
 6         a = i / 100;
 7         //获取十位数
 8         b = i / 10 % 10;
 9         c = i % 10;
10         if ((a*a*a + b*b*b + c*c*c) == i){
11             printf("%d ",i);
12         }
13     }
14 }

程序二:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5

 1 #include<stdio.h>
 2 void main()
 3 {
 4     int a, k = 0, i;
 5     char b[100];
 6     scanf_s("%d", &a);
 7     printf("%d=", a);
 8     for (i = 2; i <= a; i++)
 9     {
10         do
11         {
12             if (a%i == 0)
13             {
14                 b[k] = i; k++;
15                 a = a / i;
16             }
17             else
18                 break;
19         } while (a >= i);
20     }
21     for (i = 0; i<2 * k - 1; i++)
22         if (i % 2 == 0)
23             printf("%d", b[i / 2]);
24         else
25             printf("*");
26 }

程序三:输入两个正整数m和n,求其最大公约数和最小公倍数。

 1 #include<stdio.h>
 2 void main()
 3 {
 4     int a, b, x, y, r, t;
 5     scanf_s("%d,%d", &a, &b);
 6     printf("%d %d
", a, b);
 7     x = a;
 8     y = b;
 9     //交换位置  最终结果 y>x
10     if (x>y)
11     {
12         t = y; y = x; x = t;
13     }
14     //碾转相除获取最大公约数
15     do
16     {
17         r = y%x;
18         y = x;
19         x = r;
20     } while (r != 0);
21     printf("%d  ", y);
22     //根据两个数的乘积除以其最大公约数就是最小公倍数
23     printf("%d", a*b / y);
24 }

程序四:判断10-30之间有多少个素数,并输出所有素数。所谓素数:仅能被1和它本身整除的数。

 1 #include<stdio.h>
 2 void main()
 3 {
 4     int a, b, i, j, k, s = 0, n = 0;
 5     int c[100];
 6     for (i = 10; i <= 30; i++)
 7     {
 8         k = 0;
 9         for (j = 2; j <= i / 2; j++)
10         {
11             b = i%j;
12             if (b == 0)
13                 k = 1;
14         }
15         if (k == 0)
16         {
17             s++;//计数用
18             c[n] = i;//将素数放进数组中
19             n++;//数组键值
20         }
21     }
22     printf("%d
", s);//一共多少个素数
23     //打印出数组内容
24     for (i = 0; i<n; i++)
25         printf("%d ", c[i]);
26 }

程序五:Fibonacci数列,第1数为1,第2数为1,从第3输开始,为前两个数的和,即f1=1;f2=1;fn=fn-1+fn-2;求前20项个是什么,并且每行输出五个数

#include<stdio.h>
void main()
{
    int f1, f2, f3, i, j;
    f1 = 1; f2 = 1;
    printf("%d  %d  ", f1, f2);
    for (i = 1; i <= 20; i++)
    {
        f3 = f1 + f2;
        f1 = f2;
        f2 = f3;
        printf("%d ", f3);
        //换行使用
        for (j = 1; j <= 20; j++)
        {
            if (i == 5 * j - 2)
                printf("
");
        }
    }
}

程序六:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。

#include <stdio.h>
void main()
{
    int count, i, sum, t, a;
    scanf_s("%d", &count);
    scanf_s("%d", &a);
    t = a; sum = 0;
    //每个数在前一个数的基础上增长了10倍  并加上了个位数
    for (i = 1; i <= count; i++)
    {
        sum = sum + t;
        t = 10 * t + a;
    }
    printf("%3d", sum);
}
原文地址:https://www.cnblogs.com/webclz/p/4255291.html