谭C第五章

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <math.h>
int main()
{
    //第三题
    //做这个题首先要会最大公约数和最小公倍数的求法,在百度上搜的求法。
    //int m, n, q, r, t;
    //printf("请输入两个正整数:");
    //scanf("%d,%d", &m, &n);
    //q = m*n;
    //if (n < m)//保证n>m
    //{
    //    t = n;
    //    n = m;
    //    m = t;
    //}
    //while (m != 0)//辗转相乘法
    //{
    //    r = n%m;
    //    n = m;
    //    m = r;
    //}
    //printf("最大公约数是:%d\n", n);
    //printf("最小公倍数是:%d\n", q/n);//两个数的乘积等于这两个数的最大公约数与最小公倍数的积

    //第四题
    //char c;
    //int a=0, b=0, x=0, y=0;
    //printf("请输入一串字符,按回车键截止:");
    //while ((c = getchar()) != '\n')
    //{
    //    if (c >= 'a'&&c <= 'z' || c >= 'A'&&c <= 'Z')
    //        a++;
    //    else if (c == ' ')
    //        b++;
    //    else if (c >= '0'&&c <= '9')
    //        x++;
    //    else
    //        y++;
    //}
    //printf("字母有%d个\n空格有%d个\n数字有%d个\n其他字符有%d个\n", a, b, x, y);

    //第五题
    //int a, n, s=0,t=0,q=1;
    //printf("a=");
    //scanf("%d", &a);
    //printf("n=");
    //scanf("%d", &n);
    //while (q <= n)
    //{
    //    t = t + a*pow(10,q-1);
    //    s = s + t;
    //    q++;
    //}
    //printf("S=a+aa+aaa+...=%d\n", s);

    //第六题
    //int n, q = 1;
    //double s = 0, t = 1;//s和t不能用int型或long型,int型和long型的整数范围无法容纳求得的结果,使用double型精度更高。
    //printf("n=");
    //scanf("%d", &n);
    //while (q <= n)//我是用while循环做的,答案用的for循环,再用for循环做一遍。
    //{
    //    t = t*q;//阶乘
    //    s = s + t;
    //    q++;
    //}
    //printf("s=1!+2!+....+n!=%.15e\n", s);
    //for (q = 1; q <= n; q++)//for循环做法
    //{
    //    t = t*q;
    //    s = s + t;
    //}
    //printf("s=1!+2!+....+n!=%.15e\n", s);

    //第七题
    //double k,s1 = 0, s2 = 0, s3 = 0;
    //for (k = 1; k <= 100; k++)
    //{
    //    s1 = s1 + k;
    //}
    //for (k = 1; k <= 50; k++)
    //{
    //    s2 = s2 + k*k;
    //}
    //for (k = 1; k <= 10; k++)
    //{
    //    s3 = s3 + 1.0 / k;
    //}
    //printf("s=%.6f\n", s1 + s2 + s3);

    //第八题
    //int n, x, y, z;
    //printf("所有的水仙花数有:");
    //for (n = 100; n < 1000; n++)
    //{
    //    x = n / 100;
    //    y = (n - x * 100) / 10;//y=n/10-x*10
    //    z = n - x * 100 - y * 10;//z=n%10
    //    if (n == pow(x, 3) + pow(y, 3) + pow(z, 3))
    //        printf("%d  ", n);
    //}
    //printf("\n");

    //第九题
    //int n, q ,s;
    //for (n = 1; n < 1000; n++)//这里答案中定义的n=2,其实1和2都可以,下面的q是小于n的,所以1不会计算在内,但多了一次循环。
    //{
    //    s = 0;
    //    for (q = 1; q < n; q++)
    //    
    //        if ((n%q) == 0)                                    //我的思路跟答案上第二种方法一致,但我一开始把s=0直接在循环外就定义了,结果就出不来。
    //            s = s + q;                                    //看了答案中的方法一,一个一个的把因子给赋值再判断因子的个数输出太麻烦了,如果数字更大的话,因子也会更多。
    //        if (s == n)
    //        {
    //            printf("%d it factors are ", s);
    //            for (q = 1; q < n; q++)
    //            if ((n%q) == 0)
    //                printf("%d,",q);
    //            printf("\n");
    //        }
    //    
    //}

    //第十题
    //double x=2, y=1, s=0,t,n;
    //for (n = 1; n <= 20; n++)
    //{
    //    s = s + x / y;                        //这个题重在找出分子分母规律。
    //    t = x;
    //    x = x + y;
    //    y = t;
    //}
    //printf("s=%.10f\n", s);

    //第十一题
    //double h = 50, n,s=100;
    //for (n = 2; n <= 10; n++)
    //{
    //    s = s + 2 * h; //第一次只有落下的距离没有弹起的距离,所以循环应该从第二次开始算,并把h的初始值定义为第二次的高度
    //    h = h / 2;
    //    
    //    
    //}
    //printf("第十次反弹%f米\n", h);
    //printf("一共经过%f米\n", s);

    //第十二题
    //int x=1, n = 9;
    //while (n > 0)
    //{
    //    x = (x + 1) * 2;
    //    n--;
    //}
    //printf("一共%d个桃子\n", x);

    //第十三题
    //float x1, x2, a;
    //printf("请输入要求的平方根a=");
    //scanf("%f", &a);
    //x1 = a / 2;
    //x2 = (x1 + a / x1) / 2;
    //while (fabs(x1 - x2) >= 1e-5)//答案中用的do-while语句。do-while语句的特点:先无条件的执行循环,再判断条件是否成立。
    //当while后面的表达式第一次值为真时,两种循环得到的结果相同,否则两者结果不同。因为当while后面表达式为假时,一次循环也不执行,而do-while语句至少执行一次循环。
    //{
    //    x1 = x2;
    //    x2 = (x1 + a / x1) / 2;
    //} 
    //printf("%f的平方根是%f", a,x2);

    

    //第十六题
    //分析图形特点,将图形分为上半部分和下半部分。上半部分分为四行,下半部分分为三行,将每一行拆分成空格部分和*部分观察。
    //上半部分:第一行,前面空格数为3,*为1。
    //第二行:空格数2,*为3
    //第三行:空格数1,*为5
    //第四行:空格数0,*为7          观察发现,上半部分空格数=4-行数,*数=2*行数-1
    //下半部分:第一行,前面空格数为1,*为5。    
    //第二行:空格数2,*为3
    //第二行:空格数3,*为1          下半部分空格数=行数,*数=7-2*行数
    //int i,j,k;
    //for (i = 1; i <= 4; i++)//上半部分
    //{
    //    for (j = 0; j <= 4 - i; j++)//空格部分
    //        printf(" ");
    //    for (k = 0; k < 2 * i - 1; k++)//*部分
    //        printf("*");
    //    printf("\n");
    //}
    //for (i = 1; i <= 3; i++)//下半部分
    //{
    //    for (j = 0; j <= i; j++)//空格部分
    //        printf(" ");
    //    for (k = 0; k <7-2 *i ; k++)//*部分
    //        printf("*");
    //    printf("\n");
    //}

    //第十七题
    //char A, B, C;
    //for (A = 'X'; A <= 'Z'; A++)//列出A所有可能的对战对象
    //{
    //    for (B = 'X'; B <= 'Z'; B++)//列出B所有可能的对战对象
    //    {
    //        for (C = 'X'; C <= 'Z'; C++)//列出C所有可能的对战对象
    //        {
    //            if (A != 'X'&&C != 'X'&&C != 'Z'&&A != B&&A != C&&B != C)//把所有条件加上
    //                printf("A和%c比,B和%c比,C和%c比\n", A, B, C);
    //        }
    //    }
    //}

    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值