c語言函數

c語言函數

平臺用戶的互動中精選與c語言函數相關的:1、C語言中如何定義函數 2、如何在C語言中定義一個函數? 3、C語言如何調用函數 4、C語言中有沒有求絕對值的函數?謝謝! 5、c語言中 函數的概念 6、在C語言中disc是什么函數有什么作用 7、C語言中函數和函數體的區別是什么? 8、C語言中不能在函數里面聲明函數嗎 9、C語言函數問題 10、C語言中的一些特殊函數
c語言函數
平臺用戶 2018-06-06 16:44:50

下面是精選平臺用戶互動時的最佳討論

羅海義
羅海義


羅海義:C語言中如何定義函數

下面的解答已被2335人點贊
比如說,下面就是一個函數

int add(int x,int y)
{
return x+y;
}

追問

這可以單獨做個程序來運行嗎?

追答

不行,函數都是拿來被調用的,程序都是從main函數開始運行,所以如果定義了這個函數,那么可以在main函數,或者其他函數里被調用

最后一次編輯時間 推薦于2018-02-26 16:07:00
little健健
little健健


little健。喝绾卧贑語言中定義一個函數?

為什么我怎么定義函數都不正確呢?
總是說我 表達語法錯誤在main函數中
我用的編譯器是WIN-TC
解釋詳細點
#include <stdio.h> 
void test(int );
main()
{int a=100;

printf("%d",test(a));
getch();
}
void test(int )
{int n,m;
m=n/2;
return(m)

}
這是我寫的,錯誤很多
高手指點下,別見笑,本人剛學不久

下面的解答已被2218人點贊
C語言中一個完整的函數由函數首部和函數體構成,而且定義函數時兩者都是必不可少的。
函數定義的一般形式如下:
類型標識符 函數名(形參表列) // 這是函數首部
// 以下{ }內的是函數體
{
說明部分

執行部分

}

舉例說明如下:
// 定義一個不帶返回值的函數
// 函數功能:輸出形參的值
void fun(int a, int b)
{
printf("%d, %d\n", a, b);
}

// 定義一個帶返回值的函數
// 函數功能:返回2個整數數的最大值
int fun(int a, int b)
{
return a>b ? a : b;
}
最后一次編輯時間 推薦于2017-09-30 13:59:14
因英而存在
因英而存在


因英而存在:C語言如何調用函數

小弟自學,搞不懂如何調用有參數的函數,請看下面這個程序 ,是錯的 #include <stdio.h> int sum(int x,int y) { int z; z=x+y; printf("z=",z); return z; } main() { int a,b,s; scanf("%d,%d",a,b); s=sum(... 小弟自學,搞不懂如何調用有參數的函數,請看下面這個程序 ,是錯的

#include <stdio.h>
int sum(int x,int y)
{ int z;
z=x+y;
printf("z=",z);
return z;
}

main()
{
int a,b,s;
scanf("%d,%d",a,b);
s=sum(a,b);
getch();
}

請教各位,我的問題到底出在哪里?多謝了!

還有我就想問一下,形參,實參到底是指什么?舉例子就行了,其實書上有解釋,小弟愚笨,不理解
有個問題大家還沒發現,就是scanf我沒寫&,編譯居然能通過,faint
但即使這樣,程序仍然有問題,任意輸入2個整數,顯示結果是"z="就什么都沒有了

下面的解答已被298人點贊

C語言調用函數就是先定義并聲明函數,之后再根據定義函數的格式調用。


下面舉例來說明函數調用方法:

#include<stdio.h>
int fun(int x, int y); // 函數聲明,如果函數寫在被調用處之前,可以不用聲明
void main()
{
    int a=1, b=2, c;
    c = fun(a, b); // 函數的調用,調用自定義函數fun,其中a,b為實際參數,傳遞給被調用函數的輸入值
}
// 自定義函數fun
int fun(int x, int y)  // 函數首部
{  // {}中的語言為函數體
    return x>y ? x : y;  // 返回x和y中較大的一個數
}

最后一次編輯時間 推薦于2017-10-10 16:09:47
甄清清
甄清清


甄清清:C語言中有沒有求絕對值的函數?謝謝!

下面的解答已被9050人點贊
#include<math.h>

int 型
int abs(int x);

long 型
long labs(int x);

浮點數 float double
double fabs(double x);
最后一次編輯時間 推薦于2017-09-14 19:01:04
不喜歡暴發戶
不喜歡暴發戶


