c语言带返回值的写法,C语言返回值 输出

C语言返回值 输出

答案:4  信息版本:手机版

解决时间 2019-10-06 02:36

已解决

2019-10-05 09:36

void change(int x,int y)

{int temp;

temp=x;x=y;y=temp;

printf("%d%d\n",x,y);

}

main()

{int a,b;

printf("input two numbers:\n");

scanf("%d%d",&a,&b);

change(a,b);

printf("%d%d\n",a,b);

getch();

}

为什么输入1 2则显示 两个结果

2 1

1 2

change 函数不是没有返回值吗 那为什么还能printf 输出呢

主函数中 change(a,b);

printf("%d%d\n",a,b);

这里change(a,b);执行void 在这里就输出结果吗?

那 下边的printf("%d%d\n",a,b); 执行的结果又是哪个呢

是change(a,b)的结果吗 要是 那为什么不输出2 1呢

那要不是 要他有什么用呢 因为在change(a,b);中已经输出2 1了

void main()

{

int n;

printf("input number\n");

scanf("%d",&n);

s(n);

printf("n=%d\n",n);

}

int s(int n)

{

int i;

for(i=n-1;i>=1;i--)

n=n+i;

printf("n=%d\n",n);

}

这个程序和上边同样的问题 在第六步输出值吗? 第七步输出的是谁的值? 怎么让上边的程序运行结果是 输入100 返回 100,5050呢

int s1,s2,s3,v;

main()

{int a,b,c;

printf("input three nums:\n");

scanf("%d\n%d\n%d\n",&a,&b,&c);

s1=a*b;

s2=a*c;

s3=b*c;

v=a*b*c;

printf("%d\n%d\n%d\n%d\n",s1,s2,s3,v);

getch();

}

为什么输入三个值不可以 非得输入四个值才能显示结果呢?

学了c语言 学的是越来越不懂了

最佳答案

2019-10-05 10:11

以后最好把问题编上号,方便回答。

Q:change 函数不是没有返回值吗 那为什么还能printf 输出呢

A:因为change里有printf,不管有没有返回值,都要执行这一句啊。

Q:这里change(a,b);执行void 在这里就输出结果吗?

A:是的。这里调用了change,change里有个printf.所以会输出第一次。

Q:那 下边的printf("%d%d\n",a,b); 执行的结果又是哪个呢

是change(a,b)的结果吗 要是 那为什么不输出2 1呢

那要不是 要他有什么用呢 因为在change(a,b);中已经输出2 1了

A:下边的printf("%d%d\n",a,b);的执行结果就是1 2.为什么不输出2 1是因为在change函数里输出前把这2个值对调了。而change内部的a b与main中的a b不是相同的内存空间,只是change内部的a b在change函数刚开始时被赋上了main中a b的值而已。所以change中的a b不是main中的a b,因此输出值不同。

Q:这个程序和上边同样的问题 在第六步输出值吗? 第七步输出的是谁的值? 怎么让上边的程序运行结果是 输入100 返回 100,5050呢

A:首先,程序不是以“步”为计数单位的,而是以“行”为计数单位的,所以我完成不明白你第六步,第七步是什么意思。这个程序在调用s(n);时输出了5050,而在main中的printf("n=%d\n",n); 时输出了100.因为你main中的n值完全没变。

因为你scanf时用的是\n,建议用逗号之类的可以显示的字符。scanf是以无法显示的字符作为默认分隔符的。你的程序最好写为:

int s1,s2,s3,v;

main()

{int a,b,c;

printf("input three nums:\n");

scanf("%d,%d,%d",&a,&b,&c);

s1=a*b;

s2=a*c;

s3=b*c;

v=a*b*c;

printf("%d\n%d\n%d\n%d\n",s1,s2,s3,v);

getch();

}

除了最后一个问题以外,都是不应该犯的错误。你学C的时候完全没有学习好形参和实参。如果你弄明白了函数形参和实参,以及函数内部变量的知识,你就明白了。

至于最后一个问题,看过scanf的实现,你就明白了。

全部回答

1楼

2019-10-05 13:07

当你调用函数 需要用到返回值的时候 就用咯。

比如说   你想写个prt函数  想把里面的i打印出来。 有两种方法

1是直接在里面打印

void  int  prt()

{

int i=0; printf("%d",i);

}

你也 可以 使用函数返回值来  打印

void  main()

{

int  x;

x=prt(); printf("%d",x);

}

int  prt()

{

int i=0;

return i;

}

函数是否需要返回值 是根据程序员来定义的

什么情况下才在函数前面加void?

当函数不需要 返回值的时候就加void。加了void  就表示  没有返回值的  你们retuen  就是错误的

2楼

2019-10-05 12:01

是C语言的初学者吗,我也是,咱们来讨论一下吧

首先,这个输出的结果是正确的,肯定是有两个输出的,因为一个是在change()函数中,另一个是在main()函数中的,无论调用的函数是否有返回值,都会执行这个函数中的语句,自然也就会有输出了;另外函数参数的传递,传的只是值,也就是在change()中的参数接受了主函数传给它的值,利用这个值来操作,但是改变的只是这个函数中相应变量的值,而无法改变主函数中对应变量的值,所以主函数中的a,b是没有变化的,但是change()中的x,y的值确实是交换了,主函数中的输出是没用的,这个只是交换前的值;

对于第二个程序,首先它是不对的,s()函数是int的,但是却没有返回值,所以应该改为void s(),这个和上面的的同样原理,也是,执行到s()函数,s里有输出语句,所以自然要输出,输出的是1+2+3+......+100的结果,执行完,返回到主函数,又有一个输出,所以一共有两个输出,调用函数传递的参数是值传递,所以不可以改变原变量的值;

对于第三个程序,输入格式是不对的,不应该有\n才对

3楼

2019-10-05 10:56

change 函数不是没有返回值吗 那为什么还能printf 输出呢 ```

虽然它没有返回值但是 执行到了printf所以输出2者没有关系```

返回值是代表这个函数的值的```

函数里面的输出的是形参的结果 `

main中是输出调用后变量的结果`

为的是让你看清形参 和main中实参的区别``

这个程序和上边同样的问题 在第六步输出值吗? 第七步输出的是谁的值?``

问题同上面一样``

100对应的是函数中的输出

5050对应的是main中的n

为什么输入三个值不可以 非得输入四个值才能显示结果呢?

```输入3个值 1个回车即可```

我要举报

如果感觉以上信息为低俗/不良/侵权的信息,可以点下面链接进行举报,我们会做出相应处理,感谢你的支持!

大家都在看

推荐资讯

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值