C语言程序问题,本人是初学者中的初学者,有个程序请明士解疑。

#include<stdio.h>
int m;
int min(int x,int y);
void main()
{
int a,b;
printf("\nEnter Two Numbers:");
scanf("%d,%d",&a,&b);
m=min(a,b);
printf("Minimum:%d\n",m);
}
int min(int x,int y)
{
int t=0;
if(x<y) t=x;
else t=y;
return(t);
}
这个程序意思我知道,输入两个数,输出最小值。但我有以下几个疑问:
1.后面的int min(...){....}是什么函数?不是说只能有一个主函数吗,前边不是已经有了一个main(){....}了吗?
2.为什么要再指定另外一个变量t,而且int t=0,要赋值成0,return()含义是什么?我在实际使用时,好像里面的值对最后结果没什么影响
3.前边已经定义变量a,b了,为什么要再定义x,y?
4.为什么要用两个{},只在第一个main()函数里,用if(a<b) m=a else m=b不就行了吗,也不用再定义m=min(a,b)啊?
请针对以上4点说明,不要遗漏哦,我就这些疑问,少一个都解不开我的心结,处女座的。

通俗的解释一下 可能不严谨 大手子不要喷

一.int min 就是普通函数 可以有无数个普通函数 主函数中不调用就不会执行
二.return是返回值的意思 他返回t这个值 赋给m 不加这个的话m就没有值 或者说不回被改变 不能没有 没有他的话min这个函数就没有意义了
三.这个是实参和形参的道理 具体你看一下你的学习资料 这个没有什么好解释的 你可以理解成前面的是一份菜 后面的是盘子 前面把菜传到后面的盘子里 这样我们就是哪个盘子是哪个菜
四.这个就是看自己了 用的话 感觉高大上 或者说更严谨 这个就是仁者见仁智者见智了 如果只是实现比大小的话你的方法更好 这种方法只是让你理解函数的用法
温馨提示:内容为网友见解,仅供参考
第1个回答  2017-04-17

    后面的函数名为min,不是main函数,只有叫main的函数才称为主函数,后面的函数是由main函数调用的子程序(称为函数是因为子程序有返回值)

    这个t是用于存放子程序要返回的值的,具体到这个函数来说,可以不用赋初值0

    x和y是属于min函数的参数,是局部有效的变量,将在函数调用时存放调用者(main函数)提供的两个参数,在这里主函数将a和b中保存的值在调用min时顺序赋值给x和y,min中只能用x和y来计算。

    当然,求取最小值这个简单的功能来说用if判断一下可以简单地在主程序中实现,不用再写函数来完成,这个实例实际上要你学习函数的使用、写法、返回值这些内容,m=min(a,b);是具体调用min函数的位置,由于min函数的内容写在了main之后,所以要让main知道如何调研min,在主函数前面特地写出了min函数的调用规则:int min(int x,int y);也可以写成int min(int,int);

追问

所谓的“返回”,还是不太明白,怎么叫返回t,我可不可以理解为,前面给t赋值了x,y最后要返回到t的初始值?这个初始值是起初赋的0,还是作为变量存储位的t本身?那么为什么要返回呢?是不是要为下一次赋值,也就是下一次比较大小做准备?

本回答被提问者和网友采纳
第2个回答  2017-04-17
1.main是主函数,min 是后面定义的函数 在main里面m=min(a,b)调用,
2.定义t是为给其赋值,从min返回值回去,return(t)是将t的值返回回去,m=min(a,b)其实就是m=t(这是函数返回值),
3.a,b是输入值,定义x,y是将a,b的值赋予他们,然后在判断最小值
4.用你这种方法也可以,这是用另一种方法自定义函数,方便调用而已,

C语言程序问题,本人是初学者中的初学者,有个程序请明士解疑。
一.int min 就是普通函数 可以有无数个普通函数 主函数中不调用就不会执行 二.return是返回值的意思 他返回t这个值 赋给m 不加这个的话m就没有值 或者说不回被改变 不能没有 没有他的话min这个函数就没有意义了 三.这个是实参和形参的道理 具体你看一下你的学习资料 这个没有什么...