不喜歡暴發戶:c語言中 函數的概念

就是想知道 c語言中函數的概念 解釋一下下..謝謝。!
下面的解答已被9283人點贊
程序設計中的函數
許多程序設計語言中,可以將一段經常需要使用的代碼封裝起來,在需要使用時可以直接調用,這就是程序中的函數。比如在C語言中:
int max(int x,int y)
{
return(x>y?x:y;);
}
就是一段比較兩數大小的函數,函數有參數與返回值。C++程序設計中的函數可以分為兩類:帶參數的函數和不帶參數的函數。這兩種參數的聲明、定義也不一樣。
帶有(一個)參數的函數的聲明:
類型名標示符+函數名+(類型標示符+參數)
{
}
不帶參數的函數的聲明:
void+函數名()
{
}
花括號內為函數體。
帶參數的函數有返回值,不帶參數的沒有返回值。
C++中函數的調用:函數必須聲明后才可以被調用。調用格式為:函數名(實參)
調用時函數名后的小括號中的實參必須和聲明函數時的函數括號中的形參個數相同。
有返回值的函數可以進行計算,也可以做為右值進行賦值。
#include <iostream>
using namespace std;
int f1(int x, inty)
{int z;
return x+y;
}
void main()
{cout<<f1(50,660)<<endl
}
C語言中的部分函數
main(主函數)
max(求最大數的函數)
scanf(輸入函數)
printf(輸出函數)
最后一次編輯時間 推薦于2017-09-10 23:33:25
匿名
匿名


匿名:在C語言中disc是什么函數有什么作用

我在一段C語言中遇到的這個函數是在求一元二次方程式的根遇到的!請問各位高手這個函數有什么用。是干什么的!
下面的解答已被7474人點贊
你說的是譚浩強書里的東西吧,disc=b*b-4*a*c 

disc是隨便定義的

其實disc是縮寫[Mathematics] discriminant 判別式
最后一次編輯時間 推薦于2017-12-03 09:31:05
chuanqi129
chuanqi129


chuanqi129:C語言中函數和函數體的區別是什么?

下面的解答已被5909人點贊
第一 簡單來說函數就是c語言的模塊,一塊塊的,有較強的獨立性,但是可以相互調用。一個c程序就可以是一個函數,里面再包含n個函數,有固定輸入和輸出格式的子程序,函數具有明確的功能、入口調用參數和返回值。

第二 函數體是用花括號括起來的若干語句,他們完成了一個函數的具體功能。

函數體內的前面是定義和說明部分,后面是語句部分。

函數聲明與函數體放在一起組成了函數定義。

舉個例子:
main()
{
printf(“xx”);
printf("xx2");
}
//函數體是花括號內的所有語句的集合,包括花括號在內
最后一次編輯時間 推薦于2017-09-14 15:32:38
童真桐趣°碵2
童真桐趣°碵2


童真桐趣°碵2:C語言中不能在函數里面聲明函數嗎

下面的解答已被4398人點贊

  你這個問題看似簡單,其實涉及到了函數的聲明與定義,以及C語言的標準規范具體編譯器的實現問題。


  從標準規范來看:

  1. C語言允許函數里聲明函數,但是不建議這么寫,因為不利于多文檔的組織。

  2. C語言禁止函數里定義函數,但是個別編譯器卻沒遵循標準。

  3. C語言的標準編譯器的實現并不是完全統一,為了可移植性,建議一切都按C語言標準中推薦的做法來寫。


  我還寫了個代碼附帶注釋,程序在CFree這個IDE(內置gcc編譯器)上運行是通過的,但是在VC++6上就可能通不過了,主要是編譯器具體實現不同。

#include <stdio.h>

//函數外 
//聲明,允許,推薦的做法 
int add1(int a, int b);

