1.编写程序数一下 1到 100 的所有整数中出现多少个数字9
十位 n/10
个位 n%10
public static void main(String[] args) {
int count = 0;
for (int i = 1; i <= 100; i++) {
if(i / 10 == 9){
count++;
}
if(i%10==9){
count++;
}
}
System.out.println(count);
}
2.给定一个数字,判定一个数字是否是素数
方法一
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int i;
for (i = 2;i < n;i++) {
if(n%i == 0) {
System.out.println("n不是素数:"+n);
break;
}
}
if(i >= n) {
System.out.println(n + "是素数");
}
方法二:任何一个数字n,都可以写成 n = a*b的形式。那么必然会有一个数字是小于等于2/n的。
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int i;
for (i = 2;i <= n/2;i++) {
if(n%i == 0) {
//System.out.println("n不是素数:"+n);
break;
}
}
if(i > n/2) {
System.out.println(n + "是素数");
}
}
方法三:任何一个数字n,都可以写成 n = a*b的形式。那么必然会有一个数字是小于等于根号n的。
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int i;
for (i = 2;i <= Math.sqrt(n);i++) {
if(n%i == 0) {
//System.out.println("n不是素数:"+n);
break;
}
}
if(i > Math.sqrt(n)) {
System.out.println(n + "是素数");
}
}
变式:求出1到n之间所有素数
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
for (int k = 1; k < n; k++) {
int i = 2;
for (; i < k; i++) {
if(k%i==0){
break;
}
}
if (i == k){
System.out.println(k+"是素数");
}
}
}
3.给定两个数,求这两个数的最大公约数
public static void main(String[] args) {
int a = 18;
int b = 24;
int c = a%b;
while (c != 0) {
a = b;
b = c;
c = a%b;
}
System.out.println(b);
}
4.计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值 。
public static void main(String[] args) {
double sum = 0.0;
int flag = 1;
for (int i = 1; i <= 100; i++) {
sum+=1.0/i * flag;
flag = -flag;
}
System.out.println(sum);
}
5.KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的X形图案。
输入描述:
多组输入,一个整数(2~20),表示输出的行数,也表示组成“X”的反斜线和正斜线的长度。
输出描述:
针对每行输入,输出用“*”组成的X形图案。
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n;
while (scanner.hasNextInt()) {
n = scanner.nextInt();
for(int i = 0; i < n; i++){
for(int j = 0; j< n; j++){
if(i == j || (i + j) == n-1){
System.out.print("*");
}else{
System.out.print(" ");
}
}
System.out.println();
}
}
}
}
6.编写代码模拟三次密码输入的场景。 最多能输入三次密码,密码正确,提示“登录成功”,密码错误, 可以重新输 入,最多输入三次。三次均错,则提示退出程序
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int count = 3;
while(count != 0){
System.out.println("请输入密码,你还有 " + count + " 次机会!");
String password = scanner.nextLine();
if(password.equals("1234")){
System.out.println("登陆成功");
}else{
System.out.println("密码错误");
}
}
}
7.输出n*n的乘法口诀表,n由用户输入。
public static void main(String[] args) {
for (int i = 1; i <= 9 ; i++) {
for (int j = 1; j <= i; j++) {
//注意这里的拼接,不要是换行
System.out.print(j+"*"+i+"="+i*j+" ");
}
System.out.println();
}
}
8.求出0~999之间的所有“水仙花数”并输出。(“水仙花数”是指一个三位数,其各位数字的立方和确
好等于该数
public static void main(String[] args) {
for (int i = 0; i < 999999; i++) {
int count = 0;//计算i有几位数
int tmp = i;
while(i != 0){
count++;
i = i / 10;
}
//count的值是多少位数 i还是没有变的
//计算i的每一位
tmp = i;
int sum = 0;
while(tmp != 0){
sum += Math.pow(tmp % 10, count);
tmp /= 10;
}
if (sum == i){
System.out.println(i);
}
}
}
9.写一个函数返回参数二进制中 1 的个数 ,比如: 15 0000 1111 4 个 1
每一次&都会少掉一个1
10. 获取一个数二进制序列中所有的偶数位和奇数位,分别输出二进制序列。
public static void main(String[] args) {
int n = 7;
for (int i = 31; i >= 0 ; i-=2) {
System.out.print(((n >>> i) & 1 )+" ");//右移
}
System.out.println();//换行
for (int i = 30; i >= 0 ; i-=2) {
System.out.print(((n >>> i) & 1 )+" ");
}
}