• 循环练习


    //
    //  main.c
    //  循环练习
    //
    //  Created by zhangxueming on 15/5/29.
    //  Copyright (c) 2015年 zhangxueming. All rights reserved.
    //
    
    #include <stdio.h>
    //4.循环(计算某个数的位数) 输入一个正整数, 计算这个正整数的位数
    
    //int main(int argc, const char * argv[]) {
    //    // insert code here...
    //    //printf("Hello, World!
    ");
    //    //num = 12345;
    //    //12345  / 10      cnt++;
    //    //1234   / 10      cnt++;
    //    //123    / 10      cnt++;
    //    //12     / 10      cnt++;
    //    //1      / 10      cnt++;
    //    //0
    //    int num;
    //    scanf("%d", &num);
    //    int cnt=0;
    //    while (num) {
    //        cnt++;
    //        num/=10;
    //    }
    //    printf("cnt = %d
    ", cnt);
    //    return 0;
    //}
    
    //9.流程控制(数值序列3)    输出数字序列 1,2,3,5,8,13,21...,输出个数由键盘输入。注意输入使用scanf输入
    // a = 1, b=2;   a+b = 3;
    // a = 2, b=3;   a+b = 5;
    // a = 3, b=5;   a+b = 8;
    //
    //比如:
    //
    //输入 3输出为
    //1
    //2
    //3
    //输入 4 输出为
    //1
    //2
    //3
    //5
    
    //int main(int argc, const char *argv[])
    //{
    //    int n;
    //    int a=0,b=1;
    //    scanf("%d", &n);
    //    for (int i=0; i<n; i++) {
    //        int temp = a+b;
    //        printf("%d ", temp);
    //        a = b;
    //        b = temp;
    //    }
    //    printf("
    ");
    //    return 0;
    //}
    
    //int a=1, b=1;
    // a = 2 b=1;
    // a= 3 b=2
    
    //10.流程控制(数值序列2)    输出数字序列2/1,3/2,5/3,8/5,13/8,21/13...,输出个数由键盘输入。注意输入使用scanf输入 feibonaqi
    //
    //比如:
    //输入 3输出为
    //2/1
    //3/2
    //5/3
    //输入 4 输出为
    //2/1
    //3/2
    //5/3
    //8/5
    
    //int main(int argc, const char *argv[])
    //{
    //    int n;
    //    scanf("%d", &n);
    //    int a=1, b=1;
    //    for (int i=0; i<n; i++) {
    //        printf("%d/%d ", a+b, a);
    //        int temp = a+b;
    //        b = a;
    //        a = temp;
    //    }
    //    printf("
    ");
    //    return 0;
    //}
    //11. 输入一个数a,求 s=a+aa+aaa+aaaa+aa...a 的值,其中 a 是一个数字(1-9 之间)计算的数据的个数是5。例如 2+22+222+2222+22222。
    //a  = 3; int temp = a;
    //a = a*10+temp a = 33
    //a = a*10 +temp  333;
    //a = a*10 + temp 3333;
    
    //int main(int argc,const char *argv[])
    //{
    //    int a;
    //    int sum = 0;
    //    scanf("%d", &a);
    //    int temp = a;
    //    
    //    for (int i=0; i<5; i++) {
    //        sum+=a;
    //        a= a*10+temp;
    //    }
    //    printf("sum = %d
    ", sum);
    //    return 0;
    //}
    
    //12. 输入年月日, 判断是一年中的第多少天
    //2015 3 1
    //31 + 28 + 1 = 60
    //2012 3 1
    //31 + 29 + 1 = 61
    
    //int main(int argc,const char *argv[])
    //{
    //    int year, month, day;
    //    int sum = 0;
    //    scanf("%d %d %d", &year, &month, &day);
    //    for (int i=1; i<month; i++) {
    //        switch (i) {
    //            case 1:
    //            case 3:
    //            case 5:
    //            case 7:
    //            case 8:
    //            case 10:
    //            case 12:
    //                sum+=31;
    //                break;
    //            case 4:
    //            case 6:
    //            case 9:
    //            case 11:
    //                sum+=30;
    //                break;
    //            case 2:
    //                if ((!(year%4)&&year%100)||!(year%400)) {
    //                    sum+=29;
    //                }
    //                else
    //                {
    //                    sum+=28;
    //                }
    //                break;
    //            default:
    //                break;
    //        }
    //    }
    //    printf("sum = %d", sum+=day);
    //    return 0;
    //}
    
    //int main(int argc,const char *argv[])
    //{
    //    int i;
    //    scanf("%d",&i);
    //    
    //    switch (i) {
    //        case 1:
    //            printf("hello world%d
    ", i);
    //        case 2:
    //            printf("hello world%d
    ", i);
    //        case 3:
    //            printf("hello world%d
    ", i);
    //        case 4:
    //            printf("hello world%d
    ", i);
    //        case 5:
    //            printf("hello world%d
    ", i);
    //            break;
    //        default:
    //            break;
    //    }
    //    return 0;
    //}
    
    //13.一球从 100 米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第
    //10 次落地时,共经过多少米?
    
    //int main(int argc,const char *argv[])
    //{
    //    float s = 100;
    //    float temp = 100;
    //    for (int i=0; i<9; i++) {
    //        s+=temp;
    //        temp/=2;
    //    }
    //    printf("s = %.2f
    ", s);
    //    return 0;
    //}
    
    //14. 求最大公约数 (辗转相除法)
    //a     b        a%b
    //319 / 377 ---  319
    //377 / 319 ---  58
    //319 / 58  ---  29
    //58  / 29  ---  0
    //29  /  0
    
    //int main(int argc,const char *argv[])
    //{
    //    int a, b;
    //    scanf("%d %d", &a, &b);
    //    while (b) {
    //        int temp = a%b;
    //        a = b;
    //        b = temp;
    //    }
    //    printf("最大公约数 = %d
    ",a);
    //    return 0;
    //}
    
    
    //17. 输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数
    //sdfghjkl;
    
    //int main(int argc,const char *argv[])
    //{
    //    int cnt1=0,cnt2=0,cnt3=0,cnt4=0;
    //    char ch;
    //    while (scanf("%c",&ch), ch!='
    ') {
    //        if ((ch>='a' && ch<='z') || (ch>='A'&&ch<='Z')) {
    //            cnt1++;
    //        }
    //        else if(ch == ' ')
    //        {
    //            cnt2++;
    //        }
    //        else if(ch>='0' && ch<='9')
    //        {
    //            cnt3++;
    //        }
    //        else
    //        {
    //            cnt4++;
    //        }
    //    }
    //    printf("英文字母:%d 空格:%d 数字:%d 其它字符:%d
    ", cnt1, cnt2, cnt3, cnt4);
    //    return 0;
    //}
    //19.    循环(输出图案)    打印以下图案, 该图案的行数由输入的数n来控制
    //
    //A
    //AA
    //AAA
    
    //int main(int argc,const char *argv[])
    //{
    //    int n;
    //    scanf("%d", &n);
    //    for (int i=0; i<n; i++) {
    //        for (int j=0; j<=i; j++) {
    //            printf("A");
    //        }
    //        printf("
    ");
    //    }
    //    return 0;
    //}
    
    //20.使用嵌套循环产生下列图案:
    //   *   j=3             i=0
    //  ***  j=2 j=3         i=1   j=4
    // ***** j=1 j=2 j=3     i=2   j=4 j=5
    //*******j=0 j=1 j=2 j=3 i=3   j=4 j=5 j=6
    
    //int main(int argc,const char *argv[])
    //{
    //    int n;
    //    scanf("%d", &n);
    //    for (int i=0; i<n; i++) {
    //        for (int j=0; j<(n-1)*2+1; j++) {
    //            if (i+j>=n-1 && j-i<=n-1) {
    //                printf("*");
    //            }
    //            else
    //            {
    //                printf(" ");
    //            }
    //        }
    //        printf("
    ");
    //    }
    //    return 0;
    //}
    
    //24. 将一个正整数分解质因数(用for 循环)。例如:输入90,打印出90=2*3*3*5。//%d*   %d
    //n
    //90
    //90  / 2  --- 0
    //45  / 2  ---
    //45  / 3  --- 0
    //15  / 3  --- 0
    //5   / 3  ---
    //5   / 4  ---
    //5   / 5  --- 0
    //1
    //int main(int argc,const char *argv[])
    //{
    //    int n;
    //    scanf("%d", &n);
    //    printf("%d=",n);
    //    for (int i=2; n!=1; i++) {
    //        if(!(n%i))
    //        {
    //            n==i?printf("%d", i):printf("%d*",i);
    //            n /= i;
    //            i--;
    //        }
    //    }
    //    return 0;
    //}
    
    //30. 输入一个自然数n, 统计 n! 末尾有多少个0?
    //5!    1   5*4*3*2*1
    //10!   2   2*5*9*8*7*6*5*4*3*2*1
    //15!   3   3*5...2*5...5*...
    //20!   4   4*5...3*5...2*5...5...
    //25!   6   5*5...4*5...3*5...2*5...5...
    //125!    5*5*5   25%5   5%5
    //25%5 cnt++ 5%5 cnt++; 1%5
    //int main(int argc,const char *argv[])
    //{
    //    int n;
    //    int cnt=0;
    //    scanf("%d", &n);
    //    for (int i=1; i<=n; i++) {
    //        int temp = i;
    //        while (!(temp%5)) {
    //            cnt++;
    //            temp/=5;
    //        }
    //    }
    //    printf("cnt = %d
    ", cnt);
    //    return 0;
    //}
    
    //31. 编写程序,找到1000以内的所有”完数”,所谓完数是指一个数是其所有因子之和 如: 6 = 1+2+3;  6 28 496
    //int main(int argc, const char *argv[])
    //{
    //    for (int i=1; i<=1000; i++) {
    //        int sum=0;
    //        for (int j=1; j<i; j++) {
    //            if (!(i%j)) {
    //                sum+=j;
    //            }
    //        }
    //        if (sum==i) {
    //            printf("%d ", i);
    //        }
    //    }
    //    return 0;
    //}
    
    //25.流程控制(for循环)    输入一个大写字母,如F
    //
    //比如:
    //
    //输入:F
    //
    //输出:
    //
    //     A
    //    AB A
    //   ABC BA
    //  ABCD CBA
    // ABCDE DCBA
    //ABCDEF EDCBA
    
    //int main(int argc, const char *argv[])
    //{
    //    char ch;
    //    scanf("%c", &ch);
    //    for (int i=0; i<ch-'A'+1; i++) {
    //        for (int j=0; j<ch-'A'-i; j++) {
    //            printf(" ");
    //        }
    //        for (int j=0; j<=i; j++) {
    //            printf("%c",'A'+j);
    //        }
    //        for (int j=i; j>0; j--) {
    //            printf("%c", 'A'+j-1);
    //        }
    //        printf("
    ");
    //        
    //    }
    //    return 0;
    //}
    
    
    //26.    流程控制(for循环)    输入一个大写字母,如 F,输出
    //
    //比如:
    //
    //输入:F
    //
    //输出:
    //     F
    //    EFE
    //   DEFED
    //  CDEFEDC
    // BCDEFEDCB
    //ABCDEFEDCBA
    
    //27.    流程控制(for循环)    输入一个大写字符,如F
    //
    //比如:
    //
    //输入:F
    //
    //输出:
    //
    //FEDCBA
    // EDCBA B
    //  DCBA BC
    //   CBA BCD
    //    BA BCDE
    //     A BCDEF
    
    int main(int argc,const char *argv[])
    {
        char ch;
        scanf("%c",&ch);
        for (int i=0; i<ch-'A'+1; i++) {
            for (int j=0; j<i; j++) {
                printf(" ");
            }
            for (int j=ch-'A'-i; j>=0; j--) {
                printf("%c",'A'+j);
            }
            for (int j=0; j<i; j++) {
                printf("%c", 'A'+1+j);
            }
            printf("
    ");
        }
        return 0;
    }
  • 相关阅读:
    POJ2774 Long Long Message
    Lyndon Word相关
    后缀自动机(SAM)
    后缀数组(SA)
    [THUSC2016]补退选
    [HNOI2008]GT考试
    CF1080E Sonya and Matrix Beauty
    [JSOI2008]火星人
    两道FFT题目略解
    网络流概念+EdmondKarp算法+Dinic(Dinitz)
  • 原文地址:https://www.cnblogs.com/0515offer/p/4543780.html
Copyright © 2020-2023  润新知