c语言函数,输出里面数字的最大值,知识篇巩固求教老师

下面是我理解的意思,如有错误或者不对求老师指正下,尤其是下面printf()里面函数是属于执行函数里括号法则还是属于嵌套,这点不是很明白..

例子:
#include <stdio.h>
int max(int o,int p) /*定义整形 max函数,2个行参,行参的变量名可以和实参不一样,甚至不给出变量名,但个数类型顺序必须一致,*/
{
if(o>p) /*条件o>p,则返回o的值*/
return o;
else /*否则o>p,则返回o的值*/
return p;
}
int main() /*主函数,定义int a,b,c,d并且赋值*/
{
int a=-1,b=1000,c=20,e=100;
printf("%d",max(e,max(c,max(a,b)))); /*输出里面的数字,步骤如下 max()函数,max函数里面有括号,优先括号里面的(??是扩号的法则还是函数里面的调用函数呢??),一直到最里面的括号,也就是a,b。先求出a和b哪个大,a,b,c,d都是实参,求出a,b最大的哪个再和c比较,以此类推到和e比较,最终实现输出最大值*/
}

很高兴为你解答这个问题

在C语言中,括号的作用是将括号中的内容作为一个整体处理,而不是优先处理
但是C语言有一个原则,那就是使用数据之前数据必须有一个准确的值

在嵌套使用括号时,例如int max(int a,int b) (不给出函数的实现)。那么在本例max(1,max(2,3))中,外层的函数max把常量1和max(2,3)的结果作为它的参数,但是他不知道max(2,3)的结果,所以这时,系统就会求出max(2,3)的值,所以外层的括号的作用就是把1和max(2,3)的结果作为一个整体,那么很容易的可知max(2,3)的结果是0,即2<3,所以当系统求出max(2,3)的结果时max(1,max(2,3))的外面的max函数就有两个常量了,所以这时它就可以处理了,不过由于max(2,3)的结果是0,所以本例中求值的结果实际为max(1.0),结果也就是1了

如果没有理解,只需要记住以下两个原则,再多看一些例子就会明白了
I.C语言中括号(事实上,它叫“函数运算符”,因为函数总是需要把多个参数(含单个)作为一个整体处理)的作用是将它多包含的内容作为一个整体处理
II.C语言中数据的使用和求值是分开的,每使用一次数据就需要对数据进行一次求值(数据指可以构成一个完整表达式的内容),如果数据的求值是无效的,那么本次操作即无效

满意请采纳,不满意请追问追问

谢谢你,我是刚刚才接触到函数那一章,听了你说的我大致明白点了,实际上最外面的函数的()是最大的一个整体,而里面的可以视为是一个常量,或者表达式所要表达出来的一个值,当遇到类似嵌套里面的表达式,是未知的,就会求出未知的数来和前面的常量作为比较,我会认真看看函数运算符的。 不过有个小疑问,为什么max(2,3)的结果是0,2,3比较不是应该有一个最大的吗,即使不是最后程序最大的,这里不是很懂老师

追答

这个问题应该是由于我个人习惯造成的
C语言标准中max这个宏被预处理器处理后应该改是返回较大值

我习惯自己重写max宏,我的max宏的作用是如果a大于b,则返回1
所以这里就算是个误会吧,不好意思。。。

至于你前面的理解,看以先这样理解,
一千个读者,就有一千个哈姆雷特。
所以你不要死记书上的概念,
书上的概念是为了让你更好地理解内容而作者自己抽象出的,
所以你学到什么知识后要转换成自己的理解,
再在之后的学习中完善自己的理解就可以了

另外,我不是老师,我只是一个刚学两年多的小白罢了,
如果有很提我们可以一起探讨,
最后,噶谢你采纳了我的回答

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-06-05
恩,你说的没错阿,最先是执行最里面括号的东西的.
第2个回答  2014-06-05
你在这里就是错误的
int max(int o, int p)
{
if(o>p) /*条件o>p,则返回o的值*/
return o;
else /*否则o>p,则返回o的值*/
return p;
}
最好不要写2个返回值,return最好不要那样写
你可以这样写
int max(int o, int p)
{
int temp;
temp =( (o > p)? o : p);
return temp;
}
下面的思路和2楼差不多,多个数进行比较可以简单点用个数组
冒泡一下就可以了,三目运算符嵌套那么多层不常用

