⑴ c语言题: 按下面要求编写程序: (1)定义函数cal-power(x,n)计算x的n次幂(即x^
doublecal_power(doublex,intn)
{doubley=1;
for(;n;n--)
y*=x;
returny;
}
⑵ C语言如何返回值
首先说明一下你的程序的问题与缺陷:
1: return语句 只能返回一个值,而不能写成 “return h,l;”
2:你在main()中定义了h,l,而在调用cal()时,又定义了h,l,这两个h,l是完全不同的两组。即使你为cal()里的h,l赋值,那么返回到main()时,h,l仍然为0.
3:你在cal()里的scanf写的不好。两个%d之间最好什么都没有,加了逗号,可能会在读取时,h,l赋值错误。(具体请看我下面的程序)
下面是我的解法:
先问一下,你用的是TC2.0还是VC6.0?
如果是VC6.0,那么可以使用引用类型:
/*法一:使用引用*/
#include<stdio.h>
voidcal(int&ch,int&cl);/*声明ch,cl为引用类型*/
voidmain()
{
inth=0,l=0;
cal(h,l);/*这里将h,l传入cal()*/
printf("%d,%d",h,l);
}
voidcal(int&ch,int&cl)
{
scanf("%d%d",&ch,&cl);/*这里为ch,cl赋值*/
}
TC2.0中好像不支持引用类型。我没测试。
-------------------------
如果是TC2.0,那么可以使用指针:
/*法二:使用指针*/
#include<stdio.h>
voidcal(int*ph,int*pl);/*这里将ph,pl声明为指针*/
voidmain()
{
inth=0,l=0;
cal(&h,&l);/*将变量h,l地址传过去。*/
printf("%d,%d",h,l);
}
voidcal(int*ph,int*pl)
{
scanf("%d%d",ph,pl);/*为ph,pl赋值*/
}
------------------
以上两种方法都可以解决你说的问题。
有问题请追问。
⑶ 为什么会输出错误,关于用c语言自定义函数cal(x,n)计算x^n/n!的结果
根据你题目的意思,这段C语言代码有以下几个问题:
第一:你题目说是要计算x^n/n!,你看下图片4处,这是计算的累加和,可不是你题目说的意思,好看看是你写错了还是怎么样。
第二:图中1/2处这两个自定义函数返回值都是int,然后你在cal函数用一个double去接收两个整数相除的结果,要注意整数/整数=整数,这个过程会把小数直接丢去,你看看你是不是不想要小数。
第三:需要注意,int能表示的阶乘有限,也就是说n不能太大,大概14应该就超过范围了,建议换成double类型的,这样你的第二个问题也解决了。