.#include<stdio.h>int a= 5;int b=7;

1..#include<stdio.h>
2.int a= 5;intb=7;
3.main()
4.{int a=4,b=5,c;
5.c=plus(a,b);
6.printf("A+B=%d\n",c);
7.}
8.plus(int x,int y)
9.{int z;
10.z=x+y;
11.return(z);
12.}
是不是在main里定义啦局部变量所以输出是就优先使用局部变量里定义的4+5=9
那这个程序怎样改才能够是用外部变量定义的a=5,b=7 使答案为12呢?
将第8行这样改可以吗
8.plus( ) 使plus函数里没有定义变量 所以使用全局变量?
9.{int z;
10.z=x+y;
11.return(z);
12.}

你这样改,是可以得到答案12,但这不是好方法。
正确的方法是将第5行改为:plus(::a,::b);这样::a和::b代表全局变量

但不建议这样做,出现中不要将全局变量与局部变量重名,这样的编程习惯不好,以后程序复杂了,很容易发生错误。
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-02-13
楼上的说得对。所以在C/C++程序设计中前辈们都建议尽量少用全局变量
第2个回答  2011-02-13
百度一下编程十万个为什么

上面有正解

.#include<stdio.h>int a= 5;int b=7;
你这样改,是可以得到答案12,但这不是好方法。正确的方法是将第5行改为:plus(::a,::b);这样::a和::b代表全局变量。但不建议这样做,出现中不要将全局变量与局部变量重名,这样的编程习惯不好,以后程序复杂了,很容易发生错误。

int a=5;int b=7; void main() { int a=4,b=5,c; c=plus(a,b); prin...
include<stdio.h>int a=5;int b=7;void main(){ int a=4,b=5,c;c=plus(a,b); \/\/使用局部变量a和b(4和5)printf("A+B=%d\\n",c);}plus(int x,int y){int z;z=x+y;return(z); }运行后会输出:A+B=9

c语言编程输出a=5 b=7 a-b=-2 a\/b=71%急
include <stdio.h> int main(int argc, char **argv){ int a = 5;int b = 7;printf("a=%d\\r\\n", a);printf("b=%d\\r\\n", b);printf("a-b=%d\\r\\n", a-b);printf("a\/b=%d%%\\r\\n", a*100\/b);return 0;} 请采纳!

有两个变量a=5,b=7请用C语言的方式让a与b的值互换
a=a-b,既然b是原始a的值,a是原始a和原始b的和,那么差值肯定就是原始b的值。

...void fun(){a=100;b=200;}main(){int a=5,b=7;fun();printf("%d%d...
答案是5,7而不是100,200 fun函数里的a,b只在fun函数里有效,离开fun函数无效果.main函数里的a,b只在main函数里有效,离开main函数也无效。fun函数里的a,b和main函数里的a,b是两个不同的内存地址,而不是同一个.a,b和a,b是不同的 你对全局和内部变量没搞清楚。

#include<stdio.h> main() { int a=5,b=8,c=3,max; max=a; if(c>b...
int a=5,b=8,c=3,max;max=a;if(c>b)\/\/该if没有else与它配对 { if(c>a){ max=c;} else\/\/这个else与上面的if配对 { if(b>a)\/\/这个if没有else与它配对 { max=b;} } } printf("max=%d\\n",max);} 程序执行时,max=a,即max=5;执行第一个分支语句if(c>b)时,因为c>b是...

#include<stdio.h> void main() { char a='本金',b='年数',c='年利率...
{int x ;printf(“%d\\n”,(x=4*5,x*2,x+20));}A)20B)40C)60D)809.执行以下程序后的输出结果是( )。#include "stdio.h"void main(){int i = 0, j = 0, a = 6;if ((++i0)||(++j0)) a ++;printf("i=%d, j=%d, a=%d\\n", i, j, a);}A)i=0, j=0, a=6B)i=...

#include<stdio.h> int main() {int a=5,b=6,c=7,d=8,m=2,n=2; pri...
先计算m=a>b , 它是把后面比较的结果赋值给m,m=5>6, 显然5>6是不成立的,故比较的结果是0,就把0赋值给m了。所以m=0 这样,算式变成了0&&(n=c>d)。这时,C发挥它的聪明了~~~;因为参与&&运算的两个数字中,若有一个是0,结果就会是0(跟另一个数字无关了!),所以,到...

#include<stdio.h> main(){ int a=3,b=7; printf("%d\\n",a++ + ++b...
a++是先使用 用完后加1,而++b是先加1,再使用,a++ + ++b相当于a+(1+b),当a用完之后再加上1,后来的b%a b就变成了8,a就变成了4,所以就是4,而前面的a++当用完之后就变成4了。

#include"stdio.h"
2+5=7很正常啊 return(*b)++; 这里返回自增前的b指向的值,改为return ++(*b)才会返回值加1

相似回答