for循环的基础练习

无论是对于编程菜鸟或者是大牛来说,for循环是一个不可或缺的C语言语句,在这里其定义如何
且按下不表,只是单纯的放几个for循环的适用场景来感受一下。
for(表达式1;表达式2;表达式3),请对应于下图来认真体会一下
for循环
好的,多说无益,还是上上手来实际操作一下
第一题:打印100~200 之间的素数
在做这道题的时候,个人建议自己先想清楚什么是素数,如何判断一个数是不是素数,切忌没有想
清楚就直接上手,建议在实操之前先写一下伪代码
以下提供三种方式来处理这个问题:
1.有多少个数就判断多少次,这种方法简单明了,一眼即懂,但是大大增加了代码的循环次数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void IsPrime1()
{
int i = 100;
for(i=101;i<200;i++)
{
int j = 2;
for(j=2;j<i;j++)
{
if(i%j == 0)
break;
}
if(j >= i)
printf("%d ",i);
}
}

2.这一种较第一种减少了大概一般的循环次数,提高了代码效率

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void IsPrime2()
{
int i = 100;
for(i=101;i<200;i++)
{
int j = 2;
for(j=2;j<200/2;j++)
{
if(i%j == 0)
break;
}
if(j >= (i/2))
printf("%d ",i);
}
}

3.此时的循环次数由n级数骤降到了sqrt(n)级上,但是针对这一种算法,一定要拎清楚输出的条件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void IsPrime3()
{
int i = 100;
for(i=101;i<200;i+=2)
{
int j = 2;
for(j=2;j<sqrt(1.0*i);j++)
{
if(i%j == 0)
break;
}
if(j >= sqrt(1.0*i))
printf("%d ",i);
}
}

sqrt()是C语言函数库中封装好的函数,其在库中对参数分别为double,float,long double,有着三种不同的重载方式,此段代码中sqrt()中参数为1.0*i即是为了满足参数,方能调用该函数,切记要加头文件<math.h>
二.输出乘法口诀表
因为要输出成如图界面,一定要注意循环终止条件
九九乘法表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
void mul()
{
int i = 0;
for(i=1;i<=9;i++)
{
int j = 0;
for(j=1;j<=i;j++)
{
int k = i*j;
printf( "%d*%d = %2d ",j,i,k);
}
printf("\n");
}
}

三. 判断1000年—2000年之间的闰年

1
2
3
4
5
6
7
8
9
10
11
void IsLeapYear()
{
int year;
for (year = 1000; year <= 2000; year++)
{
if (year % 400 == 0 || year % 4 == 0 && year % 100 != 0 )
{
printf("%d ", year);
}
}
}

0%