您当前的位置: 首页 > 学无止境 > 心得笔记 网站首页心得笔记
020第五章 循环控制结构程序05
发布时间:2021-04-18 15:43:47编辑:雪饮阅读()
程序1:
题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
程序分析:
可以用for循环实现,一般两位数则可以两层for循环进行对比,但是要构造三位数,则必须需要三层for循环。假定这里以自然自增进行三层for循环的嵌套,那么只需要在第三层,即最内层比较第一层、第二层和第三层的递增变量即可保证每个3位数内部不会出现重复。
那么至于已经产生的数字后面会否重复产生?比如123这个三位数,内部互不相同,但是是否后面还会出现123,这样会导致重复出现某个3位数,实际上这个担心是多余的。因为for循环递增变量是一直再变化的(递增的)所以不可能出现重复的3位数的。
那么接下来就是具体的实现了:
#include <stdio.h>
void main()
{
int i, j, k;
printf("\n");
for(i=1;i<5;i++)
{
for(j=1;j<5;j++)
{
for (k=1;k<5;k++) {
if (i!=k&&i!=j&&j!=k) {
printf("%d,%d,%d\n",i,j,k);
}
}
}
}
}
一个常见的错误
如果你经常从其它地方复制一些代码到你的c文件中然后进行编译的时候会发现出现类似如下错误
由于c语言提示的一般不是很明确,而且vc++6中对于这种不是非常明显的错误没有提示,我这里用的sublime中提示也是不够明确,这里说的不是非常明显的错误,一般指的是大小写括号或者空格换行中包含bom之类的,我目前用过最优化的开发工具(仅考虑提示这方面)应该算是android studio了,里面就算你空格或者换行之类的不标准,混淆有不纯的字符的时候也能在关键位置爆红。那么对于这里,我们只能查看关键的行,以及这个行的关键列,其实大多数一般就是看见关键的行,然后一般常见的错误就是比如花括号后面仅跟踪换行时候这个换行符号不标准之类的,则每次调试的时候在关键行的行前或者行后或者行中对于空格或者换行符号进行删除并重新手动补充,对于空格,有的地方可以直接删除了,大家都知道有些空格删除后是不影响程序的。然后经过这些折腾后,重新编译,再次查看是否还有提示一些关键的行和列有什么问题,就这样反反复复,直到编译完全ok为止。
这里还有一种方法,就是我个人感觉从其它地方复制来的代码,可以在纯文件,例如windows自带的记事本中粘贴下, 然后再从记事本上面复制出来,这样应该是可以去除一些不标准的字符,但是这个我自己还没有做过充足的测试,只是我直觉感觉应该是可以的,之前好像有这样处理过的,记得不太清了。是否符合当前这个情况,是否和当前环境一致等,都不得而知,不过大家如果想要知道,可以自己实践下。
使用c语言来计算圆的面积
#include <stdio.h>
void main()
{
double pi = 3.14159;
int r;
double area;
for(r=1;r<=10;r++)
{
area = pi*r*r;
if( area > 100 ){
break;
}
printf("r=%lf,area=%lf\n",r,area);
}
}
D:\cproject>gcc main.c -o m
D:\cproject>m.exe
r=0.000000,area=3.141590
r=0.000000,area=12.566360
r=0.000000,area=28.274310
r=0.000000,area=50.265440
r=0.000000,area=78.539750
这个程序虽然不是很难的,但是还是提醒下,要注意的是数据类型,这里由于Π是浮点常量,所以建议用double提高精度,无论是定义类型或者是输出的时候都是采用double精度会更好。
关键字词:c,for