主要可以通過(guò)指針或數(shù)組返回多個(gè)值,測(cè)試代碼如下,

創(chuàng)新互聯(lián)是一家專業(yè)提供中陽(yáng)企業(yè)網(wǎng)站建設(shè),專注與網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站設(shè)計(jì)、H5網(wǎng)站設(shè)計(jì)、小程序制作等業(yè)務(wù)。10年已為中陽(yáng)眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站建設(shè)公司優(yōu)惠進(jìn)行中。
//程序功能,通過(guò)結(jié)構(gòu)體實(shí)現(xiàn)多個(gè)數(shù)據(jù)返回及通過(guò)多個(gè)變量指針實(shí)現(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)體,實(shí)現(xiàn)多個(gè)數(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;
}
//變相返回圓的面積、周長(zhǎng)
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語(yǔ)言函數(shù)名義上函數(shù)返回值只能有一個(gè)變量或者無(wú)返回值,但返回的變量可以是指針或結(jié)構(gòu)體等更復(fù)雜的數(shù)據(jù),通過(guò)指針或結(jié)構(gòu)體從而變相實(shí)現(xiàn)多參數(shù)返回。可以作為實(shí)參間接返回或直接作為返回值返回,但需注意不要返回臨時(shí)變量,如getTest()函數(shù)中不能定義struct
test
t變量直接返回。
輸入數(shù)用scanf()函數(shù);
分段用switch()函數(shù);
1、絕對(duì)值用math庫(kù)里面的abs()函數(shù)
2、e^x用math庫(kù)里面的pow(e,x)函數(shù)
3、同理指數(shù)的都有pow()函數(shù),
4、cos函數(shù)也是math庫(kù)里面的double cos(double x)函數(shù)
補(bǔ)充:對(duì)于自變量x的不同的取值范圍,有著不同的對(duì)應(yīng)法則,這樣的函數(shù)通常叫做分段函數(shù)。它是一個(gè)函數(shù),而不是幾個(gè)函數(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;
}
你這個(gè)題是ACM的題目?我看了下你的程序,正經(jīng)的數(shù)字是可以的,但你說(shuō)錯(cuò)了,那就該就是要考慮極限情況了。譬如x=0.0000000000000000000000000000000001的時(shí)候,你的程序輸出是100.0。。。。。應(yīng)該就是出錯(cuò)在這里了。
還有我的老師告訴我,使用float不要用x==0這種表達(dá)方式,,因?yàn)閒loat類型的等于其實(shí)就是在有限的位數(shù)上比較大小。。。當(dāng)數(shù)字極小或者極大的時(shí)候就會(huì)出現(xiàn)不相等的數(shù)字會(huì)出現(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;?
}
文章名稱:c語(yǔ)言分段函數(shù)輸出多個(gè)值 C語(yǔ)言多個(gè)輸出
當(dāng)前路徑:http://chinadenli.net/article34/doojjse.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開(kāi)發(fā)、電子商務(wù)、ChatGPT、網(wǎng)頁(yè)設(shè)計(jì)公司、網(wǎng)站制作、自適應(yīng)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)