/*下面的是我自己写的,运行结果为64不知道是否正确*/
#include<stdio.h>
int main()
{
int i,j,count[90],oppsite[90],k=0,m=0;//count[90]放两位数,oppsite[90]放对调后的数
for(i=1;i<=9;i++)
{
for(j=0;j<=9;j++)
if(i!=j)
{
count[k]=i*10+j;
oppsite[k]=j*10+i;
printf("%3d,%3d\n",count[k],oppsite[k]); //输出并查看两位数及对调后的数是否正确
k++;
}
}
printf("\n");
for(i=0;i<k;i++)
{
for(j=i+1;j<k;j++)
{
if(count[i]*count[j]==oppsite[i]*oppsite[j])
//一个数永远只能往后乘,所以不会重复
{
m++;
printf("%2d*%2d = %2d*%2d =%-6d",count[i],count[j],oppsite[i],oppsite[j],count[i]*count[j]);
if(m%4==0)
printf("\n");
}
}
}
printf("共有%d对这种性质的两位数\n",m);
return 0;
}
/*此处以下为答案,因为答案错误太多,所以我不知道这个是否是正确的*/
#include <stdio.h>
void main()
{
int m,n,x,y,m1,n1,x1,y1,k=0;
for(m=11;m<=98;m++)
for(n=m+1;n<=99;n++)
{
x=m/10;
y=m%10;
x1=n/10;
y1=n%10;
m1=y*10+x; //计算 a,b 的逆序数 m1,n1
n1=y1*10+x1;
if(m*n==m1*n1 && m<m1 && m<n1)
{
k++;
printf("%d*%d=%d*%d=%d ",m,n,m1,n1,m*n);
if(k%4==0) printf("\n");
}
}
printf("\n 共有%d 对\n",k);
}
标签:count,10,13,十位,oppsite,62,m1,printf,n1 From: https://blog.csdn.net/2301_77213543/article/details/144073512