前面近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函数此程序执行完了*/
}
如果大家有问题,欢迎大家留言讨论,我都会一一解答呦,欢迎关注,给你不一样的自己!