循环的数学应用————24.对调数问题

要求说明:一个两位正整数,将他的个位和十位对调,得到另一个两位正整数,我们称这两个正整数互为对调数。现给定一个两位正整数,问能否找出另一个对调后不同的两位正整数,使得这两个正整数之和等于他们各自对调数之和?例如:63+47=36+74,。编写程序为输入的一个两位数这哦到满足如上要求的数或输出“不存在”。

//对掉数问题


#include <stdio.h>


int main(int argc, char **argv)
{
    int x,y,z,x1,y1,z1,i,k,n;
    int flag = 0;                               // 标志位
    while(1)                                    
    {
        printf("please input an integer\n");
        scanf("%d",&n);                         //输入n值
        if(n <= 10 || n >= 100)                 //当n小于等于10或大于等于100时输出错误
        {
            printf("data error!\n");
            continue;                           //跳出本次循环
        }
        else if(n %10 == 0)                     //当n个位数是0时,输出错误
            {
                printf("data error!\n");
                continue;                       //跳出本次循环
            }
        else
        {                                         //数据转换,x十位y个位z对调数              
            x = n/10;
            y = n%10;
            z = 10 * y + x;
            break;                              //跳出循环
        }
        
    }
    for( i = 11; i < 100; i ++)                 //遍历两位数
    {
        if(i % 10 == 0)                         //个位数是0,跳出本次循环
            continue;
        else
        {
            x1 = i /10 ;                        //数据转换x1十位数y1个位数z1对调数
            y1 = i%10;
            z1 = 10 *y1 + x1;
            if( n + i == z + z1 && n != z1)     //判断题目条件,n、i之和与各自对调数之和是否相等且n、i不互为对调数
            {
                printf("%d + %d = %d +%d\n",n,i,z,z1);//要求格式输出
                flag = 1;                               //修改标志位
            }
            else
                continue;                           //否则结束本次循环
        }
    }
    if( flag == 0)                                  //判断标志位是否改变
    {
        printf("inexistince\n");                    //未改变,则无输出,输出不存在
    }
    return 0;

}

样例输入输出:

65
65 + 12 = 56 +21
65 + 23 = 56 +32
65 + 34 = 56 +43
65 + 45 = 56 +54
65 + 67 = 56 +76
65 + 78 = 56 +87
65 + 89 = 56 +98

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值