重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
楼主是程序新手吧?
创新互联长期为近1000家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为自流井企业提供专业的网站设计制作、网站建设,自流井网站改版等技术服务。拥有10年丰富建站经验和众多成功案例,为您定制开发。
问题是这样的
你调试下就看出来了
在power函数中你重新定义了一个int
型的
m变量
那么这个变量没有被赋予初值(在调试的时候你可以看到),这样的话在在循环中就存在逻辑矛盾了。
float
power(double
x,int
n)
{
int
m
=
0;
double
a;
for(m;mn;m++)
x*=x;
a=x;
return
a;
}
这样就对了
另外
还有一个方法
在你的头文件里写#includemath.h
然后使用这个函数
pow(x,n);
就是x的n次方了。
不可以只有全局变量才可以静态变量,只是里面的值不会因为函数调用结束而还原
你在main函数声明 int trans(int,int); 2个参数都是int,而 下面 确是 int trans(int a[][3],int b[][3]) ,参数是int数组,这明显不是一样的类型呀。而且你没有调用 trans函数,你写来干嘛的
什么叫函数矛盾?
你用的是C++编译环境吗?
改成.c就行了
标准C中没有pop这个函数
如果要用C++
#includestack
有pop
push
数据结构的模板
为什么 a1输出的是 1? f();上面不是有 int a=2么?
答:函数f1无法访问main里的a,因此f1里printf是打印的是全局变量的a。
main里虽然有a=2,但由于是int a=2,其实是main内部的一个局部同名变量,和全局的a是两个独立的变量。因此main里a=2不影响全局的a=1。
同理,第二个题 cube();前是因为有 x=5才得125么?
答:没错。
两者是否矛盾?
答:不矛盾。第二个程序里main中的x前没有写int,意味着这不是“定义一个新的x”而是“使用已有的x”。如果你在第二个main的x=5改成int x=1,那么第二个程序输出的就是1*1*1也就是1了。
总结就是:
全局变量在任何函数中都可以修改。比如第二个程序里的x。
如果你在一个函数中重新定义(!)了和全局变量同名的变量(比如第一个程序里的a),那个内部定位的变量和全局变量是两个独立的变量。在该函数中变量a指的是函数内部定义的a。无法访问全局变量的a了。这叫“变量的覆盖”。
如果你在一个函数中没有重新定义(!)和全局变量同名的变量(比如第二个程序,只是用到了x,没有定义x),那么你的操作就是针对全局变量的。
不是类型矛盾,是你的函数定义用了结构体类型,但是类型定义在后面。
把结构体的定义放到函数定义之前。