主要可以通過指針或數組返回多個值,測試代碼如下,
創新互聯是一家專業提供中陽企業網站建設,專注與網站設計制作、成都網站設計、H5網站設計、小程序制作等業務。10年已為中陽眾多企業、政府機構等服務。創新互聯專業網站建設公司優惠進行中。
//程序功能,通過結構體實現多個數據返回及通過多個變量指針實現
#include
stdio.h
#include
stdlib.h
#include
string.h
#define
PI
3.1415926
struct
test
{
int
x;
char
str[20];
};
//返回結構體,實現多個數據返回
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語言函數名義上函數返回值只能有一個變量或者無返回值,但返回的變量可以是指針或結構體等更復雜的數據,通過指針或結構體從而變相實現多參數返回。可以作為實參間接返回或直接作為返回值返回,但需注意不要返回臨時變量,如getTest()函數中不能定義struct
test
t變量直接返回。
輸入數用scanf()函數;
分段用switch()函數;
1、絕對值用math庫里面的abs()函數
2、e^x用math庫里面的pow(e,x)函數
3、同理指數的都有pow()函數,
4、cos函數也是math庫里面的double cos(double x)函數
補充:對于自變量x的不同的取值范圍,有著不同的對應法則,這樣的函數通常叫做分段函數。它是一個函數,而不是幾個函數;分段函數的定義域是各段函數定義域的并集,值域也是各段函數值域的并集。
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的題目?我看了下你的程序,正經的數字是可以的,但你說錯了,那就該就是要考慮極限情況了。譬如x=0.0000000000000000000000000000000001的時候,你的程序輸出是100.0。。。。。應該就是出錯在這里了。
還有我的老師告訴我,使用float不要用x==0這種表達方式,,因為float類型的等于其實就是在有限的位數上比較大小。。。當數字極小或者極大的時候就會出現不相等的數字會出現相等的情況了。
換成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語言分段函數輸出多個值 C語言多個輸出
當前路徑:http://m.newbst.com/article34/doojjse.html
成都網站建設公司_創新互聯,為您提供小程序開發、電子商務、ChatGPT、網頁設計公司、網站制作、自適應網站
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