对调数问题,我真的不想难为大家!

前面近20篇的C语言篇章,我写的都稍微较简单,因为也是打磨基础的过程,只要大家都能理解,看小说看故事一样看懂了,就满足

阳哥(头条号:阳哥说IT)编写这些文章的心意了。今天编写的这篇文章,可能稍微有一点点复杂,不过对阳哥本人来说,我一直都是将有难度的文题写成最简易的篇章,所以如果大家愿意跟随我的脚步,我保证未来大家必将收获满满,即使小白学者,上手也绝不是问题!

对调数问题,我真的不想难为大家!

好了,那接下来步入正题:说是有这么一道题,一个两位数,将它的个位和十位对调,得到另一个两位正整数,现给定一个两位正整数,问能否找出另一个对调后不同的两位正整数,使得这两个正整数之和等于他们各自的对调数之和?例如:63+47=36+74.

对调数问题

接下来先给大家介绍两个C语言中语句的特点

continue:其作用是结束本次循环,即跳过循环体中下面还未执行的语句,接着进行下一次是否执行循环的判断。

break:其作用是提前结束循环,即不再执行循环体中后面的语句以及其余的几次循环。

两者区别:continue是指只结束本次循环,而不终止整个循环的执行。break是指结束整个循环过程,不再判断执行循环的条件是否成立。

先把结果演示一下:


对调数问题,我真的不想难为大家!

编程如下:

#include

/*引用预处理命令,预处理包含stdio.h的头文件*/

main()

/*定义一个主函数,所有程序在执行前都开始于主函数,且结束于主函数*/

{

int x,y,z,x1,y1,z1,i,k,n,j=0;

/*定义整型变量x,y,z,x1,y1,z1,i,k,n,并定义j的初值为0*/

while(1)

/*while(1),其中1代表一个常量表达式,while(1) 表示无限循环,除非遇到break才会结束循环*/

{

printf("please input an integer\n");

/*请输入一个值*/

scanf("%d",&n);

/*输入函数获得的n值*/

if(n

<=10||n>=100)

/*如果n小于等于10或者n大于等于100*/

{

printf("data error\n");

/*输出“数据错误”*/

continue;

/*此次循环结束*/

}

else

/*否则,第二种情况下*/

if(n%10==0)

/*如果n除以10余数等于0,即n可被10整除,例如20,30等两位数*/

{

printf("data error\n");

/*输出“数据错误”*/

continue;

/*此次循环结束*/

}

else

/*否则,第三种情况下*/

{

x=n/10;

/*x值为n除10的结果的整数部分,即x为输入的两位数中的十位上的数字*/

y=n%10;

/*y为n除10取余部分的结果,即y为输入的两位数中的个位*/

z=10*y+x;

/*z等于10*y+x,即z为n的对调数*/

break;

/*结束本循环*/

}

}

for(i=11;i<100;i++)

/*对i值从11~99进行累加循环,即对i遍历所有的两位数*/

{

if(i%10==0)

/*如果i除以10取余后的值恒为0,其含义是除去所有的对调数是个位的数*/

continue;

/*结束本次循环*/

else

/*否则,另外一种情况下*/

{

x1=i/10;

/*x1等于i除10所得的整数部分,即x1为i的十位上的数*/

y1=i%10;

/*y1等于i除10取余所得的部分,即y1为i的个位*/

z1=10*y1+x1;

/*z1等于10*y1+x1,即z1为i的对调数*/

if(n+i==z+z1&&n!=z1)

/*如果n+i等于z+z1并且n不等于z1*/

{

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

/*输出题中要求的表达式*/

j++;

/*j值累加*/

}

else

/*否则*/

continue;

/*结束本次循环*/

}

}

if(j==0)

/*如果j值等于0*/

printf("inexistince");

/*上面j=0条件成立输出“不存在”*/

return 0;

/*返回空值,0指空,没有,即将0返回给主函数main,其目的是告诉给main函数此程序执行完了*/

}

如果大家有问题,欢迎大家留言讨论,我都会一一解答呦,欢迎关注,给你不一样的自己!


分享到:


相關文章: