今天就是第三天了,为了加快我们的进度,建议各位浏览“菜鸟教程”“w3cshool”“CSDN”等网站学习c语言相关基础,上面的教程详细但基础,很适合入门。
我们接下来继续解决九九乘法表的问题:
九九乘法表这个代码打印出来的九九乘法表,会非常的整齐,美观,但是也多了很多繁琐的东西,但体现一个人的代码功底之一我想就是美观了。
我们今天继续讲算法题
第一题:
现在有1,2,3,4,四个数字,他们之间能组成多少个互不相同且无重复的三位数?都是多少?并打印出来。
看到题目第一步不是去敲代码!!!
先思考,先想思路,先想想需要用到什么语句,有什么需要注意的东西。可以拿一张纸来记下来你认为的办法,还有需要避免的雷区。
我们可以直接得到一点:需要用到for循环遍历每一个由1,2,3,4,组成的三位数,并且还需要排除重复的,相同的。
那就是:
1.需要用到for循环语句
2.需要排除重复的三位数
3.需要排除相同的三位数
那我们又出现了问题,怎么去排除呢?
很简单,用if语句,如果这个三位数满足这个条件,那么就允许他打印这个三位数出来,如果这个三位数不满足,我们就不打印。
所以我们只需要把2.3.改成需要用到if语句就行了。
那我们需要怎么去做呢?
别急,一步步来。
第一步,用for循环嵌套遍历每一个由这四个数字组成的三位数。
第一步如果我们就这么执行的话,会发现打印的三位数中有重复的数字,那我们该怎么解决呢?
就是我们之前讲到的,用if语句:
if语句【忽视下面的歌词】
我们用if语句就可以完美解决这个不能重复这个问题。
但我们在if语句的条件里面写了 “!=”这个东西,这是什么意思呢?
!在c语言里是非的意思,非等于也就是不等于的意思,a != b的意思就是a不等于b,这也就避免了出现重复数字的情况。
&&在c语言里是与的意思,也就是两边的条件同时满足才可以继续下去。
if语句在这里的意思就是当a不等于b且b不等于c并且a不等于c就打印这个三位数,如果大家感兴趣的话,可以自己下去打印一下尝试一下,也可以优化我的代码,尝试用更少的代码来解决这个问题。
第二道题:
用户输入三个整数,你将这三个数排序,由大到小输出出来。
我们第一步应该是什么?
先敲代码?
不
我们应该先分析一下雷区和用的东西。
1.用scanf获取用户输入的东西
2.需要用几个空变量来临时储存用户输入的整数
3.需要用到if语句
我们先尝试写第一版:
#include <stdio.h>
int main ()
{
int a = 0 ;
int b = 0 ;
int c = 0 ;
int max = 0 ;
int count = 0 ;
int min = 0 ;
scanf ("%d\n%d\n%d",&a,&b,&c);
if (a >= b && a >= c)
{
max = a;
if (b >= c)
{
count = b; min = c;
}
else
{
count = c; min = b;
}
}
if(c >= a && c >= b)
{
max = c;
if (a >= b)
{
count = a; min = b;
}
else
{
count = b; min = a;
}
}
if (b >= a && b >= c)
{
max = b;
if(a >= c)
{
count = a; min = c;
}
else
{
count = c; min = a;
}
}
printf ("%d\t%d\t%d",max,count,min);
return 0 ;
}
以上就是代码,可以自己复制去dev-c++上自己敲一下看看,这不是最优算法,还有更优,欢迎大家去自己钻研。
最后,如果有什么不清楚的,不了解的,都可以在下面评论指出。
网友评论