【C语言编程练习】5.10寻找水仙数
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寻找水仙数的更多相关文章
- 先定一个小目标:10天自学C语言编程,教你如何改变一生
C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构.C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现 ...
- R语言编程艺术(4)R对数据、文件、字符串以及图形的处理
本文对应<R语言编程艺术> 第8章:数学运算与模拟: 第10章:输入与输出: 第11章:字符串操作: 第12章:绘图 =================================== ...
- Linux C语言编程学习笔记 (1)进程控制入门
想进行Linux系统开发已经很久了,一直没有付诸实践.今日终于开始学习Linux下的C语言编程,研究一天,终于大概弄明白了Linux系统进程管理的一些基本概念和编程方法,总结下来以方便大家学习和自己实 ...
- C语言编程规范
C语言编程规范 6 函数与过程 6.1 函数的功能与规模设计 函数应当短而精美,而且只做一件事.不要设计多用途面面俱到的函数,多功能集于一身的函数,很可能使函数的理解.测试.维护等变得困难. 6.2 ...
- LINUX下C语言编程基础
实验二 Linux下C语言编程基础 一.实验目的 1. 熟悉Linux系统下的开发环境 2. 熟悉vi的基本操作 3. 熟悉gcc编译器的基本原理 4. 熟练使用gcc编译器的常用选项 5 .熟练使用 ...
- 第二章 C语言编程实践
上章回顾 宏定义特点和注意细节 条件编译特点和主要用处 文件包含的路径查询规则 C语言扩展宏定义的用法 第二章 第二章 C语言编程实践 C语言编程实践 预习检查 异或的运算符是什么 宏定义最主要的特点 ...
- 华为C语言编程规范
DKBA华为技术有限公司内部技术规范DKBA 2826-2011.5C语言编程规范2011年5月9日发布 2011年5月9日实施华为技术有限公司Huawei Technologies Co., Ltd ...
- linux 操作系统下c语言编程入门
2)Linux程序设计入门--进程介绍 3)Linux程序设计入门--文件操作 4)Linux程序设计入门--时间概念 5)Linux程序设计入门--信号处理 6)Linux程序设计入门--消息管理 ...
- 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 ...
随机推荐
- 课程设计个人报告——基于ARM实验箱的捕鱼游戏的设计与实现
课程设计个人报告--基于ARM实验箱的捕鱼游戏的设计与实现 一.个人贡献 参与课设题目讨论及部分过程 资料收集 负责代码调试 捕鱼游戏相应功能的实现 实验环境 Eclipse软件开发环境: ARM实验 ...
- seajs使用方法
必须执行seajs.use()时,才能自动执行预加载项 <script src="/UILib/sea.js"></script> <script s ...
- 移除文件(git rm)
git rm`命令会把文件从已跟踪列表(及暂存区)中移除,并且移除把文件从工作目录中移除,这样下一次你就不会在未跟踪文件列表中看到这些文件了. 如果你只是简单的把文件从工作目录移除,而没有使用git ...
- 不同IDE对maven项目静态资源处理
今天自己构建maven管理的web项目,参照另一位兄弟的代码,发现他的静态资源,也就是html.js之类的文件是在src/main/resource目录下的,我的在src/main/resource目 ...
- 本地Git与Github建立关联
准备 本地与Github建立连接,需要用到SSH公钥.一般安装完Git,会在用户目录中生成一个 .ssh的文件夹 如果没有此文件夹,可以通过命令创建 $ ssh-keygen -t rsa -C &q ...
- vue.js基础
1,感谢菜鸟教程 2,第一个实例 <html> <head> <meta charset="utf-8"> <title>Vue 测 ...
- jmeter和jdk的安装教程
jmeter和jdk的安装教程 1:先下载安装jdk并且配置环境变量,配置环境变量的步骤如下: 右击计算机图标--点击属性--点击高级系统设置--点击环境变量后添加jdk的环境变量 a.系统变量→新建 ...
- FFT学习笔记
快速傅里叶变换FFT(Fast Fourior Transform) 先说一下它能干嘛qwq 傅里叶变换有两种,连续傅里叶变换和离散傅里叶变换,OI中主要用来快速计算多项式卷积. 等一下,卷积是啥 ...
- Spring Cloud 2-RabbitMQ 集成(八)
Spring Cloud RabbitMQ pom.xml application.yml 提供者 消费者 队列配置 单元测试 通过消息队列MQ做为通信中心,这里采用RabbitMQ.安装方参考: ...
- zimbra6同域名与同hostname与同系统异机恢复
系统:redhat5.4_64 安装DNS:[root@test6 ~]# yum install bind -y[root@test6 ~]# yum install bind-chroot -y[ ...