700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 【C语言】for循环嵌套-等式推导

【C语言】for循环嵌套-等式推导

时间:2022-08-17 10:37:22

相关推荐

【C语言】for循环嵌套-等式推导

一个十分经典的for循环嵌套例题

问题:计算出自然数 SIX 和 NINE ( 它们满足的条件是 SIX + SIX + SIX = NINE +NINE ) 的个数cnt。其中的S、I、X、N、E各代表一个十进制数字,S>0,N>0。

(一)陷阱:我当时的想法是,这个题分别是一个三位数的三倍和一个四位数两倍的等式,然后我就掉进了陷阱(至少是我以为的陷阱,大佬的话请手下留情)

注意看题,表面上是一个三位数和一个四位数的等式,但是问题的最后,一共列出了五个字母!所以实际上那个三位数和那个四位数是用这五个字母组合而成的,并不是各自独立,一共定义3+4七个字母的样子。

(二)思路:这是多位数的递增,通过多位数递增来确定是否有相等的值,所以肯定是在高位的先不变,低位的先增加(例如百位上‘1’不变,十位上‘0’不变,个位上从‘0’开始增加。个位增加到‘9’后,十位变为‘1’,百位还是‘1’不变,个位重新从‘0’开始递增)

所以自然而然会想for循环嵌套结构,在里面的for循环增加的同时,外面的for循环语句是不变的。

#include<stdio.h>int main(){int S,I,X,N,E;int cnt=0;for(S=1;S<=9;S++){for(I=0;I<=9;I++){for(X=0;X<=9;X++){for(N=1;N<=9;N++){for(E=0;E<=9;E++){if(3*(S*100+I*10+X)==2*(N*1000+I*100+N*10+E)) cnt++;else continue;}}}}}printf("%d",cnt);return 0;}

另外,从这个题可以推及到其他类似的题,在那些题需要用到多位数递增的时候,就可以用到for循环的嵌套(例如for循环嵌套用来输入二维数组)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。