题目一
以前是一个10位整数d1d2d3d4d5d6d7d8d9d10,最后一位d10是校验和,它是使用下面的公式用另外9个数计算出来的。
如果校验和位10,那么按照ISBN-10的习惯,最后一位应该表示为X,编写程序,提示用户输入前9个数,然后显示10位ISBN(包括前面起始位置的0),程序应该读取一个整数输入,以下是一个运行实例。
package ch04;
import java.util.Scanner;
public class a {
public static void main(String[] args) {
int input;
System.out.print("请输入金字塔的行数:");
Scanner scanner = new Scanner(System.in);
input = scanner.nextInt();
String t="";
for(int i=1;i<=input;i++)
{
int bb=input-i;
for(int ii=bb;ii>0;ii--)
{
System.out.print(String.format("%4s",t));
}
long b1=1,b2;
for(int j=0;j<i;j++)
{
System.out.print(String.format("%4d",b1));
b1=b1*2;
}
b2=b1/2;
for (int jj1=i-2;jj1>=0 ; jj1--)
{
b2=b2/2;
System.out.print(String.format("%4d",b2));
}
System.out.println();
//bb=bb-7-i;
}
}
}
题目二
编写一个嵌套的for循环,打印下面的输出:
要求:输入行数,打印相应行数的金字塔,行数以及金字塔中的数字,使用long类型,输出金字塔数字对齐。
package ch04;
import java.util.Scanner;
public class b {
public static void main(String[] args) {
System.out.print("Enter the first 9 digits of an ISBN as integer:");
Scanner scanner = new Scanner(System.in);
String s=scanner.nextLine();
int sum=0;
for(int i=0;i<s.length();i++) {
char c =s.charAt(i);
int a=c-'0';
int b=a*(i+1);
sum+=b;
//sum=sum%11;
//System.out.println(sum);
//System.out.println(s.length());
//System.out.println(a*(i+1));
}
sum=sum%11;
//System.out.print('0');
System.out.print(s);
if(sum!=10)
System.out.print(sum);
else
System.out.print('X');
}
}