一、数字输出问题
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;
}