C语言自定义函数的简单问题

刚学c语言,看的《C Primer Plus》
第二章有个练习如果照着书上的例子来是
#include<stdio.h>
void one_three(void);
void two(void);
int main(void)
{
printf("starting now:\n");
one_three();
printf("\n");
two();
printf("\nthree\ndone!\n");
}
void one_three(void)
{
printf("One");
}
void two(void)
{
printf("Two");
}

但是把函数定义放到前面,就省去了2行代码,并且在vs2013能运行,请问这样有问题吗?
#include<stdio.h>
void one_three(void)
{printf("One");
}
void two(void)
{
printf("Two");
}
int main(void)
{
printf("starting now:\n");
one_three();
printf("\n");
two();
printf("\nthree\ndone!\n");
return 0;
}
还有个问题是:我现在不明白最后一句return 0;的作用,不加上这句又对运行毫无影响。

第1个回答  2014-11-04

我想刚刚好回答你这个问题

首先关于函数的问题,你的想法是正确的 定义的函数体在main函数下面是需要先声明的,而处于mian()函数上边的函数,则不用。引用我的课堂笔记给你看看,你那题应该是习题里的第七题对吧


第二个问题关于函数体中的return语句 在什么情况出现

1、用户自定义的函数按有无返回值类型分两种,一般来说,当你定义的函数是以void以外的关键字修饰时,还是要加return语句返回一个值。像int max(a,b)的用户定义的函数中,需要返回一个int型的值给调用他的那个函数,他也是表示一个函数的结束

2、你问题中的return 0;是说主函数内的,加上的目的是告诉程序到这儿已经执行结束了。他下面的语句也不会再执行了。一般来说,有没有都没太大区别,但最好还是写一下,养成好的书写规范习惯 我以前一直不写那句的,现在也在慢慢的改。

好了 回答了这么多 希望能帮到你

第2个回答  2014-11-04
1:由于程序是从main主函数执行的,所以你的方法定义在main后面的函数需要先在main前面声明。
2:你main函数的返回值是int类型的,所以需要返回一个int类型,至于返回几没有关系,定义成void main则不需要返回。
第3个回答  2014-11-04
没有问题,调用的函数放在主函数前面可以省去声明的语句

第二个问题加return 0是因为你的main函数的返回值是int类型 你看你写的是int main()所以最后最好返回一个整数,一般约定main函数运行正常返回0,不过不加这条语句不会有任何影响,只会有警示不会报错

c语言中一个 用户自定义函数的初学者 简单问题
include<stdio.h> \/\/ #include<math.h> gys算法中可以将i赋值为根号min int gys(int m,int n);\/\/函数声明 int gbs(int m,int n);void main(){ int a,b,flag,flag1;scanf("%d%d",&a,&b);flag=gys(a,b);flag1=gbs(a,b);printf("最大公约数为%d 最小公倍数为%d\\n",flag...

为什么会输出错误,关于用c语言自定义函数cal(x,n)计算x^n\/n!的结果?
根据你题目的意思,这段C语言代码有以下几个问题:第一:你题目说是要计算x^n\/n!,你看下图片4处,这是计算的累加和,可不是你题目说的意思,好看看是你写错了还是怎么样。第二:图中1\/2处这两个自定义函数返回值都是int,然后你在cal函数用一个double去接收两个整数相除的结果,要注意整数\/...

C语言自定义函数的简单问题
1、用户自定义的函数按有无返回值类型分两种,一般来说,当你定义的函数是以void以外的关键字修饰时,还是要加return语句返回一个值。像int max(a,b)的用户定义的函数中,需要返回一个int型的值给调用他的那个函数,他也是表示一个函数的结束 2、你问题中的return 0;是说主函数内的,加上的目的...

简单c语言问题,为什么自定义函数返回值为0
int f1(int,int);int f2(int);float f3(int,int);这三句完全可以不要 再子函数的定义中,如果子函数的代码在调用它的前面写,完全可以不用再定义 你的这个问题,完全可以不要子函数,因为子函数带来的计算了会更大一些 你应该见过1!+2!+3!+...+n!这个题目的计算代码 我现在给你写一下 i...

c语言中自定义函数安放位置问题
放在后面,要先声明下原型,这样编译器在编译时,就可以知道有这个函数,会往下面查找,并编译。放在前面,可以直接定义,main中使用。放前放后,纯属个人编写风格,并无硬性规定。个人喜欢放在前面,这样,看代码时,直接从下面的MAIN函数看起,遇到定义的函数,上翻查看。

C语言 自定义函数swap问题
首先 这个 答案 是错的 ,这样写 会直接 segmentation fault 先给你解释下 char *s1="abc"; 编译器会先 把 “abc” 这个 字符串 放到 ”常量区“ (值不能改) ,在 分配一个 指针 s1 指向 “abc” 的 开头 也就是 ‘a’ 这个 字符 ,那就是了 swap() 要改 常量区 的 东西 ,...

关于c语言的函数问题
1.int rfact(int x)定义了一个关于x的函数 就是说,输入一个x,得到rfact(x) 的值;2.int z,i;for(z=1,i=1;i<=x;i++)定义了z和i;然后for里面定义z=1和i=1,这是初始循环条件 然后限定i<=输入的x值 最后执行i增,一直从1到x 3.z=z*i; 这句是:z=1*1*2*3*4*5(5...

C语言调用的自定义函数怎么不能引用我输入的数据?
1、因为输入数据是局部变量。需要使用全局变量或者传入函数参数。2、全局变量也称为外部变量,它是在函数外部定义的变量。它不属于哪一个函数,它属于一个源程序文件。其作用域是整个源程序。在函数中使用全局变量,一般应作全局变量说明。只有在函数内经过说明的全局变量才能使用。全局变量的说明符为extern...

vc++6.0 编写C语言代码 自定义函数的问题
写成:void main(){ float average(float x,float y,float z);float a,b,c,ave;scanf("%f,%f,%f",&a,&b,&c);ave=average(a,b,c);printf("%f\\n",ave);} 函数声明也要带形参

c语言编程利用自定义函数求两个数的和,差?
在C语言中,你可以通过自定义函数来求两个数的和与差。下面是一个简单的示例,演示如何定义这样的函数:c 复制 include <stdio.h> \/\/ 自定义函数,用于求两数之和 int sum(int a, int b) { return a + b;} \/\/ 自定义函数,用于求两数之差 int difference(int a, int b) { return a...

相似回答