C语言循环章节几个重要的函数总结~

一、数字输出问题

1、求一个数字是几位数

int GetFigures(int n)

{

                                              inti=0;

                                              do

                                              {

         n/=10;

         i++;

                                              }while(n!=0);

   return i;

}                                           

2、逆序输出每一位数

while循环

void PrintfReverse(int num)

{

  int tmp;

  if(num<0)

   {

            printf("-");

            num=-num;

   }

  while(num!=0)

  {

    tmp=num%10;

    num/=10;

    printf("%d ",tmp);

  }

}

3、正序输出每一位数

void PrintOrder(int n)

{

         intm=1;

         for(inti=1;i< GetFigures(n);i++)

                   {

                             m*=10;

                   }

         while(n!=0)

         {

                   printf("%d\n",n/m);

                   n%=m;

                   m/=10;

         }

}

 

int main()

{

         PrintOrder(2178);

         return0;

}

二、完数

输出完数需要三步

1、判断是否为完数

2、输出完数

3、主函数调用

所有这类需要判断并输出的问题都要采用这样的套路,切勿整个代码全都混乱的挤在一个函数里,不符合规范,且可读性不高。

bool IsPerfect(int n)

{

         inttem=0;

         for(inti=1;i<n;i++)

         {

                   if(n%i==0)

                   {

                            tem+=i;

                   }

         }

         returntem==n;

}

 

void Show(int i)

{

         boolflg=turn;//状态变量

         printf("%d\n",n);

         for(inti=1;i<n;i++)

         {

                   if(n%i==0)

                   {

                            if(flg)

                            {

                                     flg=false;

                                     printf("%d\n",i);

                            }

                            else

                            {

                                     printf("%d\n",+i);

                            }

                   }

         }

}

 

int main()

{

         for(inti=1;i<1000,i++)

         {

                   if(IsPerfect(i))

                   {

                            Show(i);

                   }

         }

         return0;

}

三、比赛

void Match()

{

         for(chara='X';a<='Z';a++)

         {

                   for(charb='X';B<='Z';b++)

                   {

                            for(charc='X';c<='Z';C++)

                            {

                                     if(a!='X'&&c!='X'&&c!='Z'&&a!=b&&b!=c&&a!=c)

                                     {

                                               printf("A->%c\n,B->%c\n,C->%c\n",a,b,c);

                                     }

                            }

                   }

         }

}

 

int main()

{

         Match();

         return0;

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值