c语言编程 编写函数:用来判断一个整数是否满足“用4除余1,用5除余3,用7除余4”

编写函数:用来判断一个整数是否满足“用4除余1,用5除余3,用7除余4”,满足则返回1,不满足返回0,然后编写main函数,通过调用该函数显示出200~500之间满足该条... 编写函数:用来判断一个整数是否满足“用4除余1,用5除余3,用7除余4”,满足则返回1,不满足返回0,然后编写main函数,通过调用该函数显示出200~500之间满足该条件的数。〉〉这是我写的程序#include<stdio.h>#include<math.h>int pdf(int x){ if(x%4==1) { if(x%5==3) {if(x%7==4) return 1;}} else return 0;}main(){ int i; for(i=200;i<=500;i++) { if(pdf(i)==1 ) // 问题在这(为什么一定要if(pdf(i)==1 ),而不是if(pdf(i) ) printf("%d\n",i);}}图1是if(pdf(i) )下的结果,图2是if(pdf(i)==1 )下的结果理论上这两个写法效果应该是一样的,可实际却不一样,为什么呢 展开
 我来答
娱乐小八卦啊a
高粉答主

2020-05-21 · 娱乐小八卦,天天都知道
娱乐小八卦啊a
采纳数:260 获赞数:117902

向TA提问 私信TA
展开全部

代码如下:

#include "iostream"

using namespace std;

void main(){

    int i;

    for(i=1;i<=500;i++){

        if(i%3==2 || i%5==3 || i%7==2)

    cout<<i<<' ';

    }

}


扩展资料

C语言for循环(for语句)详解

除了while循环,C语言中还有 for 循环,它的使用更加灵活,完全可以取代 while 循环。

for 循环的一般形式为:

for(表达式1; 表达式2; 表达式3){

    语句块

}

它的运行过程为:

1) 先执行“表达式1”。

2) 再执行“表达式2”,如果它的值为真(非0),则执行循环体,否则结束循环。

3) 执行完循环体后再执行“表达式3”。

4) 重复执行步骤 2) 和 3),直到“表达式2”的值为假,就结束循环。

上面的步骤中,2) 和 3) 是一次循环,会重复执行,for 语句的主要作用就是不断执行步骤 2) 和 3)。

“表达式1”仅在第一次循环时执行,以后都不会再执行,可以认为这是一个初始化语句。“表达式2”一般是一个关系表达式,决定了是否还要继续下次循环,称为“循环条件”。“表达式3”很多情况下是一个带有自增或自减操作的表达式,以使循环条件逐渐变得“不成立”。

White_MouseYBZ
2017-05-08 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:7245万
展开全部

问题根本不在你标出的“问题在这(……”那里。问题在函数pdf中,没有全部返回确定值:设x%4==1成立而x%5==3不成立,看看pdf能返回什么?改一下:

int pdf(int x){
    if(x%4==1 && x%5==3 && x%7==4)
        return 1;
    else
    return 0;
}
追问
嗯,按你所说的,成功了,两个表达效果都对了,可是能不能稍微详细解释一下“没有全部返回确定值“,我那个写法错在哪了呢?
已经决定采纳你的了
追答
按照图片上的代码,pdf中的else是与if(x%4==1)配对的,就是说x%4==1成立时再由{后的if(...决定返回值,而x%4==1不成立时就返回0;但是若x%4==1成立,而if(x%5==3)不成立,代码却什么都没有返回——这就是所谓“没有全部返回确定值”,有不知道该返回什么值的时候,而函数名前是int,要求无论什么情况下都得返回一个确定的int值……
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
KevinDears
2017-05-08 · TA获得超过4566个赞
知道大有可为答主
回答量:1万
采纳率:58%
帮助的人:1089万
展开全部
#include<stdio.h>
#include<math.h>
int pdf(int x)
{
    if(x%4==1)
    {
     if(x%5==3)
     {
         if(x%7==4)
             return 1;
      }
    }
    else
        return 0;
}

main()
{
    int i;
    for(i=200;i<=500;i++)
    {
        if(pdf(i)==1 ) // 问题在这(为什么一定要if(pdf(i)==1 ),而不是if(pdf(i) )
            printf("%d\n",i);
    }
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式