下面这个程序求的水仙花数为什么不够?

C语言是面向过程的,而C++是面向对象的

C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事务)控制)。

C++,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以通过获取对象的状态信息得到输出或实现过程(事务)控制。 所以C与C++的最大区别在于它们的用于解决问题的思想方法不一样。之所以说C++比C更先进,是因为“ 设计这个概念已经被融入到C++之中 ”。

C与C++的最大区别:在于它们的用于解决问题的思想方法不一样。之所以说C++比C更先进,是因为“ 设计这个概念已经被融入到C++之中 ”,而就语言本身而言,在C中更多的是算法的概念。那么是不是C就不重要了,错!算法是程序设计的基础,好的设计如果没有好的算法,一样不行。而且,“C加上好的设计”也能写出非常好的东西。

水仙花数:是指一个n位的正整数(n>=3),它的每个数字的n次幂之和等于它本身。

小编推荐一个学C语言/C++的学习裙【 七三零,一三零,二二一 】,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!

要求:用C语言实现求出100~999之间的所有水仙花数。

要验证一个三位数是不是水仙花数很简单,只要把它的三个数字的三次幂加起来,看看是否等于它本身即可。所以问题的关键是如何用C语言得到一个三位数的三个数字。

我们知道任意一个三位数,都等于它的百位数乘以100,加上它的十位数乘以10,再加上它的个位数乘以1 。比如:567=5*100+6*10+7*1 。

根据这一特性,我们可以得出,一个三位数的百位数就等于该数除以100的整数部分(567除以100的整数部分为5,即它的百位数是5),而十位数等于该数减去百位数乘以100再除以10的整数部分((567-5*100)再除以10的整数部分等于6,即该数十位数是6),而个位数就等于该数减去百位数乘以100,再减去十位数乘以10(567-5*100-6*10=7,个位数为7)。

代码中关键部分做了详细的注释,代码中的i++等价于i=i+1。编写在visualstudio中的运行结果如下:

小编推荐一个学C语言/C++的学习裙【 七三零,一三零,二二一 】,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!

如果要求之间的水仙花数呢?原理是一样的,依次得到四位数的千位数、百位数、十位数和个位数即可。自己动手试一试吧!

这些是C/C++能做的

服务器开发工程师、人工智能、云计算工程师、信息安全(黑客反黑客)、大数据 、数据平台、嵌入式工程师、流媒体服务器、数据控解、图像处理、音频视频开发工程师、游戏服务器、分布式系统、游戏辅助等

  • 计算机二级C语言上机题库(南开版) /yangf...

  • 其实也不是真的游泳啦,天气实在太热,不知道该带孩子去哪里玩会儿,于是就去番茄了..... 游完泳后去吃饭,大宝主动...

  • 夜了 电也停了 孤独蒙上一层黑色的软纱 你游走在我回忆的脑海 却再也溅不起一丝光亮的水花 一直以为不会忘记你落下的...

  • 美妆博主们层出不穷的花样安利大法,让我们又度过了跟风吃土的一年。 其中底妆,对整体妆效而言起着至关重要的作用。 好...

}

考试题型说明:10个单选题+2个编程题

下面是编程题目的复习题型,期末考试的编程题型及难易程度与此相近,请大家认真复习,强化练习,打下坚实基础,顺利通过考试。

1、编写一计算阶乘的函数fac,在主函数中从键盘输入一个正整数,调用阶乘函数fac计算阶乘并输出计算结果。

2、编写一个求x的y次幂的函数pw,在main函数中从键盘输入a、b的值,然后调用pw函数求a的b次幂,并输出结果。

3、写一函数max,计算三个数中最大数。在主函数中输入三个数,调用该函数求出其中最大数并输出。(要求:三个数为实数)

4、写一个函数计算两个正整数的最大公约数,在主函数中用scanf输入m,

n两个正整数,调用函数后,打印函数返回值(即这两个正整数的最大公约数)。

5、编写一个函数,该函数的功能是判断一个整数是不是素数,在main函数中

调用该函数,输出200以内所有的素数。

6、请编一个自定义函数,功能:将给定的字符串中的所有字母改为小写字母。字符串在主函数中从键盘任意输入(容许包含空格)

