精华内容
下载资源
问答
  • 打印数字

    千次阅读 2020-02-21 22:00:00
    打印从1到最大的n位数 ...从1到n按顺序打印出从1到最大的n十进制数,其实就是n个从0到9的全排列(把数字在0之前的去掉) //打印1到最大的n位数的主方法 public void printToMaxOfDigits(int n){ if(n <= 0){ ...

    打印从1到最大的n位数

    在这里插入图片描述
    主要的考点:n可能很大,大到int甚至long int都会溢出,怎么解决?
    网上看了几个题解,没看懂,看懂了一个思路最简单的:
    从1到n按顺序打印出从1到最大的n十进制数,其实就是n个从0到9的全排列(把数字在0之前的去掉)

    //打印1到最大的n位数的主方法
    public void printToMaxOfDigits(int n){
    	if(n <= 0){
    		System.out.println("输入的n没有意义");
    		return;
    	}
    	char number[] = new char[n];
    	for (int i = 0; i < number.length; i++) {
    		number[i] = '0';
    	}
    	for (int i = 0; i < 10; ++i) {
    		number[0] = (char) (i + '0');
    		printToMaxOfNDigitsRecursively(number, n, 0);
    	}	
    }
    //利用递归实现1到最大的n位数的全排列
    public void printToMaxOfNDigitsRecursively(char[] number, int n, int index) {
    	if(index == n - 1){
    		printNumber(number);
    		return;
    	}
    	for (int i = 0; i < 10; ++i) {
    		number[index + 1] = (char) (i + '0');
    		printToMaxOfNDigitsRecursively(number, n, index + 1);
    	}
    }
    	
    //输出
    private void printNumber(char[] number) {
    	boolean isBeginning0 = true;
    	int nLength = number.length;
    	for (int i = 0; i < nLength; ++i) {
    		if(isBeginning0 && number[i]!='0'){
    			isBeginning0 = false;
    		}
    		if(!isBeginning0){
    			System.out.print(number[i]);
    		}
    	}
    	System.out.println();
    }
    

    删除链表的节点

    public class sortArrayByOddEven {  //需要额外定义一个类ListNode题目有给出
    	public static void main(String[] args) {
     
    		ListNode pHead = new ListNode(1);   
    		ListNode pAhead = new ListNode(3);
    		ListNode pBhead = new ListNode(5);
    		ListNode pChead = new ListNode(7);
    		pHead.next = pAhead;
    		pAhead.next = pBhead;
    		pBhead.next = pChead;
    		deleteNode(pHead,pBhead);
    		while (pHead != null) {
    			System.out.print(pHead.value + ",");
    			pHead = pHead.next;
    		}
     
    	}
     
    	private static void deleteNode(ListNode pHead, ListNode pBhead) {
    		if(pHead==null||pBhead==null)  //当头指针为空,或者删除节点为空时
    			return ;
    		ListNode pNode = pHead;        
    		if(pNode.next==null) {            
    			while(pNode.next!=pBhead) {
    				pNode = pNode.next;
    			}
    			pNode.next = null;
    		}else {               //我们直接让删除节点的值等于删除节点的下一个节点值
                 //再将删除节点的next赋值为 deleNode(删除节点).next.next 起到间接删除的效果
                        
    			pBhead.value = pBhead.next.value;
    			pBhead.next = pBhead.next.next;
    		}
    	}	
    }
    
    展开全文
  • 要求:输入数字,进行排序,最后打印输出。 #include "stdafx.h" //1.实现将数字字符串转换为数字 int strToInt(char *arr); //2.将数字字符串数组 转换为整型数组存储 void anasiy(char *arr[],int...

    题目:在命令行执行程序。要求:输入一组数字,进行排序,最后打印输出。

    #include "stdafx.h"
    //1.实现将数字字符串转换为数字
    int strToInt(char *arr);
    //2.将数字字符串数组 转换为整型数组存储
    void anasiy(char *arr[],int n,int *rest);
    //3.将整型数组排序(升)
    void sort(int *arr,int n);
    //4.输出排序结果
    void output(int *arr,int n);
    int main(int argc, char* argv[])
    {
    	int n=argc-1;
    	int *rest=new int [n];//动态获取存储空间
    	anasiy(argv+1,n,rest);
    	output(rest,n);
    	sort(rest,n);
    	output(rest,n);
    	delete(rest);
    
    	return 0;
    }
    int strToInt(char *arr)
    {
    	int num=0;
    	while(*arr!='\0')
    	{
    		if(*arr>='0'&&*arr<='9')
    		{
    			num=num*10+*arr-'0';
    			arr++;
    		}
    	}
    	return num;
    }
    void anasiy(char *arr[],int n,int *rest)
    {
    	for(int i=0;i<n;i++)
    	{
    		rest[i]=strToInt(arr[i]);
    	}
    }
    void output(int *rest,int n)
    {
    	for(int i=0;i<n;i++)
    	{
    		printf("%d ",rest[i]);
    	}
    	printf("\n\n");
    }
    void sort(int *rest,int n)
    {
    	int tmp=0;
    	for(int i=0;i<n;i++)
    	{
    		for(int j=n-1;j>i;j--)
    		{
    			if(rest[j]<rest[j-1])
    			{
    				tmp=rest[j];
    				rest[j]=rest[j-1];
    				rest[j-1]=tmp;
    			}
    		}
    	}
    }

    1.在vc++6.0的环境下,新建一个项目,选建一个A"Holle world" application。

    2.输入以上全部代码。编译运行。控制台不会有显示。因为此题时要在命令行执行的。

    3.找到装有次项目  .exe 文件的 Debug文件夹。复制路径。

    4.cmd打开命令行,在命令行内通过操作找到3中找到的路径,然后输入.exe 的名字  在输入数字即可。按下enter建后会在命令行显示输出,刚才输进去的数字排好序后的结果。

    其中,函数分装的思想是值得初学者好好学习的!

    主要的功能函数是1. 将输入的数字字符串转换为一组数字 2.将转换后的一组

    其中先写了一个将单个字符串转换为数字的函数strToInt,在用anasiy函数调用strToInt函数完成全部字符串的转换。

    展开全文
  • 如果运行这个程序,则三个线程将共享CPU,并且控制台上轮流打印字母和数字。 (因为现在电脑的CPU都太快了,100个数和字母根本看不出来CPU交替执行线程,所以我将数字定位10000 效果 代码 package P1; ...

    题目

    编写一个程序,创建三个任务以及三个运行这些任务的线程:

    1. 第一个任务打印字母a100次
    2. 第二个任务打印字母b100次
    3. 第三个任务打印1~100的整数

    如果运行这个程序,则三个线程将共享CPU,并且在控制台上轮流打印字母和数字。
    (因为现在电脑的CPU都太快了,100个数和字母根本看不出来CPU在交替执行线程,所以我将数字定为10000

    效果

    在这里插入图片描述

    代码

    package P1;
    
    public class thread1 {
    
    
        public static void main(String[] args){
            //创建三个任务
            Runnable printA=new PrintChar('a',100);
            Runnable printB=new PrintChar('b',100);
            Runnable print100=new PrintNum(100000);
    
            //创建线程
            Thread thread3=new Thread(print100);
            Thread thread1=new Thread(printA);
            Thread thread2=new Thread(printB);
            //开始线程
            thread1.start();
            thread2.start();
            thread3.start();
        }
    }
    class PrintChar implements Runnable{
    
        private char charToPrint;//需要打印的字母
        private  int times;//需要打印的次数
    
        public PrintChar() {
    
        }
    
        public PrintChar(char charToPrint, int times) {
            this.charToPrint = charToPrint;
            this.times = times;
        }
    
        @Override
        public void run() {
            for (int i = 0; i <= times; i++) {
                System.out.println(charToPrint);
            }
        }
    }
    
    class PrintNum implements Runnable{
        private int lastNum;
    
        public PrintNum(int lastNum) {
            this.lastNum = lastNum;
        }
    
        @Override
        public void run() {
            for (int i = 0; i < lastNum; i++) {
                System.out.println(" " + i);
            }
        }
    }
    

    思路

    该程序创建了三个任务。为了同时运行它们,创建了三个线程。调用start()方法启动第一个线程,那么其中的run()方法就会被执行。当run()方法执行完毕之后,线程就终止了。

    展开全文
  • 两个线程个打印偶数,个打印奇数,两个线程要交叉执行,所以可以用个长度为101的数组(第个位置不用,便于打印的数字和位置保持一致)保存每个线程的执行状态,个线程执行完毕后对应位置设置成1,之前前...

    需求描述

    这里考察对线程锁的使用,多线程情况下如何控制各自的执行时间段。

    解题思路

    我想到的有两种接替思路,一种是使用标志位,一种是使用线程锁。

    使用标志位的思路如下
    两个线程一个打印偶数,一个打印奇数,两个线程要交叉执行,所以可以用一个长度为101的数组(第一个位置不用,便于打印的数字和位置保持一致)保存每个线程的执行状态,一个线程执行完毕后在对应位置设置成1,之前前判断数组中前一个位置是否为1,不为1则等待,流程如下:

    1. 初始化一个全局数组,长度为101,并且每个线程使用num计数,本线程中需要使用的数组的位置,也是需要打印的数组。
    2. 先让需要输出奇数的线程打印一次,数组中状态为1,0,0,0…,同时num+2。
    3. 后续两个线程在打印前都判断数组中前一个位置(num-1)是否为1,如果是1,则打印num,同时num+2;否则,等待另外一个线程。

    使用线程锁的思路如下
    这种方式就很简单了,直接使用Lock就可以。初始化线程时在线程中设置一个标识,0代表打印偶数,1代表打印奇数。
    定义一个全局变量num代表要打印的数字,在线程中判断当前要打印的数字是不是和本线程一直,即奇数=奇数线程,偶数对应偶数线程,如果一直则打印,num++,同时唤醒另外的线程;否则进行等待。

    代码编写

    思路一

    import java.util.concurrent.locks.LockSupport;
    
    /**
     * @Function
     * 
     *
     * @Update
     *
     * @Author cc
     * @CreateTime 2020年03月04日
     */
    public class Day2020304 {
    
    	public static void main(String[] args) throws Exception {
    		Day2020304 main = new Day2020304();
    		main.run();
    	}
    
    	int[] array = new int[101];
    
    	void run() throws Exception {
    		new Thread(new PrintThread(1)).start();
    		new Thread(new PrintThread(2)).start();
    	}
    
    	class PrintThread implements Runnable {
    
    		int id;
    
    		public PrintThread(int id) {
    			this.id = id;
    		}
    		
    		public void run() {
    			int num = id;
    			if (id == 1) {
    				System.out.println("id " + id + " - " + num);
    				array[num] = 1;
    				num += 2;
    			}
    			while (num <= 100) {
    				while (array[num - 1] == 0) {
    					LockSupport.parkNanos(10);
    				}
    				System.out.println("id " + id + " - " + num);
    				array[num] = 1;
    				num += 2;
    			}
    		}
    	}
    }
    
    

    思路二

    import java.util.concurrent.locks.Condition;
    import java.util.concurrent.locks.Lock;
    import java.util.concurrent.locks.ReentrantLock;
    
    /**
     * @Function
     * 
     *
     * @Update
     *
     * @Author cc
     * @CreateTime 2020年03月04日
     */
    public class Day2020304 {
    
    	public static void main(String[] args) throws Exception {
    		Day2020304 main = new Day2020304 ();
    		main.run();
    	}
    
    	Lock lock = new ReentrantLock();
    	Condition condition = lock.newCondition();
    	int num = 1;
    
    	void run() throws Exception {
    		new Thread(new PrintThread(0)).start();
    		new Thread(new PrintThread(1)).start();
    	}
    
    	class PrintThread implements Runnable {
    
    		int id;
    		public PrintThread(int id) {
    			this.id = id;
    		}
    		public void run() {
    			while (num <= 100) {
    				lock.lock();
    				try {
    					if (num % 2 == id) {
    						System.out.println("id " + id + " - " + num);
    						num ++;
    						condition.signalAll();
    					} else {
    						condition.await();
    					}
    				} catch (Exception e) {
    					e.printStackTrace();
    				} finally {
    					lock.unlock();
    				}
    			}
    		}
    	}
    }
    
    展开全文
  • 一般键盘键盘会带有数字键盘区而14寸的笔记本由于体积小所以没有这块数字键盘区,但是商家会键盘设置数字与与字母相互转换的快捷方式Fn+Numlk如果你不需要数字键的话,可以按FN+Numlk将其关闭一般情况下...
  • 我们要按照顺序打印数字的每位,如果我们用循环的方式打印得到的是逆序的,想要的到顺序的比较麻烦。如果我们用递归就能很好的实现。因为递归就是先“递”进去,“归”出来,刚好是倒着,所以完美的符合题意...
  • 我有个号码清单:nums = [12, 10, 32, 3, 66, 17, 42, 99, 20]我的第个任务是将每个数字打印在一个新行上,如下所示:^{pr2}$我可以通过创建个for循环来打印列表中的整数来实现这一点:nums = [12, 10, 32, 3,...
  • 1、按顺序打印数字的每位(例如 1234 打印出 1 2 3 4) 对输入的数字n每次先n/10去除最后位,直到满足终止条件数字n<9时开始%10输出,之后依次往回。 图有点丑 先递后归!!! import java.util.Scanner...
  • 自从人类学会取火,人类社会便有了次飞跃,几十万年来人类的取火方式是不断发展变化的。火柴是近代的产物,1860年英国人发明了火柴,后来传入我国,所以,...孩时,我们苏北农村有不少东西是不能自给自足的。...
  • 1.找出在一个字符串中,某个数字出现的次数超过字符长度的一半,并打印出这个数字 public class CountMoreThanHalf{ public static void main(String[] args){ int[] arr = new int[] {1,1,1,1,1,1,3,4,5,2,2}...
  • import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; public class QueueTest { /** * @param args ... public ...
  • 这里我们只打印long的最小的数字 -9223372036854775808的16进制import java.math.BigInteger;public class PrintInt { private static final String DIGIT_TABLE = "0123456789abcdef"; private static final ...
  • 今天的美团二面中,遇到了这个问题,时间只想起来了解法,手写没有写出来 利用volatile的可见性,来对于线程进行一些获取,进行改变~ package mianTest; // 单纯的利用boolean变量来写 加一个volatile关键字:...
  • 不逼逼,直接上效果: ...第个比较简单,代码下面package com.benhailong;public class Test_05 { public static void main (String[] args){ for(int j=1; j; j++){ for(int i=1; i; i++){
  • 逆序打印数字

    2016-11-13 17:31:13
    算法训练 2-3逆序打印数字 ... 基于例子4 ,写个程序,屏幕上打印:  9  8  7  6  5 import java.util.Scanner; public class Main { public static void main(String[] ar
  • Python给指定文件数字签名

    千次阅读 2019-11-20 11:45:14
    它是种类似写纸上的普通的物理签名,但是使用了公钥加密领域的技术来实现的,用于鉴别数字信息的方法。一套数字签名通常定义两种互补的运算,个用于签名,另个用于验证。数字签名是非对称密钥加密技术与数字...
  • 以下是JavaScript页面的代码: var i = 0; var timer = setInterval(function () { console.log(i++) if (i>10) { clearInterval(timer); } },1000) 以下是HTML页面的代码: <.../head
  • 分析 这是一道典型的递归问题,涉及...栈帧(Stack Frame)每次函数的调用,都会调用栈(call stack)上维护个独立的栈帧(stack frame).每个独立的栈帧一般包括: 函数的返回地址和参数 临时变量: 包括函数的非静...
  • 题目描述:输入个矩阵,按照从外向里以顺时针的顺序依次打印出每数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10. ...
  • 题目链接 ...参考别人的思路这里自定义个比较大小的函数,比较两个字符串s1, s2大小的时候,先将它们拼接起来,比较s1+s2,和s2+s1那个大,如果s1+s2大,那说明s2应该放前面,所以按这个规则...
  • 要求程序中定义并调用函数PrintLine()来输出图形中的行,该行中的最大数字是m,函数原型如下: PrintLine(int m); 输入 正整数n(1≤n≤9)。 输出 指定数字图形。 样例输入 5 样例输出 1 121 12321 1234321 ...
  • 本次新冠肺炎疫情中,除了显性逆势增长的云计算板块外,还有疫情中隐性爆发的板块就是3D打印。2020年6月25日,宝马启动了投资1500万欧元的慕尼黑增材制造园区,该园区将3D原型打印与系列零部件制造集成到...
  • 输入个矩阵,按照从外向里以顺时针的顺序依次打印出每数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10. 喝了二两酒...
  • 给定个数组求里面数字一起组成的最小数字 问题描述: 输入个正整数数组,把数组里所有数字拼接起来排成个数,打印能拼接出的所有数字中最小的个。例如输入数组{3,32,321},则打印出这...
  • 问题描述: 创建自定义StringBufferguo过程中,使用System.out.println()方法打印...包含包名,类名并且@数字。以下是源代码和输出结果: public static void main(String[] args) { MyStringBuffer ms...
  • 随机生成个五位以内的数字,判断有几位,打印每位 //生成个变量,先取最近的值,取五位以内的随机数,转成字符 var num = Math.round(Math.random() * 99999).toString(); console.log(num);//随机数 ...
  • 面试题33:把数组排成最小的数 1.题目描述 ...要确定排序规则,就要比较两个数字,也就是给出两个数字m和n,我们需要确定个规则判断m和n哪个应该排前面,而不是仅仅比较这两个数字的值哪个更大...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,966
精华内容 3,986
关键字:

在打一数字