C语言的习题学习1

努力学习C语言的牧狗](C程序经典100例)———第一题

鄙人是一只刚接触C语言的小萌新,对于编程有极大的热情,在一位热情的老大哥(@我才是真正的17号)的“忽悠”下,
我成功入坑,今后的填坑生涯万望各位多多关照!       q'(^_^)'p	(编者的话)

致敬老大哥,先从最基础的C语言经典100例开始编起;
第一题
题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
思路:很多时候我们在拿到一个题目时,不加思索直接去做是一种非常鲁莽的行为,毕竟如果中间发生错误会非常浪费时间。磨刀不误砍柴功,有的时候打一个腹稿尤为重要。(当然您要是那种写完一道题比我看题都快的编程的大佬,请忽略我的话)。
当我们拿到这一题我们会很清晰的发现,这是我们高中所学的排列组合问题,考察的是A与C的灵活运用*[A为排列,而C为组合]:当然,在我看到这一题时想到了四种数学解法:
因为不会在电脑上打数学函数公式就只能手写了~~>_<~~
当然,在对于C语言来说,思路需要通俗易懂,同时需要在代码层面让人理解。对于这四种解法,第二种应该是首推的。其次是第一种和第三种,而第四种做法不易实现。
解:(第二种做法)
在这里插入图片描述
这一题的难点和考察的是如何避免一个三位数出现相同的数字,我们就需要在三层for语句中加入if的判断语句,将x=y;x=z;y=z;这三种情况避免,在括号中需加入&&逻辑与(and)来满足三个式子同时成立。
并在输入printf里加入了\t一词,{\t意为水平制表的含义,相当在每个词后空了四个空格,让结果更为赏心悦目}但这个做法虽然结果是对的,但含义有些问题,我们需要求得一个三位数,而不是三个数字结合,所以最佳的输出应是printf("%d",x100+y10+z);

本题也算是完成了,作为一名小白,略显拙见,只为抛砖引玉,如若有解释不到地的还望大方之家贻笑大方,谢谢关照! =.=

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值