基础编程题目集(5,10 分题)
基础编程题目集(5,10 分题)
7-5 表格输出 (5 分)
本题要求编写程序,按照规定格式输出表格。
输入格式:
本题目没有输入。
输出格式:
要求严格按照给出的格式输出下列表格:
public class Main {
public static void main(String[] args){
System.out.println("------------------------------------");
System.out.println("Province Area(km2) Pop.(10K)");
System.out.println("------------------------------------");
System.out.println("Anhui 139600.00 6461.00");
System.out.println("Beijing 16410.54 1180.70");
System.out.println("Chongqing 82400.00 3144.23");
System.out.println("Shanghai 6340.50 1360.26");
System.out.println("Zhejiang 101800.00 4894.00");
System.out.println("------------------------------------");
}
}
7-6 混合类型数据格式化输入 (5 分)
本题要求编写程序,顺序读入浮点数1、整数、字符、浮点数2,再按照字符、整数、浮点数1、浮点数2的顺序输出。
输入格式:
输入在一行中顺序给出浮点数1、整数、字符、浮点数2,其间以1个空格分隔。
输出格式:
在一行中按照字符、整数、浮点数1、浮点数2的顺序输出,其中浮点数保留小数点后2位。
输入样例:
2.12 88 c 4.7
输出样例:
c 88 2.12 4.70
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
float f1=sc.nextFloat();
int a=sc.nextInt();
String s=sc.next();
float f2=sc.nextFloat();
System.out.println(s+" "+a+" "+(new java.text.DecimalFormat("0.00").format(f1))+" "+(new java.text.DecimalFormat("0.00").format(f2)));
}
}
7-3 逆序的三位数 (10 分)
程序每次读入一个正3位数,然后输出按位逆序的数字。注意:当输入的数字含有结尾的0时,输出不应带有前导的0。比如输入700,输出应该是7。
输入格式:
每个测试是一个3位的正整数。
输出格式:
输出按位逆序的数。
输入样例:
123
输出样例:
321
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
int num=sc.nextInt();
int[] res=new int[3];
for(int i=0;i<3;i++){
res[i]=num%10;
num=num/10;
}
for(int i=0;i<3;i++){
if(i==0&&res[0]==0){
continue;
}
if(i==1&&res[0]==0&&res[1]==0){
continue;
}
System.out.print(res[i]);
}
}
}
7-4 BCD解密 (10 分)
BCD数是用一个字节来表达两位十进制的数,每四个比特表示一位。所以如果一个BCD数的十六进制是0x12,它表达的就是十进制的12。但是小明没学过BCD,把所有的BCD数都当作二进制数转换成十进制输出了。于是BCD的0x12被输出成了十进制的18了!
现在,你的程序要读入这个错误的十进制数,然后输出正确的十进制数。提示:你可以把18转换回0x12,然后再转换回12。
输入格式:
输入在一行中给出一个[0, 153]范围内的正整数,保证能转换回有效的BCD数,也就是说这个整数转换成十六进制时不会出现A-F的数字。
输出格式:
输出对应的十进制数。
输入样例:
18
输出样例:
12
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
int num=sc.nextInt();
System.out.print(num/16);
if(num/16!=0){
System.out.print(num%16);
}
}
}
7-8 超速判断 (10 分)
模拟交通警察的雷达测速仪。输入汽车速度,如果速度超出60 mph,则显示“Speeding”,否则显示“OK”。
输入格式:
输入在一行中给出1个不超过500的非负整数,即雷达测到的车速。
输出格式:
在一行中输出测速仪显示结果,格式为:Speed: V - S,其中V是车速,S或者是Speeding、或者是OK。
输入样例1:
40
输出样例1:
Speed: 40 - OK
输入样例2:
75
输出样例2:
Speed: 75 - Speeding
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
int speed=sc.nextInt();
if(speed>60){
System.out.println("Speed: "+speed+" - Speeding");
}
else{
System.out.println("Speed: "+speed+" - OK");
}
}
}
7-9 用天平找小球 (10 分)
三个球A、B、C,大小形状相同且其中有一个球与其他球重量不同。要求找出这个不一样的球。
输入格式:
输入在一行中给出3个正整数,顺序对应球A、B、C的重量。
输出格式:
在一行中输出唯一的那个不一样的球。
输入样例:
1 1 2
输出样例:
C
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
int a=sc.nextInt();
int b=sc.nextInt();
int c=sc.nextInt();
if(a==b&&c!=a)
System.out.println("C");
else if(a==c&&b!=a)
System.out.println("B");
else
System.out.println("A");
}
}
7-11 分段计算居民水费 (10 分)
为鼓励居民节约用水,自来水公司采取按用水量阶梯式计价的办法,居民应交水费y(元)与月用水量x(吨)相关:当x不超过15吨时,y=4x/3;超过后,y=2.5x−17.5。请编写程序实现水费的计算。
输入格式:
输入在一行中给出非负实数x。
输出格式:
在一行输出应交的水费,精确到小数点后2位。
输入样例1:
12
输出样例1:
16.00
输入样例2:
16
输出样例2:
22.50
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
float x=sc.nextInt();
float y;
//当x不超过15吨时,y=4x/3;超过后,y=2.5x−17.5
if(x<=15){
y=(4*x)/3;
}else{
y=(float) (2.5*x-17.5);
}
System.out.println(new java.text.DecimalFormat("0.00").format(y));
}
}
7-12 两个数的简单计算器 (10 分)
本题要求编写一个简单计算器程序,可根据输入的运算符,对2个整数进行加、减、乘、除或求余运算。题目保证输入和输出均不超过整型范围。
输入格式:
输入在一行中依次输入操作数1、运算符、操作数2,其间以1个空格分隔。操作数的数据类型为整型,且保证除法和求余的分母非零。
输出格式:
当运算符为+、-、*、/、%时,在一行输出相应的运算结果。若输入是非法符号(即除了加、减、乘、除和求余五种运算符以外的其他符号)则输出ERROR。
输入样例1:
-7 / 2
输出样例1:
-3
输入样例2:
3 & 6
输出样例2:
ERROR
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
int[] a=new int[2];
String[] s=new String[2];
int[] b=new int[2];
for(int i=0;i<2;i++){
a[i]=sc.nextInt();
s[i]=sc.next();
b[i]=sc.nextInt();
solve(a[i],s[i],b[i]);
}
}
public static void solve(int a,String s,int b){
switch(s){
case "+":{
System.out.println(a+b);
break;
}
case "-":{
System.out.println(a-b);
break;
}
case "*":{
System.out.println(a*b);
break;
}
case "/":{
System.out.println(a/b);
break;
}
case "%":{
System.out.println(a%b);
break;
}
default:System.out.println("ERROR");break;
}
}
}
7-34 通讯录的录入与显示 (10 分)
通讯录中的一条记录包含下述基本信息:朋友的姓名、出生日期、性别、固定电话号码、移动电话号码。 本题要求编写程序,录入N条记录,并且根据要求显示任意某条记录。
输入格式:
输入在第一行给出正整数N(≤10);随后N行,每行按照格式姓名 生日 性别 固话 手机给出一条记录。其中姓名是不超过10个字符、不包含空格的非空字符串;生日按yyyy/mm/dd的格式给出年月日;性别用M表示“男”、F表示“女”;固话和手机均为不超过15位的连续数字,前面有可能出现+。
在通讯录记录输入完成后,最后一行给出正整数K,并且随后给出K个整数,表示要查询的记录编号(从0到N−1顺序编号)。数字间以空格分隔。
输出格式:
对每一条要查询的记录编号,在一行中按照姓名 固话 手机 性别 生日的格式输出该记录。若要查询的记录不存在,则输出Not Found。
输入样例:
3
Chris 1984/03/10 F +86181779452 13707010007
LaoLao 1967/11/30 F 057187951100 +8618618623333
QiaoLin 1980/01/01 M 84172333 10086
2 1 7
输出样例:
LaoLao 057187951100 +8618618623333 F 1967/11/30
Not Found
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
String [][] str=new String[n][5];
for(int i=0;i<n;i++){
for(int j=0;j<5;j++){
str[i][j]=sc.next();
}
}
int k=sc.nextInt();
int[] num=new int[k];
for(int i=0;i<k;i++){
num[i]=sc.nextInt();
}
for(int i=0;i<k;i++){
f(str,num[i]);
}
}
public static void f(String[][] str,int num){
for(int i=0;i<str.length;i++){
if(num==i){
System.out.println(str[i][0]+" "+str[i][3]+" "+str[i][4]+" "+str[i][2]+" "+str[i][1]);
return;
}
}
System.out.println("Not Found");
}
}