C语言中的两个问题

来源:百度知道 编辑:UC知道 时间:2024/04/30 10:33:51
一.1)int x,y=5;
if(x=4)
x+=y;
结果为:9

2)int x,y=5;
if(x==4)
x+=y
结果为:812
这两个结果是怎么得出的?(1)中“=”是赋值,所以x是常量,恒等于4。但是(2)的“==”不也是说x等于4吗?为什么结果不一样?

二.1)判断一个数是否为素数,程序如下:
main()
{ int x,i;
scanf("%d",&x);
for(i=2;i<x;i++)
if(x%i==0) break;
if(i>=x) printf("YES");
else printf("NO");
}
2)求大于m的k个素数
main()
{ int m,k,i,x,n;
scanf("%d%d",&m,&k);
for(x=m+1;n<k;x++)
{ for(i=2;i<x;i++)
if(x%i==0) break;
if(i>=x); {printf("%d",x); n++}
}
}
程序(1)中的break执行了之后,语句else printf("NO");继续执行
但是程序(2)中的break执行后,break后的语句将不再执行。
这两种情况要怎么区别?能不能解释一下为什么。
是不是这样理解的:这两个里每个程序的第二个FOR循环后的两个if语句,是并列关系,只要满足条件,两个if语句可以同时执行?不是这样的话要怎么理解?
可是第一个程序里的if的i>=x的条件

再改了下

差不多吧,else printf("NO"); 和前面if是一体的。if then else 结构中如果 不满足 if 后的条件则执行else。

电脑执行指令是一条条的,不会互相影响。说if并列不太合适,因为(1)(2)中的两个if都是属于不同层次,在for循环内的那个执行很多遍,在外面的就1遍。

ps:程序的美观程度很重要,尤其是万恶的C