鱼C论坛

 找回密码
 立即注册
查看: 8429|回复: 23

求编写一个C程序

[复制链接]
发表于 2012-9-9 11:57:52 | 显示全部楼层 |阅读模式
10鱼币
假设x,y是整数,编写程序求x^y的最后3位数,要求x,y从键盘输入。

最佳答案

查看完整内容

#include #include void main() { int x,y,i=1; long s; scanf("%d,%d",&x,&y); s=pow(x,y); printf("%ld\n",s); for(i=1;i
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-9-9 11:57:53 | 显示全部楼层
#include<stdio.h>
#include<math.h>
void main()
{
int x,y,i=1;
long s;
scanf("%d,%d",&x,&y);
s=pow(x,y);
printf("%ld\n",s);
for(i=1;i<=3;i++)
{
printf("%ld\t",s%10);
s=s/10;
if(s==0)
break;
}
}


补充内容 (2012-10-4 19:23):
三个数分别是个位,十位,百位
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-9-9 12:07:48 | 显示全部楼层
是x的y次平方吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-9-9 12:51:34 | 显示全部楼层
  1. #include <stdio.h>

  2. void main()
  3. {
  4.         int i , j , c[3] , sum=1;
  5.         int x , y , n = 0;

  6.         printf( " x = " );
  7.         scanf( "%d" , & x );
  8.         printf( " y = " );
  9.         scanf( "%d" , & y );

  10.         for( i = 1 ; i <= y ; i ++ )
  11.         {
  12.                 sum *= x;
  13.         }
  14.        
  15.         for(j = 0 ; j < 3 ; j ++ )
  16.         {
  17.                 c[j] = sum % 10 ;

  18.                 sum = sum / 10;
  19.         }

  20.         sum = 0;
  21.         for( j = 2 ; j >= 0 ; j --)
  22.         {
  23.                 sum = sum * 10 + c[j];
  24.         }

  25.         printf("%d\n" , sum);
  26. }
复制代码
我也是一个初学者,没什么高深的算法!希望能帮助到你!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-9-9 13:14:00 | 显示全部楼层
X、y的范围呢
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-9-9 13:15:17 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-9-9 13:17:27 | 显示全部楼层
  1. int x,y;
  2.         scanf("%d%d",&x,&y);
  3.         int s=1,i;
  4.         for(i=0;i<y;i++)
  5.         {
  6.                 s=(s*x)%1000;
  7.         }
  8.         printf("%d\n",s);
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-9-9 21:22:09 | 显示全部楼层

貌似输出不对哦!!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-9-9 21:44:32 | 显示全部楼层
绝影&瞬风 发表于 2012-9-9 21:22
貌似输出不对哦!!

比如?                        
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-9-9 21:56:51 | 显示全部楼层
  1. #include<stdio.h>
  2. #include<math.h>

  3. int mypow(int x,int y,int m);

  4. int main(void) {
  5.         int x,y,m,n;
  6.         while(scanf("%d %d",&x,&y)!=EOF) {
  7.                 m=mypow(x,y,1000);
  8.                 n=m%1000;
  9.                 printf("The last 3 numbers is %d.\n",n);
  10.         }
  11. }

  12. int mypow(int x,int y,int m){ //快速幂乘法,复杂度log2(y)
  13.          int ret=1;
  14.          x%=m;
  15.          while(y>0) {
  16.                 if(y&1)ret=ret*x%m;
  17.                 x=x*x%m;
  18.                 y>>=1;
  19.          }
  20.          return ret;
  21. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-9-10 13:27:21 | 显示全部楼层
int  fu(int x,int y)
{
        int temp,sum = 1;
        temp = x % 1000;
       
        while(y--)
        {
                        sum *= temp;
                        sum %= 1000;
        }

        return sum;       
}
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-9-10 13:54:50 | 显示全部楼层
支持11楼,完善一点点
#include "stdafx.h"
#include <windows.h>


int _tmain(int argc, _TCHAR* argv[])
{
       
            int x,y;//求X的Y次方结果的后面3位数
               
            scanf("%d %d",&x,&y);
                        if(x==0)
                        {
                                printf("分母不能为0!");
                        }
                        else
                        {
                                int s=1,i;
                                for(i=0;i<y;i++)
                                {
                                                s=(s*x)%1000;
                                }
                                printf("%d\n",s);
                        }
                        system("pause");
        return 0;
}
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-9-10 14:35:36 | 显示全部楼层
#include "sdtio.h"
int x,y,k,max=0;//k用于循环,max是x的y次方和
scanf("%d",&x);//赋值
scanf("%d",&y);
max=x;
for(k=0;k<=y;k++)
{
max=max*x;
}
printf("最后三位数是:%d",max%1000);

大概是这样吧
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-9-10 20:56:59 | 显示全部楼层
fán人的智慧 发表于 2012-9-10 14:35
#include "sdtio.h"
int x,y,k,max=0;//k用于循环,max是x的y次方和
scanf("%d",&x);//赋值

出错了,请修改!!!!!!!!!!!!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-9-11 12:15:51 | 显示全部楼层
绝影&瞬风 发表于 2012-9-10 20:56
出错了,请修改!!!!!!!!!!!!

就意思意思嘛   无格式不规范别介意
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-9-11 16:27:51 | 显示全部楼层
fán人的智慧 发表于 2012-9-11 12:15
就意思意思嘛   无格式不规范别介意

嘛,建议有空就修改嘛
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-9-11 17:00:12 | 显示全部楼层
你说的错误是在网站不能ac?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-9-13 11:36:09 | 显示全部楼层
绝影&瞬风 发表于 2012-9-11 16:27
嘛,建议有空就修改嘛

因为前几天在网吧  没VC  今早起来再自己机子拿VC写了个  现在贴出来
#include "stdafx.h"
#include "stdio.h"

//好几个月没写C了  不足之处请指出
int main(int argc, char* argv[])
{
        int x,y,he;//he存放x^y的值
        printf("\n题目:假设x,y是整数,编写程序求x^y的最后3位数,要求x,y从键盘输入。\n\n");
        printf("请输入x的值:");//赋值
        scanf("%d",&x);
        printf("请输入y的值:");
        scanf("%d",&y);
        if(y<=0||x==0)//只过滤了0和负数,个人觉得应该搞个字母过滤,还是意思得了
        {
                printf("\n\t格式错误\n\n");
                return 0;
        }
        he=x;//任何数与0相乘都得零 所以设he=x
        for(int s=1;s<y;s++)//循环
        {
                he=he*x;
        }
        printf("x^y的最后3位数为%d,%d,%d\n\n",he%1000/100,he%100/10,he%10);//输出he的百位、十位、个位
        return 0;
}
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-9-24 15:56:46 | 显示全部楼层
#include<stdio.h>
void main()
{
int x,y,z,i,q,w,a,s,d;
z=1;
i=0;
while(i<y)
{
z=z*x;
i++;
}
q=z%10;//求个位数
w=z/10;
a=w%10; //求十位
s=w/10;
d=s%10; //求 百位
z=100*d+10*a+q;
printf("%d",z)
}
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-9-24 21:32:14 | 显示全部楼层
有没有简洁又正确的答案?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-9-30 05:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表