
正文
整数x的y次方函数c语言 求x的y次方c语言
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
在c语言中给定一个函数函数的功能是求整数x的y次方的低三位值
long fun(int x,int y,long *p )
{ int i;
long t=1;
for(i=1; i=y; i++)
t=t*x;
*p=t;
t=t%1000;
return t;
}
给你一个程序验证:
#include stdio.h
long fun(int x,int y,long *p )
{ int i;
long t=1;
for(i=1; i=y; i++)
t=t*x;
*p=t;
t=t%1000;
return t;
}
int main()
{
long t,r;
int x,y;
printf("\nInput x and y: "); scanf("%ld%ld",x,y);
t=fun(x,y,r);
printf("\n\nx=%d, y=%d, r=%ld, last=%ld\n\n",x, y,r,t );
return 1;
}
相关问答
Q1: C语言中x^y是什么意思?
x^y的意思是按位异或整数x的y次方函数c语言,当两个数的二进制表示整数x的y次方函数c语言,进行异或运算时,当前位的两个二进制表示不同则为1相同则为0。
也叫半加运算,其运算法则相当于不带进位的二进制加法整数x的y次方函数c语言:二进制下用1表示真,0表示假,则异或的运算法则为:0⊕0=0,1⊕0=1,0⊕1=1,1⊕1=0(同为0,异为1),这些法则与加法是相同的,只是不带进位,所以异或常被认作不进位加法。
扩展资料
若需要交换两个变量的值,除了通常使用的借用中间变量进行交换外,还可以利用异或,仅使用两个变量进行交换。
位运算时把数字用二进制表示之后,对每一位上0或者1的运算。理解位运算的第一步是理解二进制。二进制是指数字的每一位都是0或者1.比如十进制的2转化为二进制之后就是10。
右移运算符mn表示把m右移n位。右移n位的时候,最右边的n位将被丢弃。但右移时处理最左边位的情形要稍微复杂一点。这里要特别注意,如果数字是一个无符号数值,则用0填补最左边的n位。如果数字是一个有符号数值,则用数字的符号位填补最左边的n位。
参考资料来源:百度百科-异或
Q2: 用C语言编写一个计算用来求 x 的 y 次幂的函数:int Pow(int x,int y)。
看的出来你用的是32位的软件(1410065408约为2的30(1073741824)次方到31次方(2 147 483 648)),那int的最大长度就是32位,即-2 147 483 648~2 147 483 647间,超出这个长度就会显示不全导致错误,故可以将子函数的返回值设为double即64位,这样就可以存更多的数据了。
Q3: c语言,计算x的y次方,结果是大整数。
#include stdio.h
#include string.h
// 加法,加数与和都用字符串保存
void add(char *n1, char* n2, char *result)
{
int i, j, k, b=0;
i = strlen(n1) - 1;
j = strlen(n2) - 1;
if(i = j) k = i;
else k = j;
result[k+1] = 0; // 先假定最高位加法没有进位,加法结果仍然是k位数字
while(i = 0 j = 0) { // 从个位(最右侧)开始按位相加
result[k] = n1[i--] + n2[j--] + b - '0';
if(result[k] '9') { // 有进位
result[k] -= 10;
b = 1;
}
else b = 0; // 进位标志
k--;
}
if(i j) { // n1比n2的位数多,将多出的部分加上进位标志赋给和的高位
while(i = 0) {
result[k] = n1[i--] + b;
if(result[k] '9') {
result[k] = '0';
b = 1;
}
else b = 0; // 进位标志
k--;
}
}
else if(i j) {
while(j = 0) {
result[k] = n2[j--] + b;
if(result[k] '9') {
result[k] = '0';
b = 1;
}
else b = 0; // 进位标志
k--;
}
}
if(b == 1) { // 还有进位,所有数向右移一位,给空出来的最左侧的最高位置为一
k = strlen(result);
result[k+1] = 0;
for(i = k; i 0; i --)
result[i] = result[i-1];
result[0] = '1';
}
}
// 乘法,乘数是一个个位数,函数利用了加法运算
void mul1(char *n1, char n2, char *result)
{
int i, n, k, b=0;
k = strlen(n1);
result[k+1] = 0;
for(i=k-1; i = 0; i--) {
n = (n1[i]-'0')*(n2-'0')+b;
if(n 9) {
b = n / 10;
result[k--] = (n%10) + '0';
}
else {
b = 0;
result[k--] = n + '0';
}
}
if(b 0)
result[0] = b+'0';
else {
for(i = 1; result[i] != 0; i++)
result[i-1] = result[i];
result[i-1] = 0;
}
}
// 乘法,函数利用了乘数为个位数的乘法运算
void mul(char *n1, char *n2, char *result)
{
int i, j, l;
char t1[161], t2[161];
strcpy(result, "0");
l = strlen(n2);
for(j = l-1; j = 0; j--) {
mul1(n1, n2[j], t1);
for(i = 0; i l-j-1; i++)
strcat(t1, "0");
strcpy(t2, result);
add(t1, t2, result);
}
}
// 乘方运算,函数利用了乘法运算
void powlong(int x, int y, char *result)
{
int i;
char t1[81], t2[3];
sprintf(result, "%d", x);
for(i = 1; i y; i++) {
strcpy(t1, result);
sprintf(t2, "%d", x);
mul(t1, t2, result);
}
}
main()
{
char r[161];
int x, y;
do {
printf("输入X(1-10之间)和Y(1-20之间): ");
scanf("%d %d", x, y);
if(x 10 || x 1 || y 20 || y 1)
continue;
powlong(x, y, r);
printf("%d的%d次方=%s\n", x, y, r);
} while(x || y); // x=0 y=0时结束
}
Q4: C语言中x^y是什么意思
根据问题补充。
^=
是个异或并赋值的操作符。属于位操作符。二者不同返回1,相同返回
0;
意思是
x与y异或的结果存入
x。
假如
x的二进制是
00000000
00000000
00000000
11111111;
或者更长
y的二进制是
00000000
00000000
11111111
00001111;
则
x^=y;之后
x
的二进制是
00000000
00000000
11111111
11110000;
Q5: 用c语言函数求x的y次方
int pow(int x,int y)
{
int sum=1;
for (int i=0;iy;i++)
sum*=x;
return sum;
}
整数x的y次方函数c语言的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于求x的y次方c语言、整数x的y次方函数c语言的信息别忘了在本站进行查找喔。







