十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
方法很多。
创新互联于2013年开始,先为登封等服务建站,登封等地企业,进行企业商务咨询服务。为登封企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
主要是要将不同类型传递给fun2处理。
最简单float类型最大,fun2的参数类型就定义为float,然后运算结果返回float类型。在main函数用a3,b3,c3接收的时候强转型。
另一种方法,把变量都转换成一种类型传递。这里用union共用体类型就比较适合。还方便扩展,如果想添加其他类型还可以在union里添加。
我这里代码就用第二种方法写。
#include stdio.h
typedef union data{
char c;
int i;
float f;
}DA;
void fun1(void);
DA fun2(DA n1,DA n2,int nType);//nType=1:char类型。nType=2:int类型。nType=3:float类型。
int main()
{
fun1();
return 0;
}
void fun1(void)
{
char a1=1,a2=2;
int b1=100,b2=300;
float c1=5.1,c2=6.8;
DA n1,n2;
n1.c=a1,n2.c=a2;
char a3=fun2(n1,n2,1).c;
n1.i=b1,n2.i=b2;
int b3=fun2(n1,n2,2).i;
n1.f=c1,n2.f=c2;
float c3=fun2(n1,n2,3).f;
printf("a3=%c\nb3=%d\nc3=%.2f\n",a3,b3,c3);
}
DA fun2(DA n1,DA n2,int nType)//nType=1:char类型。nType=2:int类型。nType=3:float类型。
{
DA n3;
switch(nType)
{
case 1:n3.c=n1.c+n2.c;break;
case 2:n3.i=n1.i+n2.i;break;
case 3:n3.f=n1.f+n2.f;break;
}
return n3;
}
因为main函数里面的两个子程序都没有返回值,我觉得可以直接把两个子程序的内容替换成main函数中两个子程序,即:
#include hidef.h
#include "derivative.h"
void main(void)
{
REFDV=1;
SYNR=2;
while(!(CRGFLG0x08));
CLKSEL=0xc0;
PWME_PWME1=0x00;
PWMPRCLK=0x33;
PWMSCLA=150;
PWMSCLB=150;
PWMCLK_PCLK1=1;
PWMPOL_PPOL1=1;
PWMCAE_CAE1=0;
PWMCTL_CON01=0x00;
PWMPER01=200;
PWMDTY01=20;
PWME_PWME1=1;
}
1.atoi(),atol(),atof();int,long,float
2sprintf(s(数组),“%d“,num);
3(int)等等强制转换
4 int num = atoi("11123");
char s[]="I am a teacher!"; s是数组名,是首地址, 而s[0]是第一个元素值,是个字符!
c语言函数从形式上分为这么两种:一种是用户自定义函数,就是你自己根据功能的需要自己编写的函数;另一种是系统自带的函数,如sqrt(x)函数
(就是求x的二次方根),这样的可以直接用,不用自己编写,前提是你得在头文件中把它们包含进去;