标签:不能 运行 actor ret 直接 增加 pow 分享 print
问题:刚开始调试函数的题目时,不知道断点设在哪,以为放在主函数在调用函数时会自动调到下面的函数。
不断进行尝试,后来才知道原来要调试函数断点要放在函数那边,才能调试你编写的函数。
第一个函数
第二个函数
刚开始的代码第二个函数的循环有点问题
for(i=1;i<=j/2;i++){
if(j%i==0)
printf(" + %d",i);
}
i是设从1开始的。这样总会输出1.但前面已经输出一个1了所以会导致部分正确。
经过多次输出发现了这个问题,经过排查发现并修改。
主函数
int prime( int p )
{
int i;
for(i=2;i<=sqrt(p);i++){
if(p%i==0)
break;
}
if(i>sqrt(p)&&p!=1)
return 1;
else
return 0;
}
void Goldbach( int n )
{
int i,j;
for(i=2;i<=n/2;i++){
if(prime(i)==1&&prime(n-i)==1){
printf("%d=%d+%d",n,i,n-i);
break;
}
}
} 欧阳
#include<math.h>
int prime( int p )
{
int i;
if(p==1) return 0;
for(i=2;i<=sqrt(p);i++){
if(p%i==0)
break;
}
if(i>sqrt(p))
return 1;
return 0;
}
void Goldbach( int n )
{
int u,a,j;
for(u=1;u<=n;u++){
int flag=0;
for(j=1;j<=n;j++){
if(prime(u)&&prime(j))
a=u+j;
if(a==n)
{
printf("%d=%d+%d",n,u,j);
flag=1;
break;
}
}
if(flag==1) break;
}
} 我的
7-3 二进制的前导的零:我用pow(2,i)的方法来接近输入的数,运用表达式输出。但值一大就运行超时了。后来才知道
值超过了int的范围,使用double就通过了
7-5 单词长度:当时没有去完成该题目。
该代码最后有一种情况不符合
结果不太满意。因为看到最后一题有点不太理解就放弃了。后面自己去完成可以得到较好分数。以后会多去尝试。
然后自己的查错能力也要提高,就是自己多去思考,多做题。
标签:不能 运行 actor ret 直接 增加 pow 分享 print
原文地址:http://www.cnblogs.com/lzc176/p/7853251.html