C语言实验2

大一时写的代码,很菜

实验目的:

“水仙花数”是指一个3位数,其各位数字立方和等于该数本身,要求输出所以的“水仙花数”。

实验思路:

利用for函数循环,依次检测三位数。重点是如何提取各位数字,可以利用int定义a,b,c三个整型变量(分别代表百位,十位和个位),这样得到的数字如果是小数可以直接去除小数部分,定义要检测的数字为i,将i除以100得到a,将i减去100倍的a再除以10可以得到b,最后用i减去10倍的b和100倍的b可以得到c。定义变量k,给k赋值为i各位数字的立方和,运用if函数,若i等于k则输出i。为避免数字紧贴在一起,输出时用“\t”控制间距。

遇到的问题:运行后没有出现任何数字。

解决方法:

将“k=a^3+b^3+c^3;”改为“k=a*a*a+b*b*b+c*c*c;”。为了是程序更简洁,d可以用对i取除以10的余数来获得,而且,可以不用另外定义k,直接把i等于各位数字的立方和这个条件写到if函数里,即

修改前:

...

c=i-a*100-b*10;

k=a^3+b^3+c^3;

if(i==k)

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

}

...

修改后:

...

c=i%10;

if(i==a*a*a+b*b*b+c*c*c)

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

}

...

吸取的经验教训:

编程与数学不一样,不能像数学那样运用运算符号,比如在计算器或普通的电脑文件中的^是上标的意思,a^3在数学中可以代表a的立方,而在C语言中就不行,只能用a*a*a表示,只有这样电脑才能识别,一定要打破日常习惯思维,上课也要认真听讲。同时,要灵活运用整型变量的去除小数的特性,比如像这个题一样可以用来提取某个数字的各位数字,也可以依次输出各位数字,如第四章的判断数字的位数并倒序输出的课后习题。

参考代码:

#include<stdio.h> int main()
{int i,k,a,b,c;
for(i=100;i<=999;i++)
{a=i/100;
b=(i-a*100)/10;
c=i%10;
if(i==a*a*a+b*b*b+c*c*c)
printf("%d\t",i); }
printf("\n");
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值