重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
你的fun里的形参a是个int类型,你写a=1.0/a,相当于把1.0/a的结果又强制转换成了int,因为你的a肯定比1大,所以结果当然还是0,建议把a=1.0/a改成return 1.0/a,a=0改为return 0
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名与空间、虚拟空间、营销软件、网站建设、黄冈网站维护、网站推广。
#include stdio.h
int sdk(int m, int n)
{
int i = 0;
int sum = 0;
for (i = m; i n; i++)
{
sum += i;
}
return sum;//====================
} //定义求和函数
int main()
{
int i = 0;
int m, n = 0;
int sum = 0;
printf("输入m和n\n");
do
{
scanf("%d %d", m, n);
sum=sdk(m, n);//====================
printf("m~n的和为%d", sum);
} while (m != -1 n != -1);
return 0;
}
a=1/2×b×n,这个表达式是有问题的,1÷2求商的话,他永远等于零,所以你的结果不管输入什么都是为零的。
sqrt的返回值类型是double型,你输出的时候用%d当然结果是错的了,可以试试类型转换,把最后一个printf语句改成如下:
printf("%d\n",(int)sqrt(n));
clock() 获取毫秒。程序执行太快,时间差为0
这是用clock() 的例子:
void example_dt_ms()
{
clock_t tick1,tick2;
int i,j,k;
double dt;
tick1=clock(); //ms
//for (i=0;i1000;i++) for (j=0;j1000;j++) for (k=0;k100;k++) {};
wait_ms(2000);
tick2=clock();
dt = (double) (tick2 - tick1);
printf("==============\nexample_dt_ms:\n");
printf("dt = %lf ms\n",dt);
}
精确计时间差:
用QueryPerformanceCounter()函数返回当时时钟读数,计时开始用它得到开始读数,计时结束用它得到结束读数,两个数相减是时间差读数。读数转换为时间,要用QueryPerformanceFrequency()函数获得时钟频率,读数除以时钟频率,得时间,单位是秒。乘1000得毫秒。据说,这种方法比较精确。
scanf("% f", x);中%f之间不能有空格,否则会读入错误,应改为:
scanf("%f", x);
修改后的代码和运行结果如下:
输入6,输出6+3=9,结果正确~