c语言--部分循环摘录

1.九九乘法表

#include <stdio.h>
int main(int argc,const char *argv[])
{
    //外层循环--有多少行
    for (int i=1; i<=9; i++) {
       //内层循环--每一行打印的具体条目
        for (int j=1; j<=i; j++) {
            printf("%d*%d=%d ", j, i, i*j);
        }
        printf("\n");
    }
    return 0;
}

 2.字母金字塔

//输入:F
//\
//输出:
//     F
//    EFE
//   DEFED
//  CDEFEDC
// BCDEFEDCB
//ABCDEFEDCBA
/*
分析:
     F
    EF  E
   DEF  ED
  CDEF  EDC
 BCDEF  EDCB
ABCDEF  EDCBA
*/
int main(int argc,const char *argv[])
{
    char ch;
    scanf("%c", &ch);
    //外层循环--打印多少行
    for (int i=0; i<ch-'A'+1; i++) {
        //打印空格--注意空格数量与 i 的关系
        for (int j=0; j<ch-'A'-i; j++) {
            printf(" ");
        }
        //打印左半部分字符
        for (int j=i; j>=0; j--) {
            printf("%c", ch-j);
        }
        //打印有半部分字符
        for (int j=0; j<i; j++) {
            printf("%c", ch-1-j);
        }
        printf("\n");
    }
    return 0;
}

 

//    输入:F
//    输出:
//    FEDCBA
//    EDCBAB
//    DCBABC
//    CBABCD
//    BABCDE
//    ABCDEF
/*
分析:同理上
*/
    
    char ch;
    scanf("%c",&ch);
    for (int i=0; i<ch-'A'+1; i++) {
        for (int j=ch-'A'-i; j>=0; j--) {
            printf("%c",'A'+j);
        }
        for (int j=0; j<i; j++) {
            printf("%c",'A'+j+1);
        }
        printf("\n");
    }
//输入:F
//\
//输出:
//
//       A
//     ABA
//    ABCBA
//  ABCDCBA
// ABCDEDCBA
//ABCDEFEDCBA

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("\n");
    }

    return 0;
}

 

 

//输入:F
//
//输出:
//
//FEDCBA
// EDCBAB
//  DCBABC
//   CBABCD
//    BABCDE
//     ABCDEF

int main(int argc,const char *argv[])
{
    char ch;
    scanf("%c", &ch);
    for (int i=0; i<ch-'A'+1; i++) {
        for (int j=i; j>0; 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("\n");
    }
    
    return 0;
}

 

 

3.(循环倒置)

eg.给定一个 5 位的整数,将该数按照 10 进制位逆置,例如给定 12345 变成 54321

    int m;
    scanf("%d",&m);
    int n=0;
    while (m) {
        //取出最后一位数并且向高位移动
        n=n*10 + m%10;
        //除去最后一位
        m=m/10;
    }
    printf("%d\n",n);
    return 0;

 4.(循环得到各位数字)

eg.将某个 8 位的整数所有位的数值加在一起并输出

    int m;
    scanf("%d",&m);
    int n=0;
    int sum=0;
    while (m) {
        //依次取出每一位
        n=m%10;
//        printf("%d",n);
        sum=sum+n;
        //去除最后一位
        m=m/10;
    }
    printf("%d\n",sum);

 5.(循环求解"完数")

eg.找到1000以内的所有”完数”,所谓完数是指一个数是其所有因子之和 如: 6 = 1+2+3;

 for(int i = 1; i <= 1000; i++ )
    {
        int sum = 0;
        for ( int j = 1; j < i; j++)
        {
            //找到符合的数字,添加
            if( i % j == 0 )
                sum = sum + j;
        }
        //满足条件
        if( i == sum )
            printf( "%d\n",i);
    }

6.最大公约数&最小公倍数

//最大公约数,最小公倍数   
//最小公倍数=两整数的乘积÷最大公约数

//辗转相除法
//    ① a%b得余数c
//    
//    ② 若c=0,则b即为两数的最大公约数
//    
//    ③ 若c≠0,则a=b,b=c,再回去执行①
    int m,n;
    int a,b,c;
    scanf("%d%d",&a,&b);
    m=a;
    n=b;
    //go
    while (b!=0) {
        c=a%b;
        a=b;
        b=c;//余数赋值
    }
    printf("最大公约数%d\n",a);
    printf("最小公倍数%d\n",m*n/a);

 eg.输入两个分数,输出两分数之和(要求约分)

    int a,b;
    int m,n;
    scanf("%d/%d",&a,&b);
    scanf("%d/%d",&m,&n);
    int x,y;
    x=a*n+m*b;
    y=b*n;
    //公约数
    int i,j,k;
    i=x;
    j=y;
    while (j!=0) {
        k=i%j;
        i=j;
        j=k;
    }
    printf("\n公约数%d\n",i);
    printf("%d/%d\n",x/i,y/i);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值