c语言简单程序题把我搞糊涂了 求大佬解疑
第一张图片:根据优先级,先算++,但由于加加在后面,所以返回加加前的值,也就是7。再算等号,赋值给sum,此时sum就是7。然后轮到逗号,逗号之后是sum自加,得8。然后再到下一个num自加,但跟sum已经没有关系了。所以答案是8。第二张图片:由于括号的原因,等号优先级低,所以先算括号里的值。

objective-c 内存疑惑,求大虾解疑!
这个很正常的,可以用野指针的概念来解释这个问题 当你release掉stu后,stu的retainCount回到0,因此系统调用dealloc方法,此时stu之前被分配的内存模块已经处于随时可以被操作系统回收的状态,但是stu的地址依然保留,变成我们C语言中常说的野指针。而此时,该部分内存也许还并没有被系统分配给其他用途,因此...

二级C语言考试时不小心把程序后面的东西删了,怎么恢复啊?
第二天,小白兔蹦蹦跳跳到面包房,“老板,有没有一百个小面包啊?” 老板:“对不起,还是没有啊” “这样啊。。。”小白兔又垂头丧气地走了。 第三天,小白兔蹦蹦跳跳到面包房,“老板,有没有一百个小面包啊?” 老板高兴的说:“有了,有了,今天我们有一百个小面包了!!” 小白兔掏出钱:“太好了,我买两个!...

二级c语言有几个不懂的问题,希望大家帮忙解疑
则总共消除了(n-1+n-2+...+1+0)个逆序,即N*N\/2个,所以可消除所有逆序,即从小到大排好。这其实就是“冒泡法排序”,LZ还有疑问可以找相关资料看看,或者问度娘搜冒泡法排序。fun(c+4, 6)就是从第5个数:5开始排,即9、8、7、6、5、0 所以程序结果是1、2、3、4、9、8、7、6...

跪求一个c语言编写的日历程序(最好加上注释)
跪求一个c语言编写的日历程序(最好加上注释) 10 以1900年一月一日是星期一为基础,编写程序(要考虑闰年)。1随意输入某年某月某日就可以推算出星期几。2输出一个月的月历。输入年份便罗列出该年的日历... 以1900年一月一日是星期一为基础,编写程序(要考虑闰年)。1随意输入某年某月某日就可以推算出星期几。

C语言斗地主发牌程序,急求,谢谢
这是以随机的形式发牌的。希望能帮到你。int main(){ int a[60]; int b[60]; int w = 0; int wi,wj,wii; int i,j,index,x=0,m; for(i=0;i<54;i++) a[i]=i+1; srand((unsigned)time(0)); for(i=0;i<54;) { index=rand()%54;...

编写一个C程序,用于打印99乘法表。
采纳率:34% 擅长: 操作系统\/系统故障 编程语言 互联网 笔记本电脑 JAVA相关 其他回答 上面的没有注释,初学者往往一头雾水。我的代码最短#include <stdio.h>\/\/包含基本输入输出功能的库文件void main(void)\/\/入口函数没有参数、没有返回值{ for(int p=1;p<=9;p++)\/\/循环9次,从1到9. { for(int ...

输入a,b和c的值,编写一个程序求这三个数的最大值和最小值。要求把求最...
C语言的如下:#include <stdio.h>void main(){ int max(int x,int y,int z); int a,b,c,e; printf("请输入三个整数!\\n"); scanf("%d %d %d",&a,&b,&c); e=max(a,b,c); printf("max=%d\\n",e);}int max(int x,int y,int z){ int t=x>y?x:y; t=t>z?t:z; return (...

怎样编写c语言程序在windows下检测usb设备的插入?求大侠解疑!
正好接触过这方面的东西,windows有一个检测USB口状态的消息循环,当有USB设备插入或拔出时,会向消息队列写入一个WM_DEVICECHANG的消息(注意这是xp系统的消息,win7有保护机制,你自己搜索一下解决方法)。你设计的程序,要写一个窗口的回调函数,在函数中检测这个消息,就ok了。

相似回答
大家正在搜