C语言入门的三个简易程序


一、打印100~200之间的素数

素数:素数又叫质数(prime number),有无限个。质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数。

方法一:

1.思路

  因为素数只能被1和它本身整除,所以我们可以写一个程序,让100到200之间的每一个数都从2开始除,一直除到他的本身减一,如果其中有一个的余数为零,就说明这个数除了本身和1以外,还能被其他数整除,就说明这个数不是素数,不进行打印,反之,则对这个数进行打印。

2.代码如下

#include<stdio.h>
int main()
{
	int m, i;
	printf("100~200之间的素数有:\n");
	for (m = 100; m <= 200; m++)
	{
		for (i = 2; i <=m-1; i++)
		{
			if (0 == m % i)
				break;
		}
		if (i >= m)
			printf("%d ", m);
	}

	return 0;
}

3.结果图

如图所示:
运行结果


方法二:

1.思路

  其实仔细思考就可以发现,如果一个数m它不是素数的话,把那些可以整除它的数全部统计起来的话,就会发现这些数是以 m \sqrt m m 为分界线的,所以在我们编写for循环时,终止条件就可以改到 m \sqrt m m ,这样就能更加节省代码运行的时间,使代码更加的高效。

2.代码如下

#include<stdio.h>
#include<math.h>
int main()
{
	int m, n,i;
	printf("100~200之间的素数有:\n");
	for (m = 100; m <= 200; m++)
	{
		n = (int)sqrt(m);
		for (i = 2; i <=n; i++)
		{
			if (0 == m % i)
				break;
		}
		if (i > n)
			printf("%d ", m);
	}

	return 0;
}

3.结果图

如图所示:
运行结果

二、打印乘法口诀表

1.思路

  这个程序就很简单了,只需要两个for循环就能后解决了,一个for循环用来控制行的范围,另一个for循环来控制列的范围,然后对数值进行打印就可以了。

2.代码如下

#include<stdio.h>
int main()
{
	int m, n;
	for (m = 1; m < 10; m++)
	{
		for (n = 1; n <= m; n++)
		{
			printf("%3d×%d=%2d",n, m, n * m);
		}
		printf("\n");
	}
	return 0;
}

3.结果图

如图所示:
运行结果

三、输出1000~2000之间的闰年

闰年的判定:1.能被4整除而不能被100整除的为闰年;
      2.或者是能被400整除的闰年。

注:这是一般的判定方法,可能不是那么的准确,更加具体的判断方法请搜索百度。

1.思路

  这个思路就和上面的第一题比较类似了,就是把1000到2000里的每一个数都进行判断,判断其是否符合可以被4整除而不能被100整除,或者是可以被400整除。要对每一个数进行判断可以使用for循环来实现。

2.代码如下

#include<stdio.h>
int main()
{
	int n;
	printf("1000~2000之间的闰年有:\n");
	for (n = 1000; n <= 2000; n++)
	{
		if ((n % 4 == 0) && (n % 100 != 0) || (n % 400 == 0))
		{
			printf("%d ", n);
		}

	}
	return 0;
}

3.结果图

如图所示:
运行结果

四、提升

  有没有感觉这样求固定的东西太死板了,比如我想求100~300之间的素数,我想我可以输入一个范围,它就能打印我想要的结果,这样就能使我的代码更加的高效,更加的人性化,不会那么死板,这样是否可行?
  答案当然是可以的,只需要把那些固定的变量进行一下更改,更改为用scanf()这个函数进行输入,就可以随意更改我们想要的范围了,大家可以试试!然后上面的代码还有一些小的细节,大家可以去理解理解,比如:%3d 这个3的含义是什么 ?等等。


希望这篇文章对大家有所收获,初次编写,请多多包涵。如有雷同,纯属巧合。

  • 4
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值