关于C语言的小问题(不理解)

来源:百度知道 编辑:UC知道 时间:2024/06/05 06:04:16
本程序的作用是给定b值,输入a和m,求a*b和a^m的值。
文件filel.c中的内容为

#include <stdio.h>
int A;
void main()
{int power(int);
int b=3,c,d,m;
printf("enter the number a and its power m:\n");
scanf("%d,%d",&A,&m);
c=A*B;
printf("%d*%d=%d\n",A,b,c);
d=power(m)
printf("%d**%d=%d\n",A,m,d);
}
文件file2.c中的内容为

extern A;
int power(int n)
{int i,y=1;
for(i=1;1<=n;i++)
y*=A;
return(y);
}

能不能解释一下file2.c中倒数第3行的y*=A的意思?解释清楚一点~比如我看了第二个的回答才明白,那我会选第二个回答的,即使和第一个差不多

C语言中提供了对一个数的自加、自减、自乘、自除,它们分别以
x+=y,x-=y,x*=y,x/=y(这里的x,y均为变量)的形式出现
x+=y即x=x+y,x-=y即x=x-y,x*=y即x=x*y,x/=y即x=x/y
文件file2.c
extern A;
int power(int n)
{int i,y=1;
for(i=1;1<=n;i++)
y*=A;
return(y);
}
就是下面这句实现y^m:
for(i=1;1<=n;i++)
y*=A;
展开即:
for(i=1;1<=n;i++)
y=y*A;
A来自于file1中

千万别选“无满意答案了”,我很怕。

int power(int n)
{int i,y=1;
for(i=1;1<=n;i++)
y*=A;
return(y);
}
这段求的是A的N次方
N是形式参数~当调用的时候参数填M就相当于计算A的M次方

计算过程是i从1到n垒加~每次执行y*=A;
y*=A基本同等于y=y*A就是把Y目前的值*A得到的结果又赋值给Y
这样就做到了垒乘

y*=A就是y=y*A
file2.c中的内容 extern A 使两个A是同一个值
power是求方的

y*=A就是y=y*A
如果A是一大串的表达式则先这串表达式全部计算完后再和y相乘,相当于
y=y*(A )
其他类型的复合赋值都是这么处理的

今天上午看了你代码没来得及答,其实你把谭浩强的C语言仔细看下就知道了,a^m就是a的m次方,书上有这样的定义的,然后相信你就会很容易明白了,很明显,你的
int power(int n) 函数就是用来将a乘自己乘m次的,即a的m次方