循环练习

//
//  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;
}
原文地址:https://www.cnblogs.com/0515offer/p/4543780.html