int main(int argc, char *argv[])
{
//函數內
//聲明,允許,但是不建議這么寫 
int add2(int a, int b);

//C語言標準里禁止函數內定義函數、
//但是有個別編譯器也允許這樣做,比如GCC
//此種寫法不通用,強烈不建議使用 
int add3(int a, int b)
{
return a+b;


//C99標準中,調用函數之前,必須保證聲明已出現過 
printf("%d\n", add1(1,2));
printf("%d\n", add2(2,3));
printf("%d\n", add3(3,4));

return 0;
}

//函數外 
//定義,允許
int add1(int a, int b)
{
return a+b;
}

//定義,允許
int add2(int a, int b)
{
return a+b;
}


  -->您的采納是我們的動力<--

最后一次編輯時間 推薦于2017-11-22 23:08:25
236***@qq.com
236***@qq.com


236***@qq.com:C語言函數問題

C語言函數問題以下是題目 6-1 移動字母(10 分) 本題要求編寫函數,將輸入字符串的前3個字母移到最后。 函數接口定義: void Shift( char s[] ); 其中char s[]是用戶傳入的字符串,題目保證其長度不小于3;函數Shift須將按照要求變換后的字符串仍然存在s[]... C語言函數問題以下是題目
6-1 移動字母(10 分)
本題要求編寫函數,將輸入字符串的前3個字母移到最后。

函數接口定義:

void Shift( char s[] );
其中char s[]是用戶傳入的字符串,題目保證其長度不小于3;函數Shift須將按照要求變換后的字符串仍然存在s[]里。

裁判測試程序樣例:

#include <stdio.h>
#include <string.h>

#define MAXS 10

void Shift( char s[] );

void GetString( char s[] ); /* 實現細節在此不表 */

int main()
{
char s[MAXS];

GetString(s);
Shift(s);
printf("%s\n", s);

return 0;
}

/* 你的代碼將被嵌在這里 */
輸入樣例:

abcdef
輸出樣例:

defabc
----------------------------------------------------------------------------------------------
我有點看不懂題目,每個函數是干啥的,但是我照自己理解寫了,在Devc++里運行結果是對的,但是,在PTA網站上提交卻是編譯錯誤,不知道為什么。
---------------------------------------------------------------------------------------------
以下是我的函數代碼
void GetString( char s[] )
{
gets(s);

}
void Shift( char s[] )
{
int i,t,d=0,e;
char a[100],b[100],c[100];
e = strlen(s);
for(i=0; i<e; i++){
if(i<=2){
a[i] = s[i];
}
if(i>2){
b[d] = s[i];
d++;
}
}
d = 0;
t = strlen(b);
for(i=0; i<e; i++){
if(i<t){
s[i] = b[i];
//c[i] = b[i];
}
if(i>=t){
s[i] = a[d];
//c[i] = a[d];
d++;
}
}
// puts(c);
}
下面的解答已被5025人點贊

#include <stdio.h>
#include <string.h>

#define MAXS 10

void Shift(char s[]);

void GetString(char s[]); /* 實現細節在此不表 */

int main()
{
char s[MAXS];

GetString(s);
Shift(s);
printf("%s\n", s);

return 0;
}

//下面是修改過的答案及原因

void GetString(char s[])
{
scanf("%s", s);
return;//void也寫上return比較好
}

void Shift(char s[])
{
int i, t, d = 0, e;
char a[100], b[100], c[100];
memset(a, 0, sizeof(a));//abc數組都沒有初始化,里面的數據不能保證是正常的
memset(b, 0, sizeof(b));//可能在你的電腦上數據正常,放在評測機上就錯了
memset(c, 0, sizeof(c));
e = strlen(s);
for (i = 0; i<e; i++) {
if (i <= 2) {
a[i] = s[i];
}
if (i>2) {
b[d] = s[i];
d++;
}
}
d = 0;
t = strlen(b);
for (i = 0; i<e; i++) {
if (i<t) {
s[i] = b[i];
//c[i] = b[i];
}
if (i >= t) {
s[i] = a[d];
//c[i] = a[d];
d++;
}
}
// puts(c);
return;//void也寫上return比較好
}

追問

感謝大佬了,想再問一下memset函數的功能具體是怎么初始化數組的,還沒學過。

追答

memset(a, b, c);
//把從指針a開始,長度為c字節的內存,每個字節都初始化為b
//也就是說b 必須是0~255之間的數字

最后一次編輯時間 2017-11-15
agwogreat
agwogreat


agwogreat:C語言中的一些特殊函數

fmax()是可以直接求最大值嗎,必須是兩個數里的最大吧,還有個power()的函數是干什么的,有這兩個時,用加math.h嗎,再說些特殊函數和用法
下面的解答已被4421人點贊
c語言的沒有fmax()和power()函數 
fmax()求最大值函數自己程序實現
c語言中有pow(a,b)這個函數 功能:求a的b次方。需包含頭文件 math.h
最后一次編輯時間 推薦于2018-04-04 10:45:50
金蟾捕鱼单机下载