C语言 求最后三位数值

中学时我们就会求一个数的 n 次方了,但计算机不会,请你来编写一个程序吧。由于计算机比较“笨”,所以我们编写程序的功能不用太强,只要能算出 a 的 n 次方的最后 3 位数就可以了。
输入:
a 和 n 的值。假设 a<=150 。
输出:
求 a 的 n 次方的最后 3 位数。

#include <stdio.h>
int main()
{ int a,b,i,x,y;
scanf("%d%d",&x,&y);
a=x;
if (y==0) printf("The last 3 numbers is 1.\n");
else
{if (y==1) printf("The last 3 numbers is %d.\n",x);
else
{if (a%10==0&&y>=3) printf("The last 3 numbers is 000.\n");
else
{
{for (i=1;i<y;i++)
a=a*x;
b=a%1000;
a=b;
}
printf("The last 3 numbers is %d.\n",b);
}
}
}
}

这是我编的程序,不知道错哪了,求大神们解答

#include <stdio.h>
int main()
{
int a,b,i,x,y;
scanf("%d%d",&x,&y);
if (y==0)
printf("The last 3 numbers is 1.\n");
else
{
if (y==1)
printf("The last 3 numbers is %d.\n",x);
else
{
a=x;
if (a%10==0&&y>=3)
printf("The last 3 numbers is 000.\n");
else
{
for (i=1;i<y;i++) //注意这里的括号
{
a=a*x;
b=a%1000;
a=b;
}
printf("The last 3 numbers is %d.\n",b);
}
}
}
return 0;
}

优化后的程序:
#include <stdio.h>
int main()
{
int a,b,i,x,y;
scanf("%d%d",&x,&y);
b=a=1;
for (i=0;i<y;i++)
{
a=a*x;
b=a%1000;
a=b;
}
printf("The last 3 numbers is %d.\n",b);
return 0;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2018-05-09
#include "stdio.h"//
void main(void){
int a,n,i,s;
printf("Type 2 integers...\na,n==");
scanf("%d%d",&a,&n);
for(s=1,a=a%1000,i=0;i<n;i++){
s*=a;
s%=1000;
}
printf("The lastest 3 numbers are %03d.\n",s);
}本回答被网友采纳
第2个回答  2013-03-12
for (i=1;i<y;i++),实际只执行了y-1次,应改成for (i=1;i<=y;i++)或者for (i=0;i<y;i++)
第3个回答  2013-03-12
能缩进一下吗,看不懂啊

C语言 求最后三位数值
printf("The last 3 numbers is %d.\\n",b);return 0;}

C语言里求一个数的最后三位数值?
数是N,最后一位是a=N%10,倒数第二位是b=(N%100-a)\\10,倒数第三位是c=(N%1000-b*10-a)\\100

C语言 求最后3位数值
比如你求出末三位是 111 赋值给变量 a,然后用 if 语句判断这三个数值是否相等。就是加一句 if(a \/ 100 == a \\ 100 && (a \\ 100) \/ 10 == a \\ 100)printf("The last 3 numbers is %d",a\/100);注意 if 条件里面的除号 \/ 和余号 \\ ,这一步就是判断3个数值是否相等 ...

c语言求最后三位数值
循环之前加一个a=a%1000;然后循环中b=(b*a)%1000;这样就不会超了。实在不行,你就只能整大数乘法了。用字符串或者用数组都可以实现。

怎么用c语言输出一个数的后三位,比如计算出一个结果2111,只输出111_百...
int n;scanf("%d", &n);printf("%03d\\n",n%1000);这样写就是多于三位的取后三位,不足三位的补0,请采纳

C语言 求一个数N次方最后三位数
一、对于任意一个数,求最后三位数,可以对其用1000取余。 即对于任意的n,其最后三位数为 n%1000 二、对于任意整数n, 如果后三位为l,那么存在整数k, 可以将n写作 n=k*1000+l 的形式。三、对于任意的整数n1, n2,写作k1*1000+l1,k2*1000+l2的形式。 那么 n1*n2=(k1*1000+l1)*(k2*...

用C语言编写程序求一个整数的任意次方的最后三位数
<stdio.h>void main(){ int num, n,i,pn=1; printf("input num: "); scanf("%d", &num ); printf("input n: "); scanf("%d", &n ); for( i=0;i<n;i++ ) {pn *= num;pn %= 1000 ; } printf("%d的%d次方的最后三位数=%d\\n", num,n...

...假设x,y是整数,编写程序求X的y次方的最后三位数,要求x、y从键盘输 ...
乘积的最后三位值只与乘数和被乘数的后三位有关,与乘数和被乘数的高位无关。从这入手写就没问题了。include <stdio.h>\/\/n次方的后三位数int main (){int x,y,i,last;last=1;\/\/记得初始化scanf ("%d%d",&x,&y);for (i=1;i<=y;i++){last=last*x%1000;}if (last==0)printf (...

C语言编程:求a的n次方的最后3位数(求大神帮忙!注意数据类型以及测试用 ...
=EOF) { printf("The last 3 numbers is "); int res=my_pow(a,n); if(res!=0) { printf("%d\\n",res); } else { printf("000\\n"); } } return 0;}

C语言,13的n次方的最后三位
char ch='y';while(ch=='y'){ HERE:printf("请输入大于1的整数:");scanf("%d",&n);ch=getchar(); \/\/接收回车符 if(n<=1) goto HERE;for(last_3=1,i=1;i<=n;i++) last_3=last_3*13%1000;printf("13的%d次方的最后三位数为:%d\\n",n,last_3%1000);printf("putin \\'...

相似回答