7、编写一个函数,该函数的功能是判断一个整数是不是素数,在main函数

}
  • 2、【环境变量配置问答】
  • 12、【标识符命令规范】
  • 13、【标识符命令规范】
  • 2、【键盘录入-switch-求星期】
  • 3、【if多分支-求成绩】
  • 6、【嵌套for循环-杨辉三角形】
  • 7、【嵌套for循环-九九乘法表】
  • 10、【根据输入求输出-求位数、逆序输出】
  • 11、【数列的前n项和】
  • 15、【根据条件求数-加100/268是完全平方】
  • 16、【求奇数/偶数和】
  • 18、【被几个9整除】
  • 21、【三个数由小到大排序】
  • 24、【循环练习-买饮料】
  • 25、【循环练习-蜗牛爬井】
  • 26、【键盘录入-求各位数之和】
  • 27、【求和-去除7倍数和包含7】
  • 30、【三目运算符-点餐优惠方式】
    • 1、【递归经典问题-不死神兔】
  • 4、【数组元素的插入】
  • 5、【数组元素的交换】

请问Java语言是跨平台的吗?JVM是跨平台的吗?为什么?

Java语言是跨平台的,JVM是不跨平台的。
Java能跨平台正是以JVM不跨平台为代价的。
Java的跨平台性由JVM实现,即JVM用于保证java的跨平台的特性。
JVM是在机器和编译程序之间加入的一层抽象的虚拟机器,
这台虚拟的机器在任何平台上都提供给编译程序一个的共同的接口。
编译程序只需要面向虚拟机,生成虚拟机能够理解的代码,然后由 解释器 来将虚拟机代码转换为特定系统的机器码执行。
在Java中,这种供虚拟机理解的代码叫做字节码(即Java源代码经过虚拟机编译器编译后产生的文件,扩展为.class的文件),它不面向任何特定的处理器,只面向虚拟机,使Java程序无须重新编译便可在多种不同的计算机上运行。
每一种平台的解释器是不同的,但是实现的虚拟机是相同的。
Java源代码---->编译器---->jvm可执行的Java字节码(即虚拟指令)---->jvm(字节码由虚拟机解释执行)---->jvm中解释器(虚拟机将每一条要执行的字节码送给解释器)----->机器可执行的二进制机器码---->程序运行。


2、【环境变量配置问答】

为什么要配置Java环境变量?

不配置环境变量可不可以命令行编译执行Java代码?

请尝试配置环境变量,达到在命令行(cmd)窗口输入qq 命令就能启动qq的效果。(效果截图)

classpath是配置class文件所在的目录,用于指定类搜索路径,JVM就是通过它来寻找该类的class类文件的。
给jvm用,告诉jvm到哪里加载字节码文件配置。
如果没有定义环境变量classpath,java启动jvm后,会在当前目录下查找要运行的类文件;
如果指定了classpath,那么会在指定的目录下查找要运行的类文件。

(3)配置环境变量,达到在命令行(cmd)窗口输入wechat 命令就能启动 微信 的效果。:
注:因为 qq 启动 涉及到账号 和 密码位数,故将 启动qq,改成启动 微信。两者操作 完全一样。
① 设置 Path 环境变量之前:

② 设置 Path 环境变量之后
在Path变量中添加wechat启动程序的路径,即可以在任意目录下,通过命令行执行。


(要求记事本完成,该题目提交 Helloworld程序的代码及命令行cmd运行截图即可)


将67转换为二进制、八进制、十六进制。

再将0b0100101(二进制)、0345(八进制)、0Xef(十六进制) 转换为十进制。

注:该题无需写代码,在纸上手算一下过程,拍照附在文档中提交作业。


对于一个8位原码,和, 求它们的补码。

已知补码和,求它们的原码。(要求如题4)

注:进制和原码等概念属于计算机编程基础知识,建议了解并熟悉它。

负数原码 --> 补码:符号位不变,其余位取反,末位 + 1。
补码的补码(补码求补)= 补码对应的原码。
负数原码 补码是 (符号位不变,其余位取反,末位 + 1)
负数补码 原码是 (符号位不变,其余位取反,末位 + 1)


如果不能为什么呢?怎样让它通过编译呢?

(作为简答题说明一下即可)


