-
打印数字
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; } } }
-
在命令行输入一组数字、排序并打印输出
2018-12-03 23:34:13要求:输入一组数字,进行排序,最后打印输出。 #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函数完成全部字符串的转换。
-
Java多线程入门(一)——在屏幕上交替打印数字、字母
2019-10-10 13:40:22如果运行这个程序,则三个线程将共享CPU,并且在控制台上轮流打印字母和数字。 (因为现在电脑的CPU都太快了,100个数和字母根本看不出来CPU在交替执行线程,所以我将数字定位10000 效果 代码 package P1; ...题目
编写一个程序,创建三个任务以及三个运行这些任务的线程:
- 第一个任务打印字母a100次
- 第二个任务打印字母b100次
- 第三个任务打印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()方法执行完毕之后,线程就终止了。
-
两个线程,顺序打印从1-100的数字,一个线程打印奇数,一个线程打印偶数
2020-03-04 14:44:05两个线程一个打印偶数,一个打印奇数,两个线程要交叉执行,所以可以用一个长度为101的数组(第一个位置不用,便于打印的数字和位置保持一致)保存每个线程的执行状态,一个线程执行完毕后在对应位置设置成1,之前前...需求描述
这里考察对线程锁的使用,多线程情况下如何控制各自的执行时间段。
解题思路
我想到的有两种接替思路,一种是使用标志位,一种是使用线程锁。
使用标志位的思路如下:
两个线程一个打印偶数,一个打印奇数,两个线程要交叉执行,所以可以用一个长度为101的数组(第一个位置不用,便于打印的数字和位置保持一致)保存每个线程的执行状态,一个线程执行完毕后在对应位置设置成1,之前前判断数组中前一个位置是否为1,不为1则等待,流程如下:- 初始化一个全局数组,长度为101,并且每个线程使用num计数,本线程中需要使用的数组的位置,也是需要打印的数组。
- 先让需要输出奇数的线程打印一次,数组中状态为1,0,0,0…,同时num+2。
- 后续两个线程在打印前都判断数组中前一个位置(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(); } } } } }
-
笔记本电脑数字键打不出数字_笔记本电脑打不了数字
2020-11-09 17:54:33一般键盘键盘会带有一块数字键盘区而14寸的笔记本由于体积小所以没有这块数字键盘区,但是商家会在键盘设置一个数字与与字母相互转换的快捷方式Fn+Numlk如果你不需要数字键的话,可以按FN+Numlk将其关闭一般情况下... -
按顺序打印一个数字的每一位(例如 1234 打印出 1 2 3 4)。Java实现
2019-09-17 22:09:15我们要按照顺序打印一个数字的每一位,如果我们用循环的方式打印得到的是逆序的,想要的到顺序的比较麻烦。如果我们用递归就能很好的实现。因为递归就是先“递”进去,在“归”出来,刚好是倒着,所以完美的符合题意... -
分别打印每个数字python_Python For循环,在单独的Lin上打印每个数字及其平方
2020-12-24 11:24:22我有一个号码清单:nums = [12, 10, 32, 3, 66, 17, 42, 99, 20]我的第一个任务是将每个数字打印在一个新行上,如下所示:^{pr2}$我可以通过创建一个for循环来打印列表中的整数来实现这一点:nums = [12, 10, 32, 3,... -
递归(二)递归按顺序打印一个数字的每一位(例如 1234 打印出 1 2 3 4)及递归输入一个非负整数,返回组成它...
2020-03-12 23:49:561、按顺序打印一个数字的每一位(例如 1234 打印出 1 2 3 4) 对输入的数字n每次先n/10去除最后一位,直到满足终止条件数字n<9时开始%10输出,之后在依次往回。 图有点丑 先递后归!!! import java.util.Scanner... -
暖火柴打一数字_天津日报数字报刊平台-温暖的火柴
2020-12-24 21:15:16自从人类学会取火,人类社会便有了一次飞跃,几十万年来人类的取火方式是不断发展变化的。火柴是近代的产物,1860年英国人发明了火柴,后来传入我国,所以,...孩时,在我们苏北农村有不少东西是不能自给自足的。... -
Java:找出在一个字符串中,某个数字出现的次数超过字符长度的一半,并打印出这个数字
2019-04-16 10:43:261.找出在一个字符串中,某个数字出现的次数超过字符长度的一半,并打印出这个数字 public class CountMoreThanHalf{ public static void main(String[] args){ int[] arr = new int[] {1,1,1,1,1,1,3,4,5,2,2}... -
在控制台输入一串数字,排序后在控制台打印
2011-07-14 11:04:27import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; public class QueueTest { /** * @param args ... public ... -
一个完美的鲁棒的数字打印程序
2017-07-22 07:54:05在这里我们只打印long的最小的数字 -9223372036854775808的16进制import java.math.BigInteger;public class PrintInt { private static final String DIGIT_TABLE = "0123456789abcdef"; private static final ... -
【多线程】两个线程轮流打印数字1-100,一个打奇数一个打偶数,顺序打印
2020-09-21 21:59:59在今天的美团二面中,遇到了这个问题,一时间只想起来了解法,手写没有写出来 利用volatile的可见性,来对于线程进行一些获取,进行改变~ package mianTest; // 单纯的利用boolean变量来写 加一个volatile关键字:... -
利用java在控制台打印楼梯数字
2016-08-31 13:36:59不逼逼,直接上效果: ...第一个比较简单,代码在下面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习题(写一个定时器方法,每秒在控制台打印出一个数字,从0开始打印,到10就停下)
2020-06-13 14:53:33以下是JavaScript页面的代码: var i = 0; var timer = setInterval(function () { console.log(i++) if (i>10) { clearInterval(timer); } },1000) 以下是HTML页面的代码: <.../head -
按顺序打印一个数字的每一位(例如 1234 打印出 1 2 3 4)
2020-03-27 18:20:14分析 这是一道典型的递归问题,涉及...栈帧(Stack Frame)每一次函数的调用,都会在调用栈(call stack)上维护一个独立的栈帧(stack frame).每个独立的栈帧一般包括: 函数的返回地址和参数 临时变量: 包括函数的非静... -
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字 java实现
2020-03-13 17:11:13题目描述:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下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. ... -
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。
2019-09-27 12:36:20题目链接 ...参考别人的思路在这里自定义一个比较大小的函数,比较两个字符串s1, s2大小的时候,先将它们拼接起来,比较s1+s2,和s2+s1那个大,如果s1+s2大,那说明s2应该放前面,所以按这个规则... -
打印数字图形(函数专题...要求在程序中定义并调用函数PrintLine()来输出图形中的一行,该行中的最大数字是m,
2020-02-29 20:47:47要求在程序中定义并调用函数PrintLine()来输出图形中的一行,该行中的最大数字是m,函数原型如下: PrintLine(int m); 输入 正整数n(1≤n≤9)。 输出 指定数字图形。 样例输入 5 样例输出 1 121 12321 1234321 ... -
3D打印与数字制造,在疫情中走向主流
2020-07-10 11:43:17在本次新冠肺炎疫情中,除了显性逆势增长的云计算板块外,还有一个在疫情中隐性爆发的板块就是3D打印。2020年6月25日,宝马启动了投资1500万欧元的慕尼黑增材制造园区,该园区将3D原型打印与系列零部件制造集成到... -
剑指offer题目 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字
2020-05-28 23:33:04输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下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. 在喝了二两酒... -
给定一个数组求里面数字拼在一起组成的最小数字
2019-06-08 21:46:00给定一个数组求里面数字拼在一起组成的最小数字 问题描述: 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这... -
打印时输出类名.@一串数字
2019-11-22 16:52:26问题描述: 在创建自定义StringBufferguo过程中,使用System.out.println()方法打印...包含包名,类名并且@一串数字。以下是源代码和输出结果: public static void main(String[] args) { MyStringBuffer ms... -
随机生成一个五位以内的数字,判断有几位,打印每一位
2020-04-30 12:31:43随机生成一个五位以内的数字,判断有几位,打印每一位 //生成一个变量,先取最近的值,在取五位以内的随机数,转成字符 var num = Math.round(Math.random() * 99999).toString(); console.log(num);//随机数 ... -
| 输入一个正整数数组,把数组里所有数字拼接起来排成一个数打印能拼接出的所有数字中最小的一个。
2020-05-06 15:32:55面试题33:把数组排成最小的数 1.题目描述 ...要确定排序规则,就要比较两个数字,也就是给出两个数字m和n,我们需要确定一个规则判断m和n哪个应该排在前面,而不是仅仅比较这两个数字的值哪个更大...