在C语言中如何打印某个范围中满足某些条件的数(素数,闰年,水仙花数等)

简介: 在C语言中如何打印某个范围中满足某些条件的数(素数,闰年,水仙花数等)

前言

>在我们编程中,经常会遇到这样一个问题,要求我们编写一个程序来筛选某个范围里某些特殊的数。下面让我们用素数的例子来讲解一下几种具体的实现方法


一.For语句

1.For语句的使用场景

在c语言中,for语句通常适用于循环次数已知的场景。其初始化通常是一个赋值语句,一般用于循环控制变化量的初始化,当然也可以给其他变量初始化。

2.具体for语句的基本用法

以下为MSDN中对for的解释

17f5f37d183b47ecbecc5179bb5856e9.png


(1) for语句括号中三个部分均是语句,用分号’;'隔开,而且三个语句均可以省略,可以省略部分或者全部。

(2) for语句中括号中的三个部分分别代表 <初始化>,<条件表达式>,<控制变量增量>

举一个简单的例子:

#include<stdio.h>
int main()
{
  int i;
  for (i = 1; i < 100; i++)
  {
    printf("%d ", i);
  }
  return 0;
}


"i=1"即为循环开始时对i的初始化,"i<100"是for循环进行的条件,"i++"是控制变量的增量.


需要注意的是:

如果在上面你给i初始化为0,即"int i=0;“,而在下面循环中,第一个条件你又将i初始化为"1”,那么此时,for循环会按着for括号(即i=1)里面的初始化运行


二.打印素数

1.什么是素数

素数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。

2.具体实现方法

1)基本方法

利用for循环。

下面我们来用代码具体实现一下。

//打印从100~200之间的素数
int main()
{
  int n, i;
  for (n = 100; n <= 200; n++)
  {
    for (i = 2; i < n; i++)
    {
      if (n % i == 0)
      {
        break;
      }
    }
    if (n==i) //被1和它自身整除是素数
    {
      printf("%d ",n);
    }
  }
  return 0;
}

结果如下

85555b16279c475ebd263402a0242471.png


分析代码

1*使用for循环嵌套的方式实现双层循环,其中第一层循环是让n自己从100增加到200,第二层循环是让i从2开始增加到n。

2*其中第一层循环的目的比较简单不再缀叙,第二层的循环的目的是配合里面的if语句达到筛选的目的。当n%i时如果等于0,则证明n除了1和它本身以外还有其他因数,此时通过break让循环停止。而当程序遍历了2-n都没有发现其他因数,退出第二层循环,此时i应该等于n。用if判断(n==i)条件满足时,即可证明此时的n为素数。

三.其他例子

通过以上例子,我们可以发现,其实只要改变for语句中的条件,那么除了素数,我们还可以随心所欲的打印其他范围中满足其他条件的特殊值


1.打印闰年

代码如下

//打印1000-2000年之间的闰年
//闰年是公历中的名词。闰年分为普通闰年和世纪闰年。
//普通闰年 : 公历年份是4的倍数的,且不是100的倍数,为普通闰年。(如2004年就是闰年);
//世纪闰年 : 公历年份是整百数的,必须是400的倍数才是世纪闰年(如1900年不是世纪闰年,2000年是世纪闰年)
#include <stdio.h>
int main()
{
  int year;
  int a = 0;
  int b = 0;
  int c = 0;
  for (year = 1000; year < 2001; year++)//年份从1000增加到2000
  {
    if (year % 4 == 0 && year % 100 != 0)//普通闰年
    {
      printf("%d ", year);
      a++;
    }
    if (year % 400 == 0)//世纪闰年
    {
      printf("%d", year);
      b++;
    }
  }
  c = a + b;//所有闰年之和
  printf("\n");//换行
  printf("闰年共%d个", c);
  return 0;
}

运行结果

00c8d2b306aa40aca1cf13cbfdb0c09f.png


2.打印水仙花数

代码如下

//输出所有的“水仙花数”。所谓“水仙花数”是指一个3位数,其各位数字立方之和等于该数本身。
//例如,153是一个水仙花数,因为153 = 1³ + 5³+3³
#include<stdio.h>
int main()
{
  printf("输出所有的水仙花数:\n");
  int i, a, b, c;
  for (i = 100; i <= 999; i++) //整数的取值范围
  {
    int a = i % 10;//个位 
    int b = (i / 10) % 10;//十位 
    int c = i / 100;//百位
    if (i == a * a * a + b * b * b + c * c * c) //判断各个位的数字立方之和是否等于该数
      printf("%d\n", i);
  }
  return 0;
}

运行结果

060aeb5d6df94a4c82f494830020d6ae.png


四.总结

好了,以上就是今天要介绍的所有内容了,今天通过具体例子素数介绍了for语句的用法以及怎样打印某个范围中的某些满足条件的数,比如闰年,水仙花数(闰年,水仙花数的解释及解题思路都放在代码里)。还有其他特殊的数各位都可以通过以上内容的思路自己具体去实现哦。


因个人水平不足导致文章中出现的错误欢迎在评论区或者私信我指出,如果有什么问题想要与我讨论也欢迎评论或者私信我哦,博主看到后会第一时间回复的。


ps:

今天花了太长时间了就先到这吧,过段时间还会补充一下用函数解决该类问题的。


目录
相关文章
|
6月前
|
C语言
C语言初阶:如何判断是否为素数并且输出
C语言初阶:如何判断是否为素数并且输出
52 0
|
7月前
|
算法 C语言
C语言 0~10000 水仙花数 判断。
C语言 0~10000 水仙花数 判断。
70 0
|
6月前
|
C语言
C语言实现水仙花数与99乘法表
C语言实现水仙花数与99乘法表
|
6月前
|
C语言
【C语言刷题每日一题】——打印100到200之间的素数
【C语言刷题每日一题】——打印100到200之间的素数
|
6月前
|
C语言
C语言----寻找100~999范围内的质数--素数
C语言----寻找100~999范围内的质数--素数
|
6月前
|
C语言 Windows
C语言素数的不同求法
C|素数的不同求法及在线测试比较
|
6月前
|
C语言
C语言---函数----100~n之间的素数
C语言---函数----100~n之间的素数
|
6月前
|
存储 C语言 C++
【C语言刷题系列】水仙花数的打印及进阶
【C语言刷题系列】水仙花数的打印及进阶
|
6月前
|
C语言
C语言----利用函数调用找某个范围内的素数。
C语言----利用函数调用找某个范围内的素数。
|
6月前
|
C语言
【C语言】输入一个正整数,判断其是否为素数
【C语言】输入一个正整数,判断其是否为素数
175 0