① a += b执行过程:先计算出a的值,然后用一个temp对象存储,之后和b进行相加,然后将值赋值给a引用。
+= 如果两边的操作数的精度不一样时会自动向低转化。
② a = a+b 执行过程:先计算 a + b,然后再赋值给a引用,给a引用的时候如果 引用a 有计算过程,则会再次计算。
a = a+b则不会自动转化,需要手动进行强制类型转化。


这两条语句定义的浮点数a和b,请问它们相等嘛?为什么?

浮点数都是近似值,位数越多,表示的就越精确。


给出任意一个int 类型的正整数,如何快速判断该整数的值,是否是2的整数次幂?

(简答题,考虑位运算符)

对于一个变量a,给出一个表达式a + “hello” ,结果的数据类型是什么?


读下列代码,指出输出结果以及原因。


12、【标识符命令规范】

分析以下标识符的字符串组成,哪些是符合语法的标识符,哪些不合法?

请在这道题下面附上符合语法的标识符命名规范。

由字母、数字、下划线“_”、美元符号“$”或者“¥”组成,首字符不能是数字。


13、【标识符命令规范】

标识符的命名除了语法要求外,更重要的是符合约定俗成的规范。

下列标识符的字符串组成,都是符合语法要求的,请问哪些是符合约定俗成命名规范的?哪些不符合?

请在这道题下面附上符合约定俗成规范的Java标识符命名规范。(根据不同语法结构给出)

注:标识符命名规范相当重要。

包类似于操作系统中以文件夹的形式组织文件。
在JAVA语言中,以包来组织JAVA中的类,不同包下可以包含同名的类名。
为了包名的唯一,通常以域名反转的方式来命名包,例:com.baidu.www。
多级包: 以域名(是唯一的)反转的方式来命名包,单词全部小写。
单极包: 一个全部小写的单词。如 test
单个:首字母大写,其余字母全部小写。如 Student
多个单词:多个单词的首字母均大写,其余字母全部小写 。如:JavaBasic 、MaxAge
单个:所有字母小写。 如:value
多个单词:第一个单词首字母小写,从第二个开始,每个单词首字母大写。 如:intValue
所有单词字母都大写。如MAX
多个单词:单词之间用_来分割,如MAX_AGE
具体的Java开发规范文档:阿里巴巴Java开发手册(嵩山版)


注释会对程序的运行产生影响嘛?

注释的内容会存在于Java代码编译执行的哪一部分?

    可用来生成网页格式的帮助文档。
    多行和文档注释都不能嵌套使用。

① 注释的作用:对程序语言进行说明,有助于开发者和用户之间的交流,方便理解程序。
② 注释会对程序的运行产生影响嘛?
     注释不是编程语句,因此被编译器忽略。不会对程序的运行产生影响。
③ 注释的内容会存在于Java代码编译执行的哪一部分?


如果我想在Java程序中进行键盘输入,提升程序的扩展性。

需要按几个步骤进行?请写出步骤。

① 创建 扫描器 对象,获取用户的输入
② 读取数据,读取数据的方法见下面的详细知识点

下面以int型数组为例:

既要读取普通数据,又要读取nextLine(读取一行字符串):使用两个Scanner对象

打印5位数中的所有回文数,每行打印10个数。最后统计一下一共有多少个5位回文数。

注:回文数即正反读都是一个数,5位数的话,只要个位与万位相同,十位与千位相同就是一个回文数。

1)输出所有的5位回文数


2、【键盘录入-switch-求星期】

根据键盘录入的数值1、2、3、4,…7输出对应的星期一、星期二、星期三…星期日。

System.out.print("请输入星期一、星期二、星期三、星期四。。。代表的数字:");

3、【if多分支-求成绩】

键盘录入一个学生成绩(用int表示),自动输出该同学的成绩评级。
学生的分数取值范围[0,100]
分数大于等于90的,评级"优秀";
分数大于等于80,小于90的,评级"良好";
分数大于等于70,小于80的,评级"中等";
分数大于等于60,小于70的,评级"及格";
分数小于60的,评级"不及格";


请打印出所有的水仙花数。

注:所谓的"水仙花数"是指一个三位数,其各位数字的立方和等于该数本身。例如153是一个"水仙花数",因为153 = 1的三次方 + 5的三次方 + 3的三次方。(使用for循环遍历一下就出来了)


