这程序请指教.
这程序请赐教..
# include <stdio.h>
# define composite 15
//值乘以2~n的结果不超过composite
int main(void){
int plain[composite];
int i = 0;//循环值乘以2~n的数,得到非素数
int j = 2;
int x = 2;//循环总多少个值
//int replace = 0;
int z = 0;
for(z=0;z<composite;z++){
plain[z] = 1;
printf("%d\t",plain[z]);
}
for(i=2;i<composite;){// i填满composite 终止循环 即i==composite
//replace=1;
plain[i*x] = 0;
printf("x = %d",x);
printf("plain[i*x]=%d %d*%d=%d plain[i]=%d\n",plain[i*x],i,x,i*x,plain[i]);
if(plain[i]!=0){
if(x<composite){
x++;
printf("x = %d\n",x);
}
//printf("%d\n",plain[i]);
if(x*i>composite){
i++;
//replace++;
x = 2;
printf("i = %d x = %d\n",i,x);
}
}else{
//while(plain[i]==0){
i++;
x = 2;
// break;
//}
}
//plain[i] = 1;
//printf("%d i = %d x = %d\n",plain[i],i,x);
}
while(j<composite){
if(plain[j])
printf("%d\t",j);
j++;
}
return 0;
}
结果错了,这程序那里出问题了?各位老师帮忙解答分析哦。谢谢
------解决思路----------------------
代码功能归根结底不是别人帮自己看或讲解或注释出来的;而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。
提醒:再牛×的老师也无法代替学生自己领悟和上厕所!
单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。
# include <stdio.h>
# define composite 15
//值乘以2~n的结果不超过composite
int main(void){
int plain[composite];
int i = 0;//循环值乘以2~n的数,得到非素数
int j = 2;
int x = 2;//循环总多少个值
//int replace = 0;
int z = 0;
for(z=0;z<composite;z++){
plain[z] = 1;
printf("%d\t",plain[z]);
}
for(i=2;i<composite;){// i填满composite 终止循环 即i==composite
//replace=1;
plain[i*x] = 0;
printf("x = %d",x);
printf("plain[i*x]=%d %d*%d=%d plain[i]=%d\n",plain[i*x],i,x,i*x,plain[i]);
if(plain[i]!=0){
if(x<composite){
x++;
printf("x = %d\n",x);
}
//printf("%d\n",plain[i]);
if(x*i>composite){
i++;
//replace++;
x = 2;
printf("i = %d x = %d\n",i,x);
}
}else{
//while(plain[i]==0){
i++;
x = 2;
// break;
//}
}
//plain[i] = 1;
//printf("%d i = %d x = %d\n",plain[i],i,x);
}
while(j<composite){
if(plain[j])
printf("%d\t",j);
j++;
}
return 0;
}
结果错了,这程序那里出问题了?各位老师帮忙解答分析哦。谢谢
------解决思路----------------------
代码功能归根结底不是别人帮自己看或讲解或注释出来的;而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。
提醒:再牛×的老师也无法代替学生自己领悟和上厕所!
单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。