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健健:如何在C语言中定义一个函数?

为什么我怎么定义函数都不正确呢?
总是说我 表达语法错误在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***曾道免费资料大全正版
236***曾道免费资料大全正版


236***曾道免费资料大全正版: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