判断101-200之间有多少个素数,并输出其中所有素数。

注:素数即是除了1和它本身以外不再有其他因数的自然数。程序中可以用这个数,遍历除以2到这个数减去1。如果能够被整除,则表明此数不是素数,反之是素数。


6、【嵌套for循环-杨辉三角形】

打印下列图案(等腰三角形)

要求,根据键盘录入的行数,决定等腰三角形的行数。


7、【嵌套for循环-九九乘法表】

打印九九乘法表。(和题6基本一样)


一个数如果恰好等于它的所有真因子(即除了自身外的所有因数)之和,这个数就称为"完数"。

请编程求出1000 以内的所有完数。


有1、2、3、4一共四个数字,能组成多少个不相等且无重复数字的三位数?都是多少?

注:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足条件的就可以了。


10、【根据输入求输出-求位数、逆序输出】

键盘录入一个正整数,请求:1.它是几位数?2.逆序打印出各位数字。


11、【数列的前n项和】

注:提前告诉你答案是32.64


求前n个数的和,其中n>0。


求前n个数的积,其中n>0。


分别用if和三目运算符求三个数的最大值。比较一下两种方式,哪种比较好?


15、【根据条件求数-加100/268是完全平方】

一个整数,它加上100或者268后都是一个完全平方数,请问在1万以内,这样的数有几个,分别是多少?


16、【求奇数/偶数和】

求100以内的所有奇数/偶数的和。


假如一个小球从100米高度自由落下,每次落地后就反跳回原高度的一半。那么求它在第10次落地时,共经过多少米?第10次反弹多高?

System.out.print("本程序求小球在第n次落地时经过的路程(m)和第n次落地后反弹的高度,请输入n:");

18、【被几个9整除】

键盘录入一个数,请判断它数能被几个9整除 。如81就可以被2个9整除。


键盘录入一个in数字,判断输出它是奇数还是偶数。


将一个大于2的正整数分解质因数。例如:输入3的话,输出 3=3; 输入6,输出6 = 2 *3等。


21、【三个数由小到大排序】

键盘输入三个整数x、y、z,请把这三个数由小到大输出。


任意给两个整数(int)值,请交互它们的值。

自守数是指一个数的平方的尾数等于该数自身的自然数。例如:252 = 625,762 = 5776,93762 = 。请求出10000(一万)以内的自守数的个数,并分别输出。


24、【循环练习-买饮料】

给20块钱买饮料,每瓶饮料3块钱,喝完之后退瓶子可以换回1块钱。问最多可以喝到多少瓶饮料?

25、【循环练习-蜗牛爬井】

井里有一只蜗牛,他白天往上爬5米,晚上掉3.5 米,井深56.7米,计算蜗牛需要多少天才能从井底到爬出来。


26、【键盘录入-求各位数之和】

键盘输入任意一个正整数,求各位数字之和。


27、【求和-去除7倍数和包含7】

打印出1-100之间所有不是7的倍数和不包含7的数字, 并求和。



输入年份和月份,输出这个月应该有多少天(使用switch结构,需要考虑闰年和平年,注意case穿越)


30、【三目运算符-点餐优惠方式】

某小伙想定一份外卖,商家的优惠方式如下: 鱼香肉丝单点 24 元,油炸花生米单点 8 元,米饭单点 3 元。订单满 30 元 8 折优惠。鱼香肉丝优惠价 16 元,但是优惠价和折扣不能同时使用。那么这个小伙要点这三样东西,最少要花多少钱?


1、【递归经典问题-不死神兔】

有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少? (其实就是斐波那契数列)


有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?


随机给十个数字,对它们进行排序。(可以给一个有10个整数元素的数组,然后对数组排序)


4、【数组元素的插入】

有一个已经排好序的int数组{1, 2, 3, 4, 5, 6, 7, 8} 。现输入一个数(要求该数在1-8之间),按原来的规律将它插入数组中。


5、【数组元素的交换】

给出一个int数组,把它最大的元素与第一个元素交换,最小的元素与最后一个元素交换,输出交换后的数组。

}

我要回帖

更多关于 vb求水仙花数的程序 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信