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. APACHE 安装

    APACHE  安装 到官网下载apache软件 解压apache软件 安装APR相关优化模块 创建APACHE安装目录 安装apche,开始预编译(检测安装环境) 编译和安装 启动时报错及排错 修改 ...

  2. PMP知识点(二)——三点估算的两种方法对活动持续时间估算的影响和如何取舍

    一.准备工作 活动持续时间的估算属于PMBOK中第六章项目时间管理中第五节6.6估算活动持续时间的内容. 三点估算是6.5和7.2(估算成本)中应用到的一种工具和技术.数据流向图参考如下: 其应用到的 ...

  3. mongodb增加新字段报错解决方法

    今天想在项目的一个集合里增加一个新字段 db.article.update({},{$set:{status:0}},{multi:true}) multi : 可选,mongodb 默认是false ...

  4. zipline框架--简介

    Zipline is a Pythonic algorithmic trading library. It is an event-driven system for backtesting. Zip ...

  5. mysql—增删改查语句总结

    关于MySQL数据库——增删改查语句集锦 一.基本的sql语句 CRUD操作: create 创建(添加) read 读取 update 修改 delete 删除 .添加数据 ,'n001','201 ...

  6. Hadoop yarn任务调度策略介绍(转)

    理想情况下,我们应用对Yarn资源的请求应该立刻得到满足,但现实情况资源往往是有限的,特别是在一个很繁忙的集群,一个应用资源的请求经常需要等待一段时间才能的到相应的资源.在Yarn中,负责给应用分配资 ...

  7. rabbitmq - (消息队列) 的基本原理介绍

    介绍 MQ全称为Message Queue, 是一种分布式应用程序的的通信方法,它是消费-生产者模型的一个典型的代表,producer往消息队列中不断写入消息,而另一端consumer则可以读取或者订 ...

  8. mac配置变量失败导致ls命令都失效

    1.在命令行中输入 export PATH=/usr/bin:/usr/sbin:/bin:/sbin:/usr/X11R6/bin 这样可以保证命令行命令暂时可以使用.命令执行完之后先不要关闭终端 ...

  9. java程序员技术范围

    1 工具 开发工具.源代码管理.构建工具.测试工具(压力.安全等).接口测试工具.反编译工具.日志工具.第三方工具等 2 java jvm.多线程.socket.io(两种方式).集合(两大接口).异 ...

  10. linux yum提示Loaded plugins: fastestmirror, security错误的解决方法

    别听网上的,先检查自己是不是打错了.........我就是打错了一个横杆搞了一个多小时 具体: 如图这种,长横杆 修改后结果: 所以在不知情的情况之下千万不要乱改东西,先检查代码是否有误 题外话: = ...