
c语言编程 编写函数:用来判断一个整数是否满足“用4除余1,用5除余3,用7除余4”
代码如下:
#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”很多情况下是一个带有自增或自减操作的表达式,以使循环条件逐渐变得“不成立”。
问题根本不在你标出的“问题在这(……”那里。问题在函数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值……
#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);
}
}