扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
1,for循环的条件错了,应该是大于号。
公司专注于为企业提供网站建设、网站设计、微信公众号开发、购物商城网站建设,成都小程序开发,软件按需求定制设计等一站式互联网企业服务。凭借多年丰富的经验,我们会仔细了解各客户的需求而做出多方面的分析、设计、整合,为客户设计出具风格及创意性的商业解决方案,成都创新互联公司更提供一系列网站制作和网站推广的服务。
2,math.h中的函数用的时候要慎重,这些都是用来做复杂的数学计算的,时间开销都很大。
3,求余只能对整数操作,这点是必然的。但浮点数是可以转换成整数的,可以用强制类型转换,或者设一个整型的中间变量。注意浮点数转整数的时候是舍入的。当然,这里只是说这个事,不建议这样做。
建议的做法有两个,简单点延用原有的思路,可以自己写一个求10的k次方的函数,用整数进行运算。
int pow10n( int k )
{
r = 1;
for(i=0; i k ; ++i)
r *= 10;
return r;
}
复杂点的做法是把求10的k次方这个运算和拆分n的循环嵌在一起,这个应该是正统的做法。
for( k=0; k3; ++k )
{
n %= 10;
}
当然,这个算法得到的结果是逆序的,4、3、2、1
这有两个办法,一个是把结果顺序放到数组中,输出的时候把顺序倒过来,说白了是用中间变量。
另外一个办法是用栈,或者用递归(本质上也是用的栈),直接按逆序出结果。当然,这个方法对初学者有点难度了。
#includestdio.h
#include stdlib.h
#include math.h
int main(void)
{
double a;
double sum;
for(a=0;a63;a++)
{
sum =pow(2,a);
sum+=sum;
}
printf("总共需要的麦子数为:%f",sum);
return 0;
}
以上是更改后的代码
原因可能有二:
1. main需要返回一个int值
所以将“void main”改为“int main(void)”;在代码尾部添加" return 0;"
2. pow(x,y) 所返回值的类型为double,而float所涵盖的范围比double范围小;所以需要强制转换,不如起始定义double
因为能力有限,可能解释不到位,请多包涵
#include stdio.h
#include math.h
int main(){
double sum(int m);
int m, n;
double res;
printf("输入两个正整数m和n\n");
scanf("%d %d", m, n);
for(m = 1; m = n; m++){
res = sum(m);
printf("%f\n", res);
}
return 0;
}
double sum(int m){
double i;
static double sum;
sum = 0.0;
for(i = 1; i = m; i++)
sum = sum + pow(i, 2);
return sum;
}
问题比较多,小的就不说了,你输出0的关键问题我说一下,在输出格式那里,应该用%f,而不是%d。其他小问题你对照我的程序再看一下吧。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流