return语句是不是直接跳去该函数呀?还执行后边的语句吗?

void main()
{
int chang(char *c,int a);
char c;
int flag=1;
do
{
c=getchar();
flag=chang(&c,flag);
putchar(c);
}
while(c!='\n');
}
chang(char *c,int a)
{
if(*c==' ')
return 1;
else if(a&&*c>='a'&&*c<='z')
*c-='a'-'A';
return 0;
}
这个程序的作用是把空格后的字母编程大写,本人对被掉函数不太理解麻烦解释下谢谢了

void main()
{
int chang(char *c,int a); //声明chang函数,两个形参中,c为要判断的字符,a其实是个标志,当为1时转换大写,为0时不转换,是用来控制遇见空格变大写的。
char c;
int flag=1;
do
{
c=getchar();
flag=chang(&c,flag); //调用函数
putchar(c); //输出转换后的字符串
}
while(c!='\n');
}
chang(char *c,int a)
{
if(*c==' ') //如果遇见空格,返回1,即将标志设为1,则下一个字符变大写
return 1;
else if(a&&*c>='a'&&*c<='z') //如果不是空格,且a=1即是空格后第一个字符,且该字符是小写字符
*c-='a'-'A'; //转换为大写(具体转换应该知道吧,参看ASCII表)
return 0; //返回0.即将标志设为0,也就是在变完空格后第一个字符后将标志设为0后面的字母不变了。
}
该程序是通过chang函数的第二个形参数 int a,(对应的实参是flag)来控制是否变为大写字母的。当遇到空格时,函数返回1,并赋予实参flag。将空格后第一个字母变完后,返回0,并赋予flag,这样就保正只变空格后第一个字符了。

return是函数范围值,当程序执行到return时,该函数就停止,返回return后的值,函数体内return后面的语句就不运行了。注意这里只是终止该函数体,而整个程序还是要运行完的。除非是main函数里遇到了return。
另外,还有exit()函数,他也是终止程序,与return不同的是,遇到exit,整个程序就终止了。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-10-29
return只能退出当前函数,如果多个函数嵌套就不行了,要想整个退出用exit
例如:
fun1(){
return;
printf("fun1") ;
}

fun2(){
fun1();
printf("fun2") ;
}
main(){
fun2();
}
此时main函数调用fun2,然后fun2调用fun1,fun1直接return了,fun1没有打印,但是fun2打印了,如果想不打印fun2,把fun1里面的return改为exit就好了。
第2个回答  2009-04-06
reutrn 是从 chang 这个函数里返回到主程序。
继续执行 flag=chang(&c,flag); 之后的语句,也就是 putchar(c)
第3个回答  2009-04-06
renturn 就不执行下面的函数语句了
第4个回答  2009-04-06
//欢迎在线讨论
#include <stdio.h>
#include <ctype.h>

void main()
{
char c;
int flag=0;
do
{
if(c==' ')
flag=1;
c=getchar();
if(flag==1)
c=toupper(c);
putchar(c);
flag=0;
}
while(c!='\n');
}
相似回答