1. 题目要求

如果一个3位数等于各位数字的立方和,则称这个数为水仙数,例如407=4^3+0^3+7^3。编写一个程序,找出全部的水仙数

2. 题目分析

感觉又和之前的题目大同小异了,先找出解空间,然后找到符合条件的数。那么就直接进行代码尝试吧!

3. 代码尝试

这些都是错误版本

【版本1】

#include "stdio.h"

#include "math.h"

int main(){

int sum,i,j,k;

printf("the narcissus number below are:\n");

for(sum=100;sum<1000;sum++){

for(i=0;i<10;i++){

for(j=0;j<10;j++){

for(k=0;k<10;k++){

if(sum = pow(i,3)*100+pow(j,3)*10+pow(k,3)){

printf("%d\t",sum);

}

}

}

}

}

}

一定是有问题的,那么问题在哪里呢??

【版本2】

#include "stdio.h"

#include "math.h"

int main(){

int sum,i,j,k;

printf("the narcissus number below are:\n");

for(sum=100;sum<1000;sum++){

for(i=0;i<10;i++){

for(j=0;j<10;j++){

for(k=0;k<10;k++){

 if(sum == pow(i,3)*100+pow(j,3)*10+pow(k,3)){

printf("%d\t",sum);

}

}

}

}

}

}

第二次好像要好很多

【关于pow】

原型:extern float pow(float x, float y);

用法:#include <math.h>

功能:计算x的y次幂。

说明:x应大于零,返回幂指数的结果。

 

!震惊,我好像理解错了水仙数的意思,果然不能似是而非呢!!407=4^3+0^3+7^3,连每位数都对应呢!!

所以代码就修改为

【版本3】

#include "stdio.h"

#include "math.h"

int main(){

int sum=0,tmp,a;

printf("the narcissus number below are:\n");

for(a=100;a<1000;a++){

tmp=a;

while(tmp>0){

sum=sum+(tmp%10)*(tmp%10)*(tmp%10);

tmp=tmp/10;

}

if(a==sum) {printf("%d\t",a);}

}

}

但还是有错,为什么呢????

【我觉得我应该犯了一个作用域的问题】

【最终版本】

#include "stdio.h"

#include "math.h"

int main(){

int tmp,a;

printf("the narcissus number below are:\n");

for(a=100;a<=999;a++){

       int sum=0;

tmp=a;

while(tmp>0){

sum=sum+pow((tmp%10),3);

tmp=tmp/10;

}

if(a==sum) {printf("%d\t",a);}

}

}

4. 总结

一定要注意定义变量的作用域哦!!!while,for, if 在这些代码块中的变量定义一定要很注意!!!!

【C语言编程练习】5.10寻找水仙数的更多相关文章

  1. 先定一个小目标:10天自学C语言编程,教你如何改变一生

    C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构.C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现 ...

  2. R语言编程艺术(4)R对数据、文件、字符串以及图形的处理

    本文对应<R语言编程艺术> 第8章:数学运算与模拟: 第10章:输入与输出: 第11章:字符串操作: 第12章:绘图 =================================== ...

  3. Linux C语言编程学习笔记 (1)进程控制入门

    想进行Linux系统开发已经很久了,一直没有付诸实践.今日终于开始学习Linux下的C语言编程,研究一天,终于大概弄明白了Linux系统进程管理的一些基本概念和编程方法,总结下来以方便大家学习和自己实 ...

  4. C语言编程规范

    C语言编程规范 6 函数与过程 6.1 函数的功能与规模设计 函数应当短而精美,而且只做一件事.不要设计多用途面面俱到的函数,多功能集于一身的函数,很可能使函数的理解.测试.维护等变得困难. 6.2 ...

  5. LINUX下C语言编程基础

    实验二 Linux下C语言编程基础 一.实验目的 1. 熟悉Linux系统下的开发环境 2. 熟悉vi的基本操作 3. 熟悉gcc编译器的基本原理 4. 熟练使用gcc编译器的常用选项 5 .熟练使用 ...

  6. 第二章 C语言编程实践

    上章回顾 宏定义特点和注意细节 条件编译特点和主要用处 文件包含的路径查询规则 C语言扩展宏定义的用法 第二章 第二章 C语言编程实践 C语言编程实践 预习检查 异或的运算符是什么 宏定义最主要的特点 ...

  7. 华为C语言编程规范

    DKBA华为技术有限公司内部技术规范DKBA 2826-2011.5C语言编程规范2011年5月9日发布 2011年5月9日实施华为技术有限公司Huawei Technologies Co., Ltd ...

  8. linux 操作系统下c语言编程入门

    2)Linux程序设计入门--进程介绍 3)Linux程序设计入门--文件操作 4)Linux程序设计入门--时间概念 5)Linux程序设计入门--信号处理 6)Linux程序设计入门--消息管理  ...

  9. Go语言编程 (许式伟 等 著)

    第1章 初识Go语言 1.1 语言简史 1.2 语言特性 1.2.1 自动垃圾回收 1.2.2 更丰富的内置类型 1.2.3 函数多返回值 1.2.4 错误处理 1.2.5 匿名函数和闭包 1.2.6 ...

随机推荐

  1. 3DMAX中坐标解析

    World:世界坐标系,又称世界空间.位于各视口左下角的图标,显示了世界坐标系的方向,其坐标原点位于视口中心.该坐标系永远不会变化. Screen:屏幕坐标系,此时将使用活动视口屏幕作为坐标系.在活动 ...

  2. VMware 虚拟机 linux执行 ifconfig 命令 eth0没有IP地址(intet addr、Bcast、Mask) UP BROADCAST MULTICAST 问题

    VMware 虚拟机 linux执行 ifconfig 命令 eth0没有IP地址(intet addr.Bcast.Mask) UP BROADCAST MULTICAST 问题 eth0:网络接口 ...

  3. python魔法方法之构造和析构

    python的类实例化的时候会默认执行该类的构造方法_init_ class Rectangle: def __init__(self,x,y): self.x=x self.y=y def getA ...

  4. C#多线程处理

    创建多线程,并带参数! using System; using System.Collections; using System.Collections.Generic; using System.I ...

  5. subset_lat_dir.sh

    #!/bin/bash     # Copyright 2018 Jarvan Wang # Copyright 2017 Vimal Manohar # Apache 2.0.     cmd=ru ...

  6. 更改MySQL密码

    #安装MySQL5.7参考:https://blog.csdn.net/qq_23033339/article/details/80872136#MYSQL的基础操作参考:https://www.cn ...

  7. Python:匿名函数lambda的函数用法和排序用法

    一.介绍: Lambda函数,是一个匿名函数,创建语法: lambda parameters:express parameters:可选,如果提供,通常是逗号分隔的变量表达式形式,即位置参数. exp ...

  8. 初识Asp.Net WebApi

    using System;using System.Collections.Generic;using System.Linq;using System.Net.Http;using System.T ...

  9. bently addin 二次开发学习

    元素结构: 一些基本元素的添加与绘制: class CreateElement { public static void LineAndLineString() { Application app = ...

  10. mysql登录报错“Access denied for user 'root'@'localhost' (using password: YES”)的处理方法

    环境 CentosOS 6.5 ,已安装mysql 情景 root密码忘记,使用普通用户无法登录 解决 问题一 无法使用mysql命令 参考文章:https://www.cnblogs.com/com ...