c语言在线等!
#include<stdio.h>#include<math.h>main(){intn;scanf("%d",n);isprime(n);}isprime(intx){...
#include<stdio.h>
#include<math.h>
main()
{
int n;
scanf("%d",n);
isprime(n);
}
isprime(int x)
{
int i;
if(x==1) printf("%d不是素数",x);
else if(x==2) printf("%d是素数",x);
else{
for(i=2;i<=sqrt(x);i++){
if(x%i==0){
printf("%d不是素数",x);
break;}
if(i==sqrt(x))printf("%d是素数",x);}
}
}
为什么不行呢
#include<stdio.h>
#include<math.h>
main()
{
isprime(int x);
int n;
scanf("%d",n);
isprime(n);
}
isprime(int x)
{
int i;
if(x==1) printf("%d不是素数",x);
else if(x==2) printf("%d是素数",x);
else{
for(i=2;i<=sqrt(x);i++){
if(x%i==0){
printf("%d不是素数",x);
break;}
if(i==sqrt(x))printf("%d是素数",x);}
}
}
申明了函数为什么还是不行呢 展开
#include<math.h>
main()
{
int n;
scanf("%d",n);
isprime(n);
}
isprime(int x)
{
int i;
if(x==1) printf("%d不是素数",x);
else if(x==2) printf("%d是素数",x);
else{
for(i=2;i<=sqrt(x);i++){
if(x%i==0){
printf("%d不是素数",x);
break;}
if(i==sqrt(x))printf("%d是素数",x);}
}
}
为什么不行呢
#include<stdio.h>
#include<math.h>
main()
{
isprime(int x);
int n;
scanf("%d",n);
isprime(n);
}
isprime(int x)
{
int i;
if(x==1) printf("%d不是素数",x);
else if(x==2) printf("%d是素数",x);
else{
for(i=2;i<=sqrt(x);i++){
if(x%i==0){
printf("%d不是素数",x);
break;}
if(i==sqrt(x))printf("%d是素数",x);}
}
}
申明了函数为什么还是不行呢 展开
2个回答
展开全部
1 错:++n是先完成自加1再计算,n++是先把n用于计算后在自加1,计算时调用数值不同,最后n值一样。
2错:程序在计算1<=x<=10时是先判断1《=X是否为真,真为1假为0,然后再用1或0与10比较,值是真为1
3: int x=2,y=8;则计算y/=x+5是y=8/(2+5)=8/7取整之后去掉小数部分是1
4:int a=6,b=3,c=5,d;则计算d=a+b>c;后d=6+3>5结果为真d值为1
5:int a=0,b=0,c=0,d;则计算d=++a||++b&&++c中是先做++a,完成后进入表达式值为1因为||运算是最后算,前面++a为1后电脑就直接得出表达式值为1并赋值给d,b和c因为没有运算所以值仍为0:最后d,a,b,c为1 1 0 0;
6:设int a=0,b=0,c=0,d;则计算d=a--&&b--||c--;后,d,a,b,c的值是多少? 0 -1 0 -1
在这个算式中先计算a--,运算过程是先用0进入表达式在自减1,当0进入a--&&b--后明显前面为假,b--就不运算了,所以a为-1而b为0;||运算前面为假所以还要继续运算后面的C--并且是先用C的0值进入运算后再自减1,从而||运算两边为假,d为0而c进入了运算为-1;
7:两边是等价的,代入(1 0),(1 1),(0 0)三组数一试便知:
8:不等价,一个是强制类型转换,原来可能是别的类型,一个是定义参数类型.
9:i++,sum=sum+i是两个语句,不能进两个语句进表达式三。
10:在32位系统中sizeof(X)就是4个字节。Y==4:
2错:程序在计算1<=x<=10时是先判断1《=X是否为真,真为1假为0,然后再用1或0与10比较,值是真为1
3: int x=2,y=8;则计算y/=x+5是y=8/(2+5)=8/7取整之后去掉小数部分是1
4:int a=6,b=3,c=5,d;则计算d=a+b>c;后d=6+3>5结果为真d值为1
5:int a=0,b=0,c=0,d;则计算d=++a||++b&&++c中是先做++a,完成后进入表达式值为1因为||运算是最后算,前面++a为1后电脑就直接得出表达式值为1并赋值给d,b和c因为没有运算所以值仍为0:最后d,a,b,c为1 1 0 0;
6:设int a=0,b=0,c=0,d;则计算d=a--&&b--||c--;后,d,a,b,c的值是多少? 0 -1 0 -1
在这个算式中先计算a--,运算过程是先用0进入表达式在自减1,当0进入a--&&b--后明显前面为假,b--就不运算了,所以a为-1而b为0;||运算前面为假所以还要继续运算后面的C--并且是先用C的0值进入运算后再自减1,从而||运算两边为假,d为0而c进入了运算为-1;
7:两边是等价的,代入(1 0),(1 1),(0 0)三组数一试便知:
8:不等价,一个是强制类型转换,原来可能是别的类型,一个是定义参数类型.
9:i++,sum=sum+i是两个语句,不能进两个语句进表达式三。
10:在32位系统中sizeof(X)就是4个字节。Y==4:
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询