鱼C论坛

 找回密码
 立即注册
查看: 5445|回复: 9

给鱼油练习的简单C语言算法题目。。12月3日

[复制链接]
发表于 2012-12-3 00:04:51 | 显示全部楼层 |阅读模式
5鱼币
本帖最后由 lqyha 于 2012-12-4 00:24 编辑

题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。(C语言代码)

要求:不能抄袭,最好格式规范化,且在一些重要步骤上标明注释。。写的好的代码有奖励的哦。亲、、限时一天、明天换新题目。

最佳答案

查看完整内容

#include int cube(int i); /*求立方函数*/ void main() { int i, unit, decade, hundreds; for(i = 100; i < 1000; i++) { unit = i%10; /*求出个位*/ decade = (i%100)/10; /*求10位*/ hundreds = i/100; /*求出百位数*/ if(i == cube(unit) + cube(decade) + cube(hundreds)){ printf("%d \n", i); } } } int cube(int i) { int k; k = i*i*i; re ...
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-12-3 00:04:52 | 显示全部楼层
#include <stdio.h>
int cube(int i); /*求立方函数*/

void main()
{
        int i, unit, decade, hundreds;


        for(i = 100; i < 1000; i++)
        {
                unit = i%10;          /*求出个位*/
                decade = (i%100)/10;  /*求10位*/
                hundreds = i/100;      /*求出百位数*/

                if(i == cube(unit) + cube(decade)  + cube(hundreds)){

                        printf("%d \n", i);
                        }
        }
       
}

int cube(int i)
{
        int k;

        k = i*i*i;

        return k;
}

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

使用道具 举报

发表于 2012-12-3 11:20:19 | 显示全部楼层
本帖最后由 仰望天上的光 于 2012-12-3 11:22 编辑

  1. #include <stdio.h>
  2. #include <math.h>
  3. //以百位,个位,十位数字构成一个三位数
  4. unsigned short makeNumber(
  5.      unsigned short hundreds,
  6.      unsigned short tens,
  7.      unsigned short digits
  8. );
  9. //输入百位,个位,十位数字判断一个三位数是否水仙花数
  10. int isNarcissistic(
  11.      unsigned short hundreds,
  12.      unsigned short tens,
  13.      unsigned short digits
  14. );
  15. int main(void)
  16. {
  17.   unsigned short digits;//个位位数
  18.   unsigned short tens;//十位数
  19.   unsigned short hundreds;//百位数
  20.   for( hundreds = 1; hundreds <10; ++hundreds )
  21.     for( tens = 0; tens <10; ++tens )
  22.       for( digits = 0; digits <10; ++digits )
  23.         if( isNarcissistic( hundreds, tens, digits ) )
  24.            printf("%3u\n", makeNumber( hundreds, tens, digits ));
  25.   return 0;
  26. }
  27. int isNarcissistic(
  28.      unsigned short hundreds,
  29.      unsigned short tens,
  30.      unsigned short digits
  31.     )
  32. {
  33.   return pow(hundreds,3)+pow(tens,3)+pow(digits,3) == makeNumber( hundreds, tens, digits );
  34. }
  35. unsigned short makeNumber(
  36.      unsigned short hundreds,
  37.      unsigned short tens,
  38.      unsigned short digits
  39.     )
  40. {
  41.   return 100*hundreds+10*tens+1*digits;
  42. }

复制代码

评分

参与人数 1鱼币 +5 收起 理由
lqyha + 5 该程序用了3个for循环分别算出了百位十位和.

查看全部评分

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

使用道具 举报

发表于 2012-12-3 12:21:53 | 显示全部楼层
#include<stdio.h>
int main(void)
{
        int n=0,len=0;
        int tmpn,sum,r;
    while(scanf("%d",&n)!=EOF)
        {
                if ( n<0 )
        {
                printf("Incorrect input!\n");
                return -1;
        }

        tmpn=n; sum=0;
        for(len=1; 1 ;len++)
        {
                r=tmpn%10;
                sum=sum+r*r*r;
                if (tmpn<10)
                        break;
                else
                        tmpn=tmpn/10;
        }
        // determine whether the integer is a narcissistic number(水仙花数)
        printf("You have inputed a %d-bit integer %d, which %s a narcissistic number\n", len,n, (sum==n)?"is":"is not" );
        }
        return 0;
}

评分

参与人数 1鱼币 +3 收起 理由
lqyha + 3 让用户输入判断,和题目有点偏差。不过思路.

查看全部评分

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

使用道具 举报

发表于 2012-12-3 14:36:13 | 显示全部楼层
have a see
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-12-3 18:27:02 | 显示全部楼层
#include <stdio.h>
void main()
{
  int a,b=0,c=0,d=0,e=0;
  for (a=100;a<=999;a++)
  {
   b=a/100;                                   /*        求出百位数      */
   c=(a-100*b)/10;                       /*        求出十位数     */
   d=a-100*b-10*c;                      /*        求出个位数    */
   e=b*b*b+c*c*c+d*d*d;           /*   求出百、十、个  位数之和   */
   if (a==e)                                  /*判断是否为水仙数*/
   {
    printf("%d %d %d %d\n",a,b*b*b,c*c*c,d*d*d);
   }
  }
}

评分

参与人数 1鱼币 +1 收起 理由
lqyha + 1 格式有待改进,继续努力吧。。。

查看全部评分

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

使用道具 举报

 楼主| 发表于 2012-12-4 00:14:30 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-12-4 00:19:40 | 显示全部楼层

该程序用了3个for循环分别算出了百位十位和个位。。思路很好、、不过有时候简单点比较好。。也向各位鱼友推荐下这思路或许在别的程序上能用得到。。 也给个5分吧。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-12-4 00:24:14 | 显示全部楼层
殘影 发表于 2012-12-3 12:21
#include
int main(void)
{

思路很好。。。特别是那个for循环内的语句。。。。。不过好像只能判断一个数。。如果要判断多个数怎么写?向鱼友们推荐这思路。。。。好好看看这算法。。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-12-4 09:23:47 | 显示全部楼层
新手,路过。。。。羡慕
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-16 15:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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