zoukankan      html  css  js  c++  java
  • c语言实践输出某个区间中不是3的倍数的偶数

    OK,先审题,我们最后要输出的那些数是需要满足两个条件的,第一个条件是,这个数不是3的倍数,第二个条件是这个数是偶数。也就是这样的数需要同时满足这两个条件的时候才把这个数输出。

    不是3的倍数这个条件在c语言中怎么表达出来呢?  先想一下它的反面,如果一个数是3的倍数改怎么表达,那么它的反面就OK了,num%3==0,表示num这个数是3的倍数,那么不是3的倍数就是 !(num%3)==0 

    偶数的条件是num%2==0这个就没什么好说的了。

    OK,还是从结果出发,最后我们肯定是要输出这些数的,所以一定会有一句

    printf("%d",num);

    那么num就需要事先定义一下

    int num;

    printf("%d",num);

    但printf语句并不是随随便便就会打印的,是需要满足一定条件的,什么条件呢?

    int num;

    if(!(num%3==0)&&(num%2==0))

    {

      printf("%d",num);

    }

     OK,我们的num是需要从用户输入的一个区间来找数的,一个一个的往过数,所以需要一个循环,以及用户输入区间。

    int num;

    int start;

    int end;

    scanf_s("%d %d",&start,&end);

    for(num=start;num<=end;num++)

    {

      

    if(!(num%3==0)&&(num%2==0))

    {

      printf("%d ",num);

    }

    }

    for循环的条件怎么想出来的,为什么是num<=end,我们想什么时候就不循环了,是不是num>end的时候,因为我们是让程序从[start,end]这个区间中找数的,你超过了就不行了,所以num>end 的反面也就是num<=end的时候就是循环继续的条件。

    用户输入的start end 是无法预估的,我们最希望用户输入的情况是start小于end这种情况,当start==end的时候也是可以的,只是比较特殊,当start>end的时候,我们就不做输出了,所以需要对满足条件的start和end才会进入循环,所以代码最后变成这个样子了。

    int main(void)
    {
    	int num;
    	int start;
    	int end;
    
    	scanf_s("%d %d",&start,&end);
    	printf("
    ");
    
    	if (start <= end)
    	{
    		for (num = start; num <= end; num++)
    		{
    			if (!(num % 3 == 0) && (num % 2 == 0))
    			{
    				printf("%d ", num);
    			}
    		}
    	}
    	else
    	{
    		printf("N/A");
    	}
    	return 1;
    
    }
    

      

     记录一下思考过程。

  • 相关阅读:
    爬取校园新闻首页的新闻的详情,使用正则表达式,函数抽离
    网络爬虫基础练习
    Mysql 使用 select into outfile
    Mysql 使用CMD 登陆
    使用Clean() 去掉由函数自动生成的字符串中的双引号
    Get Resultset from Oracle Stored procedure
    获取引用某个主键的所有外键的表
    Entity Framework 丢失数据链接的绑定,在已绑好的EDMX中提示“Choose Your Data Connection”
    添加MySql Metat Database 信息
    at System.Data.EntityClient.EntityConnection.GetFactory(String providerString)
  • 原文地址:https://www.cnblogs.com/yfish/p/9784319.html
Copyright © 2011-2022 走看看