一千以内数的认识ppt的正整数数的和为八的数有多少个

用1至8这八个自然数中的四个组成四位数,从个位到千位的数字依次增大,且任意两个数字的差都不是1,这样的四位数共有5人.【考点】.【分析】先确定千位数,从个位到千位的数字依次增大,所以千位上的数字最小是4,任意两个数字的差都不是1,若个位数字是1,那么千位上的数字最小就是1+2×3=7,所以千位的数字只能是7或8,分情况讨论.【解答】解:当千位上的数是8时,有:,,共4个;当千位上的数字是7时,有7531,1个;共有:4+1=5(个)故答案为:5.【点评】本题首先根据题干所限制的条件找出千位或个位上的数字,再用列举法写出这些数字.声明:本试题解析著作权属菁优网所有,未经书面同意,不得复制发布。答题:ZGR老师 难度:0.63真题:1组卷:5
解析质量好中差
&&&&,V2.16027将正整数的阿拉伯钱数转换为中文形式,如1011&一千零一十一,输出。
传统的方法很多人都会,主要实现是注意一些细节问题,主要是0的处理。回复中有一位(yangguo )的回复很不错。经修改后代码如下(主要增加了注释,原回复没有任何注释):
package com.polaris.
import java.util.S
* 将正整数的阿拉伯钱数转换为中文形式,如1011&一千零一十一,输出。
* yangguo的大概思想是:从左到右4个为一组,组间的单位(BIGUIT)是万、亿,而组内的单位(UNIT)为十、百、千。
* 首先计算出可以分为多少组,然后一个组一个组的处理。
* @author yangguo, polaris进行了些许修改
* 注释由 xuxinhua(polaris)
* @version 1.0
public class MoneyTrans {
private static String[] ChinaDigit = {"零","一","二","三","四","五","六","七","八","九"};
private static String[] UNIT = {"","","十","百","千"};
private static String[] BIGUNIT = {"","万","亿"};
private char[]
* 主函数,负责分组,并循环处理这些分组
* @param n
public String trans(int n){
StringBuffer buff = new StringBuffer();
digit = String.valueOf(n).toCharArray();
int length = digit.
// 获得头部分组的下标(从左往右,分组的下标递减,最右边一个分组是0)
int pos = (length - 1)/4;
// 获得头部分组的长度(即位数)
int headLength = (length - 1)%4 + 1;
// 处理完头分组并在其后加上组间单位,如万、亿
buff.append(partTrans(0,headLength) + BIGUNIT[pos--]);
// 处理接下来的分组
for (int i = headLi & i = i + 4) {
buff.append(partTrans(i , i + 4) +
BIGUNIT[pos--]) ;
return buff.toString();
* 处理分组,从高位到低位处理(左到右)
* @param start
* @param end
String partTrans(int start, int end) {
StringBuffer buff = new StringBuffer();
// 标记上一个处理的数字是不是0
boolean isPreDigitZero =
// 循环处理组内所有数字
for (int i = i & i++) {
int cur = digit[i] - '0'; // 当前数字
// 保证多个零连着时只加入一个零,且该零不在组内最后位置
if(cur != 0 ){
if(isPreDigitZero == true){
buff.append(ChinaDigit[0]);
buff.append(ChinaDigit[cur] + UNIT[end - i]);
isPreDigitZero =
isPreDigitZero =
return buff.toString();
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while(true) {
System.out.println("*********阿拉伯数字转为中文表示******");
System.out.println("请输入一个正整数或输入-1退出:");
int number = scanner.nextInt();
// 输入-1退出
if(number==-1)
MoneyTrans transtor = new MoneyTrans();
String money = transtor.trans(105602);
System.out.println(number + "转换后的结果是:" + money);
System.out.println("Bye-bye!");
另外,youaretheboy的思路值得参考,不过还有很多要考虑的地方
第三编程题,其实可以把数字从小到大一个一个push压栈,然后循环出栈pop,判断每次出栈的数据是否为0,如果不是0的话,就判断栈的总数,可以得出位数(如万,千等),如果为0的话,就一直出栈,不做任何处理&大概思路是这样
polaris的回复:不过有一个地方,是0也不能啥也不处理,得输出零字,如果多个零只输出一个,如果零在万、亿之类的位上也要特殊处理;对于非0情况,也有需要另外处理的,比如1在十万位上,万位是0和不是0处理方式也会不一样吧。需要考虑的地方还是蛮多的。不过思路挺好的。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:47099次
排名:千里之外
原创:50篇
转载:12篇
(19)(32)(10)(1)一些非零自然数既是平方数又是立方数一千以内的自然数中这样的数有多少个_百度知道
一些非零自然数既是平方数又是立方数一千以内的自然数中这样的数有多少个
提问者采纳
我们可以找找满足条件的自然数1=1的平方=1的立方64=8的平方=4的立方729=27的平方=9的立方没了,就这3个。
来自团队:
其他类似问题
为您推荐:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁这是一道初等编程题目(16进制数的位数限制为100000位以内):给定n个十六进制正整数,输出它们对应的八进制数。请问在下的程序哪里有错呢?
我写了一个C++程序,大概思路是先将16进制转化为2进制,再转化为8进制(全部以字符串的形式进行)。自己测试的点都可以过,但是在清澄上只有一个测试点,就是怎么都过不了,求高手指点,愿意顺便交码农朋友~先谢过
#include &iostream&#include &cstdlib&#include &cstring&int hex_to_dec(char in){
if ((in &= '0') && (in &= '9'))
return int(in-'0');
return int(in-'A')+10;}char bin_to_oct(char a, char b, char c){
int aa=int(a-'0');
int bb=int(b-'0');
int cc=int(c-'0');
int goal=4*aa+2*bb+
return char(goal+'0');}void output(char* in){
char via[400000];
char out[133334];
int lenin=strlen(in);
int lenvia=lenin*4;
int lenout=(lenvia-1)/3+1;
int rmd=lenvia%3;
for (int i=0; i& i++)
int begin=hex_to_dec(in[i]);
via[i*4+3]=begin%2+'0';
begin=begin/2;
via[i*4+2]=begin%2+'0';
begin=begin/2;
via[i*4+1]=begin%2+'0';
begin=begin/2;
via[i*4]=begin+'0';
for (int i=lenout-1; i&0; i--)
int begin=lenvia-lenout*3+i*3+2;
out[i]=bin_to_oct(via[begin-2],via[begin-1],via[begin]);
if (rmd==0)
out[0]=bin_to_oct(via[0],via[1],via[2]);
if (rmd==1)
out[0]=bin_to_oct('0','0',via[0]);
if (rmd==2)
out[0]=bin_to_oct('0',via[0],via[1]);
for (j=0; j& j++)
if (out[j]!='0')
for ( ; j& j++)
cout && out[j];
cout &&}int main (){
char in[10][100000];
for (int i=0; i&n; i++)
cin && in[i];
for (int i=0; i&n; i++)
output(in[i]);
system("pause");
return 0;}刚刚AC了~THANK YOU ANYWAY~之前运行错误的原因是out数组开小了,因为3位16进制数转为4位8进制数,故out数组理应开的大一些,至少为/3=,那么我将out数组大小开为133333时运行错误,因为越界了,但若开为133334,则刚好够,我这么说只是表示原程序的错的的确确在这里,并不代表我希望把数组开的这么将就,其实开的适当的大一些是正确的~
已有帐号?
无法登录?
社交帐号登录8个正整数排成一列,并且从第三个数开始,每个数都是前面两个数的和,那么这八个数中最多有几个质数
huosh0001D
正整数中,除了2以外,所有的偶数都是合数.而奇数不一定都是合数.所以,要让第三个数往后尽量为奇数.要想第三个数为奇数,前两个数必须为一奇一偶,而且尽量为质数.所以前两个数为3,2.剩下的数依次为3+2=5,2+5=7,5+7=12,7+12=19,12+19=31,19+31=50.质数有2,3,5,7,19,31.最多有6个
为您推荐:
其他类似问题
3、2、5、7、12、19、31、50。质数有2、3、5、7、19、31有6个
扫描下载二维码}

我要回帖

更多关于 千以内数的认识练习题 的文章

更多推荐

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

点击添加站长微信