主要可以通過指針或數(shù)組返回多個值,測試代碼如下,
創(chuàng)新互聯(lián)是一家專業(yè)提供中陽企業(yè)網(wǎng)站建設(shè),專注與網(wǎng)站設(shè)計制作、成都網(wǎng)站設(shè)計、H5網(wǎng)站設(shè)計、小程序制作等業(yè)務(wù)。10年已為中陽眾多企業(yè)、政府機構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站建設(shè)公司優(yōu)惠進行中。
//程序功能,通過結(jié)構(gòu)體實現(xiàn)多個數(shù)據(jù)返回及通過多個變量指針實現(xiàn)
#include
stdio.h
#include
stdlib.h
#include
string.h
#define
PI
3.1415926
struct
test
{
int
x;
char
str[20];
};
//返回結(jié)構(gòu)體,實現(xiàn)多個數(shù)據(jù)返回
struct
test*
getTest()
{
struct
test
*t=NULL;
t=(struct
test*)malloc(sizeof(struct
test));
if(!t)
return
NULL;
t-x=10;
memset(t-str,0,20);
memcpy(t-str,"testinfo",8);
return
t;
}
//變相返回圓的面積、周長
void
cir(double
r,double
*area,double
*girth)
{
*area=PI*r*r;
*girth=PI*r*2;
}
int
main(int
argc,
char
*argv[])
{
double
r=10.2;
double
s=0,g=0;
struct
test
*t1=getTest();
if(!t1)
return
1;
cir(r,s,g);
printf("area=%f,girth=%f\n",s,g);
printf("%d,%s\n",t1-x,t1-str);
if(t1)
{
free(t1);
t1=NULL;
}
return
0;
}
c語言函數(shù)名義上函數(shù)返回值只能有一個變量或者無返回值,但返回的變量可以是指針或結(jié)構(gòu)體等更復(fù)雜的數(shù)據(jù),通過指針或結(jié)構(gòu)體從而變相實現(xiàn)多參數(shù)返回??梢宰鳛閷崊㈤g接返回或直接作為返回值返回,但需注意不要返回臨時變量,如getTest()函數(shù)中不能定義struct
test
t變量直接返回。
輸入數(shù)用scanf()函數(shù);
分段用switch()函數(shù);
1、絕對值用math庫里面的abs()函數(shù)
2、e^x用math庫里面的pow(e,x)函數(shù)
3、同理指數(shù)的都有pow()函數(shù),
4、cos函數(shù)也是math庫里面的double cos(double x)函數(shù)
補充:對于自變量x的不同的取值范圍,有著不同的對應(yīng)法則,這樣的函數(shù)通常叫做分段函數(shù)。它是一個函數(shù),而不是幾個函數(shù);分段函數(shù)的定義域是各段函數(shù)定義域的并集,值域也是各段函數(shù)值域的并集。
int?fun(int?x){
int?result?=?0;
if(x0){
result?=?-x;
}else?if(x==0){
result?=?100;
}else?if(x0){
result?=?x*x+1;
}
return?result;
}
int?main(){
int?num?=?0;
scanf("%d",num);
printf("%d",fun(num));
return?0;
}
你這個題是ACM的題目?我看了下你的程序,正經(jīng)的數(shù)字是可以的,但你說錯了,那就該就是要考慮極限情況了。譬如x=0.0000000000000000000000000000000001的時候,你的程序輸出是100.0。。。。。應(yīng)該就是出錯在這里了。
還有我的老師告訴我,使用float不要用x==0這種表達方式,,因為float類型的等于其實就是在有限的位數(shù)上比較大小。。。當(dāng)數(shù)字極小或者極大的時候就會出現(xiàn)不相等的數(shù)字會出現(xiàn)相等的情況了。
換成double就行了
#include "stdio.h"
void main()
{
double a=0.0;
while(scanf("%lf",a)!=EOF)
{
if(a0)
{
a=a*a+1;
}
else if(a0)
{
a=-a;
}
else if(a==0)
{
a=100.0;
}
printf("%.1lf\n",a);
a=0.0;
}
}
#include?stdio.h?
int?main()?
{double?x,y;
scanf("%lf",x);
if(x0)y=x*x-1;
else?if(x1)y=x*x;
else?y=x*x+1;
printf("%g",y);
return?0;?
}