c语言函数,输出里面数字的最大值,知识篇巩固求教老师
I.C语言中括号(事实上,它叫“函数运算符”,因为函数总是需要把多个参数(含单个)作为一个整体处理)的作用是将它多包含的内容作为一个整体处理 II.C语言中数据的使用和求值是分开的,每使用一次数据就需要对数据进行一次求值(数据指可以构成一个完整表达式的内容),如果数据的求值是无效的,那么本...

c语言怎样输出一个数组的最大值和最小值
1、首先建立一个工程和.c文件。2、然后输入头文件和主函数。3、定义变量类型并初始化。4、输入一个正整数n(1<n《10),再输入n个整数。5、将最小值与第一个数交换,最大值与最后一个数交换。6、剔除整数的个位数。7、最后得到输出的结果。8、编译,运行,得到最后的结果。

C语言输出最大值问题
因为你定义的求最大值的函数为int max(int a,int b)前缀要求函数的属性为返回一个整数,那当然要在这个函数结束的时候把计算结果用return返回给max函数,再由max函数带给main函数。这个return是针对max而不是main的。因为z=max(a,b);那么max计算结果给z,从而实现打印z的时候输出最大值。

C语言,设计函数int max(int num); 函数功能:依次分解出正整数num的各位...
int max(int num){int i,m=0;while(num>0){if(num%10>m)m=num%10;num\/=10;} return m;} void main(){int x;scanf("%d",&x);printf("%d\\n",max(num));}

求c语言程序:用一个函数求N个数的最大值和最小值。。。
int maxmin(int n){int i,x,f;scanf("%d",&f);min=f;for(i=1;i<n;i++){scanf("%d",&x);if(x>f)f=x;else if(x<min)min=x;} return f;} int main(){int n,mm;printf("有几个数:");scanf("%d",&n);mm=maxmin(n);printf("其中最大的数是:%d\\n最小的数是:...

求助,使用C语言编写一个程序,可以显示或输出文本中的最大数字。
filename[60] = "indata.txt";if((fin = fopen(filename,"rt")) == NULL) {printf("无法打开数据文件。\\n");return 1;}fscanf(fin,"%d",&max);while(fscanf(fin,"%d",&num) == 1) {if(num > max) max = num;}fclose(fin);printf("最大数是:%d\\n",max);return 0;} ...

C语言中用函数比较三个数的大小,并输出最大值,最小值以及最大值与最小...
ou){ int mi,ma; mi=(in[0]>in[1]?in[1]:in[0]); mi=(mi>in[2]?in[2]:mi); ma=(in[0]>in[1]?in[0]:in[1]); ma=(ma<in[2]?in[2]:ma); ou[0]=mi;\/\/最小值 ou[1]=ma;\/\/最大值 ou[2]=ma-mi;\/\/差}int main(...

C语言输出最大值
include <stdio.h> define max(a,b) (a>b?a:b)int main(){ int a,b,c;scanf("%d %d %d",&a,&b,&c);printf("%d\\n",max(max(a,b),c));return 0;}

用c语言编程实现请输入10个整数,请输出最大值及所在位置(位置从1数起...
max=a[0]; max_index=0; for(i=1;i<10;i++) if(a[i]>max) { max=a[i]; max_index=i; } printf("这10个数中的最大值是%d,位置为%d\\n",max,max_index+1); } 举报| 答案纠错 | 评论(1) 5 2 示申佥11 采纳率:75% 来自:芝麻团 擅长: C\/C++ JAVA相关 VC++ C#\/.NET 为...

c语言输出最大值
C语言代码如下:include<stdio.h> int main(){ int a,b;printf("please enter two number:"); ---两个数字用空格隔开,以回车键结束输入。scanf("%d %d",&a,&b);if(a>b)printf("The max is %d",a);else if(b>a)printf("The max is %d",b);else printf("The two Numbers...

相似回答