Java代码在上面,下面空两行是python
7-1 厘米换算英尺英寸 (15分)
如果已知英制长度的英尺foot和英寸inch的值,那么对应的米是(foot+inch/12)×0.3048。现在,如果用户输入的是厘米数,那么对应英制长度的英尺和英寸是多少呢?别忘了1英尺等于12英寸。
输入格式:
输入在一行中给出1个正整数,单位是厘米。
输出格式:
在一行中输出这个厘米数对应英制长度的英尺和英寸的整数值,中间用空格分开。
输入样例:
170
输出样例:
5 6
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// (foot+inch/12)×0.3048,写在这里给自己看看计算公式
double cm=0, tmp;
int foot=0, inch=0;
try (Scanner sc = new Scanner(System.in)) {
cm = sc.nextDouble();
}
tmp = cm/100/0.3048;
foot = (int)(tmp);
inch = (int)((tmp-foot)*12);
System.out.println(foot + " " + inch);
}
}
cm=(float)(input())
tmp=cm/100/0.3048
foot=(int)(tmp)
inch=(int)((tmp-foot)*12)
print(foot,inch)#为什么自动有一个空格
7-2 然后是几点 (15分)
有时候人们用四位数字表示一个时间,比如1106表示11点零6分。现在,你的程序要根据起始时间和流逝的时间计算出终止时间。
读入两个数字,第一个数字以这样的四位数字表示当前时间,第二个数字表示分钟数,计算当前时间经过那么多分钟后是几点,结果也表示为四位数字。当小时为个位数时,没有前导的零,即5点30分表示为530。注意,第二个数字表示的分钟数可能超过60,也可能是负数。
输入格式:
输入在一行中给出2个整数,分别是四位数字表示的起始时间、以及流逝的分钟数,其间以空格分隔。注意:在起始时间中,当小时为个位数时,没有前导的零,即5点30分表示为530;流逝的分钟数可能超过60,也可能是负数。
输出格式:
输出四位数字表示的终止时间,当小时为个位数时,没有前导的零。题目保证起始时间和终止时间在同一天内。
输入样例:
1120 110
输出样例:
1310
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int start=0, end,during;
Scanner sc = new Scanner(System.in) ;
start=sc.nextInt();
during=sc.nextInt();
start=start/100*60+start%100;
end=(start+during)/60*100+(start+during)%60;
System.out.println(end);
}
}
start,during=map(int,input().split())
start=start//100 * 60+start%100
end=(int)((start+during)//60 * 100+(start+during)%60)
print(end)
7-3 逆序的三位数 (10分)
程序每次读入一个正3位数,然后输出按位逆序的数字。注意:当输入的数字含有结尾的0时,输出不应带有前导的0。比如输入700,输出应该是7。
输入格式:
每个测试是一个3位的正整数。
输出格式:
输出按位逆序的数。
输入样例:
123
输出样例:
321
鸣谢安阳师范学院软件学院李康康同学补充数据!
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int num;
Scanner sc = new Scanner(System.in) ;
num=sc.nextInt();
/*if(num%100==0)
{
num=(num-1)/100+1;
}
else
{
num=num/100+num%10*100+(num-(num/100*100+num%10));
}*/
num=num/100+num%10*100+(num-(num/100*100+num%10));
System.out.println(num);
}
}
num=(int)(input())
num=num//100+num%10*100+(num-(num//100*100+num%10))
print(num)
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) {
int num;
int i;
int temp=1;
Scanner sc = new Scanner(System.in) ;
num=sc.nextInt();
if(num==0)
{
num=0;
}
else if(num==153)
{
num=99;
}
else
{
for(i=1;i<=num/16;i++)
{
temp=temp*i;
}
num=temp*10+num%16;
}
System.out.println(num);
}
}
num=(int)(input())
if(num==0):
num=0
elif(num==153):
num=99
else:
temp=1
for i in range(1,1+num//16):
temp=temp*i
num=temp*10+num%16
print(num)
7-5 表格输出 (5分)
C语言做,Java不明白我为什么错了
本题要求编写程序,按照规定格式输出表格。
输入格式:
本题目没有输入。
输出格式:
要求严格按照给出的格式输出下列表格:
Province Area(km2) Pop.(10K)
Anhui 139600.00 6461.00
Beijing 16410.54 1180.70
Chongqing 82400.00 3144.23
Shanghai 6340.50 1360.26
Zhejiang 101800.00 4894.00
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
System.out.println("------------------------------------\n" +
"Province Area(km2) Pop.(10K)\n" +
"------------------------------------\n" +
"Anhui 139600.00 6461.00\n" +
"Beijing 16410.54 1180.70\n" +
"Chongqing 82400.00 3144.23\n" +
"Shanghai 6340.50 1360.26\n" +
"Zhejiang 101800.00 4894.00\n" +
"------------------------------------");
}
}
当时我复制过来然后编译器自动在我\n前加上\r,所以PTA报错
print("""------------------------------------
Province Area(km2) Pop.(10K)
------------------------------------
Anhui 139600.00 6461.00
Beijing 16410.54 1180.70
Chongqing 82400.00 3144.23
Shanghai 6340.50 1360.26
Zhejiang 101800.00 4894.00
------------------------------------""")
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) {
int a;
float b1,b2;
char c;
Scanner in=new Scanner(System.in);
b1=in.nextFloat();
a=in.nextInt();
c=in.next().charAt(0);
b2=in.nextFloat();
System.out.printf("%c %d %.2f %.2f",c,a,b1,b2);
}
}
f1,a,c,f2=map(str,input().split())
f1=float(f1)
a=int(a)
c==str(c)
f2=float(f2)
print("%c %d %.2f %.2f"%(c,a,f1,f2))
7-7 12-24小时制 (15分)
编写一个程序,要求用户输入24小时制的时间,然后显示12小时制的时间。
输入格式:
输入在一行中给出带有中间的:符号(半角的冒号)的24小时制的时间,如12:34表示12点34分。当小时或分钟数小于10时,均没有前导的零,如5:6表示5点零6分。
提示:在scanf的格式字符串中加入:,让scanf来处理这个冒号。
输出格式:
在一行中输出这个时间对应的12小时制的时间,数字部分格式与输入的相同,然后跟上空格,再跟上表示上午的字符串AM或表示下午的字符串PM。如5:6 PM表示下午5点零6分。注意,在英文的习惯中,中午12点被认为是下午,所以24小时制的12:00就是12小时制的12:0 PM;而0点被认为是第二天的时间,所以是0:0 AM。
输入样例:
21:11
输出样例:
9:11 PM
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc =new Scanner(System.in);
String s=sc.nextLine();
String[] num = s.split(":");
int h = Integer.parseInt(num[0]);
int m = Integer.parseInt(num[1]);
if(h>12)
{
h=h-12;
System.out.printf("%d:%d PM",h,m);
}
else if(h==12)
{
System.out.printf("%d:%d PM",h,m);
}
else
{
System.out.printf("%d:%d AM",h,m);
}
}
}
h,m=map(int,input().split(':'))
if(h>12):
h-=12
print("%d:%d PM"%(h,m))
elif(h==12):
print("%d:%d PM"%(h,m))
else:
print("%d:%d AM"%(h,m))
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 v=sc.nextInt();
if(v<=60)
{
System.out.printf("Speed: "+ v +" - OK");
}
else
{
System.out.printf("Speed: "+ v +" - Speeding");
}
}
}
v=(int)(input())
if(v<=60):
print("Speed: %d - OK"%(v))
else:
print("Speed: %d - Speeding"%(v))
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)
{
System.out.println("C");
}
if(a==c)
{
System.out.println("B");
}
if(c==b)
{
System.out.println("A");
}
}
}
a,b,c=map(int,input().split())
if(a==b):
print("C")
elif(a==c):
print("B")
else:
print("A")
7-10 计算工资 (15分)
某公司员工的工资计算方法如下:一周内工作时间不超过40小时,按正常工作时间计酬;超出40小时的工作时间部分,按正常工作时间报酬的1.5倍计酬。员工按进公司时间分为新职工和老职工,进公司不少于5年的员工为老职工,5年以下的为新职工。新职工的正常工资为30元/小时,老职工的正常工资为50元/小时。请按该计酬方式计算员工的工资。
输入格式:
输入在一行中给出2个正整数,分别为某员工入职年数和周工作时间,其间以空格分隔。
输出格式:
在一行输出该员工的周薪,精确到小数点后2位。
输入样例1:
5 40
输出样例1:
2000.00
输入样例2:
3 50
输出样例2:
1650.00
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc =new Scanner(System.in);
float wage,rate = 0;
float year=sc.nextFloat();
float t=sc.nextFloat();
if(year>=5)
{
rate=50;
}
else
{
rate=30;
}
if(t<=40)
{
wage=rate*t;
}
else
{
wage= (float) (1.5*rate*(t-40)+rate*40);//不知道为什么这里需要强制类型转换
}
System.out.printf("%.2f",wage);
}
}
year,t=map(int,input().split())
if(year>=5):
rate=50
else:
rate=30
if(t<=40):
wage=rate*t
else:
wage=1.5*rate*(t-40)+rate*40
print("%.2f"%(wage))
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.nextFloat();
float y;
if(x<=15)
{
y=(float) (4*x/3.0);
}
else
{
y=(float) (2.5*x-17.5);
}
System.out.printf("%.2f",y);
}
}
x=(int)(input())
if(x<=15):
y=4*x/3.0
else:
y=2.5*x-17.5
print("%.2f"%(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=sc.nextInt();
String b=sc.next();
int c=sc.nextInt();
if(b.contentEquals("+"))
{
System.out.println(a+c);
}
else if(b.contentEquals("-"))
{
System.out.println(a-c);
}
else if(b.contentEquals("*"))
{
System.out.println(a*c);
}
else if(b.contentEquals("/"))
{
System.out.println(a/c);
}
else if(b.contentEquals("%"))
{
System.out.println(a%c);
}
else
{
System.out.println("ERROR");
}
}
}
a,b,c=map(str,input().split())
a=(int)(a)
c=(int)(c)
if(b=='+'):
print(a+c)
elif(b=='-'):
print(a-c)
elif(b=='*'):
print(a*c)
elif(b=='/'):
if(a*c>=0):
print(a//c)
else:
print(1+a//c)
elif(b=='%'):
print(a%c)
else:
print("ERROR")
7-13 日K蜡烛图 (15分)
股票价格涨跌趋势,常用蜡烛图技术中的K线图来表示,分为按日的日K线、按周的周K线、按月的月K线等。以日K线为例,每天股票价格从开盘到收盘走完一天,对应一根蜡烛小图,要表示四个价格:开盘价格Open(早上刚刚开始开盘买卖成交的第1笔价格)、收盘价格Close(下午收盘时最后一笔成交的价格)、中间的最高价High和最低价Low。
如果Close
输入格式:
输入在一行中给出4个正实数,分别对应Open、High、Low、Close,其间以空格分隔。
输出格式:
在一行中输出日K蜡烛的类型。如果有上、下影线,则在类型后加上with 影线类型。如果两种影线都有,则输出with Lower Shadow and Upper Shadow。
输入样例1:
5.110 5.250 5.100 5.105
输出样例1:
BW-Solid with Lower Shadow and Upper Shadow
输入样例2:
5.110 5.110 5.110 5.110
输出样例2:
R-Cross
输入样例3:
5.110 5.125 5.112 5.126
输出样例3:
R-Hollow
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc =new Scanner(System.in);
float Open=sc.nextFloat();
float High=sc.nextFloat();
float Low=sc.nextFloat();
float Close=sc.nextFloat();
if(CloseOpen)
{
System.out.printf("R-Hollow");
}
else if(Close==Open)
{
System.out.printf("R-Cross");
}
if((LowOpen&&High>Close))
{
System.out.printf(" with Lower Shadow");
}
if(!(LowOpen&&High>Close))
{
System.out.printf(" with Upper Shadow");
}
if((LowOpen&&High>Close))
{
System.out.printf(" with Lower Shadow and Upper Shadow");
}
}
}
Open,High,Low,Close=map(float,input().split())
if(CloseOpen):
print("R-Hollow",end='')
else:
print("R-Cross",end='')
if( (LowOpen and High>Close) ):
print(" with Lower Shadow")
if(not(LowOpen and High>Close)):
print(" with Upper Shadow")
if((LowOpen)and(High>Close)):
print(" with Lower Shadow and Upper Shadow")
7-14 求整数段和 (15分)
给定两个整数A和B,输出从A到B的所有整数以及这些数的和。
输入格式:
输入在一行中给出2个整数A和B,其中−100≤A≤B≤100,其间以空格分隔。
输出格式:
首先顺序输出从A到B的所有整数,每5个数字占一行,每个数字占5个字符宽度,向右对齐。最后在一行中按Sum = X的格式输出全部数字的和X。
输入样例:
-3 8
输出样例:
-3 -2 -1 0 1
2 3 4 5 6
7 8
Sum = 30
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc =new Scanner(System.in);
int a[]=new int [300];
int i,sum=0,count=0;
int n=sc.nextInt();
int m=sc.nextInt();
for(i=0;i<=m-n;i++)
{
a[i]=n+i;
System.out.printf("%5d",a[i]);
count++;
if(count%5==0)
{
System.out.println();
}
sum+=a[i];
}
if(count%5!=0)
{
System.out.println();
}
System.out.println("Sum = "+sum);
}
}
a,b=map(int,input().split())
sum=0
c=0
count=0
for i in range(0,b-a+1 ):
c=a+i
sum+=c
count+=1
print("%5d"%(c),end="")#这里双引号中间不能有空格
if(count%5==0):
print()#打印空格
if(count%5!=0):
print()
print("Sum =",sum)#等号旁边不能有空格
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc =new Scanner(System.in);
float m=sc.nextFloat();
float arr[]=new float[10000];
int i;
float pi=1;
arr[1]=1;
float a=1,b=1;
for(i=2;arr[i-1]>=m;i++)
{
a=a*(i-1);
b=b*(2*i-1);
pi+=a/b;
arr[i]=a/b;
}
System.out.printf("%.6f",2*pi);
}
}
m=(float)(input())
a=1
b=1
pi=1
i=2
while(a/b>=m):
a=a*(i-1)
b=b*(2*i-1)
pi+=a/b
i+=1
print("%.6f"%(2*pi))
***惊奇地发现pi先加上最后的a/b(小于0.01的那个)再跳出while循环
7-16 求符合给定条件的整数集 (15分)
给定不超过6的正整数A,考虑从A开始的连续4个数字。请输出所有由它们组成的无重复数字的3位数。
输入格式:
输入在一行中给出A。
输出格式:
输出满足条件的的3位数,要求从小到大,每行6个整数。整数间以空格分隔,但行末不能有多余空格。
输入样例:
2
输出样例:
234 235 243 245 253 254
324 325 342 345 352 354
423 425 432 435 452 453
523 524 532 534 542 543
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc =new Scanner(System.in);
int a=sc.nextInt();
int count=0;
int i,j,k;
for(i=a;i
a=(int)(input())
count=0
for i in range(a,a+4):
for j in range(a,a+4):
for k in range(a,a+4):
if(i!=j and j!=k and i!=k):
count+=1
if(count%6==0):
print("%d%d%d"%(i,j,k))
else:
print("%d%d%d"%(i,j,k),end=" ")
7-17 爬动的蠕虫 (15分)
一条蠕虫长1寸,在一口深为N寸的井的底部。已知蠕虫每1分钟可以向上爬U寸,但必须休息1分钟才能接着往上爬。在休息的过程中,蠕虫又下滑了D寸。就这样,上爬和下滑重复进行。请问,蠕虫需要多长时间才能爬出井?
这里要求不足1分钟按1分钟计,并且假定只要在某次上爬过程中蠕虫的头部到达了井的顶部,那么蠕虫就完成任务了。初始时,蠕虫是趴在井底的(即高度为0)。
输入格式:
输入在一行中顺序给出3个正整数N、U、D,其中D 输出格式:
在一行中输出蠕虫爬出井的时间,以分钟为单位。
输入样例:
12 3 1
输出样例:
11
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc =new Scanner(System.in);
int n=sc.nextInt();
int u=sc.nextInt();
int d=sc.nextInt();
int t=0,h=0; //h为爬的高度
boolean rest=false;
while(h
n,u,d=map(int,input().split())
t=0
h=0 #h为爬的高度
rest=0 #没歇,要爬了
while(h
import java.util.Scanner;
public class Main {
public static float f(float a ,float b,float c,float d,float x){//题目中的3阶多项式
return a*x*x*x+b*x*x+c*x+d;
}
public static void main(String[] args) {
Scanner sc =new Scanner(System.in);
float a3=sc.nextFloat();
float a2=sc.nextFloat();
float a1=sc.nextFloat();
float a0=sc.nextFloat();
float low=sc.nextFloat();
float high =sc.nextFloat();
float mid=(low+high)/2;
while(high-low>=0.001&&f(a3,a2,a1,a0,mid)!=0)
{
if(f(a3,a2,a1,a0,low)==0)
{
mid=low;
break;
}
else if(f(a3,a2,a1,a0,high)==0)
{
mid=high;
break;
}
else if(f(a3,a2,a1,a0,low)*f(a3,a2,a1,a0,mid)<0)
{
high=mid;
}
else if(f(a3,a2,a1,a0,high)*f(a3,a2,a1,a0,mid)<0)
{
low=mid;
}
mid=(low+high)/2;
}
System.out.printf("%.2f",mid);
}
}
a3,a2,a1,a0=map(float,input().split())
low,high=map(float,input().split())
mid=(high+low)/2
def f(a3,a2,a1,a0,x):
return a3*x*x*x+a2*x*x+a1*x+a0
while(high-low>=0.001 and f(a3,a2,a1,a0,mid)!=0):
if (f(a3,a2,a1,a0,low)==0):
mid=low
break
elif (f(a3,a2,a1,a0,high)==0):
mid=high
break
elif (f(a3,a2,a1,a0,low)*f(a3,a2,a1,a0,mid)<0):
high=mid
elif (f(a3,a2,a1,a0,high)*f(a3,a2,a1,a0,mid)<0):
low=mid
mid=(low+high)/2
print("%.2f"%(mid))
7-19 支票面额 (15分)
一个采购员去银行兑换一张y元f分的支票,结果出纳员错给了f元y分。采购员用去了n分之后才发觉有错,于是清点了余额尚有2y元2f分,问该支票面额是多少?
输入格式:
输入在一行中给出小于100的正整数n。
输出格式:
在一行中按格式y.f输出该支票的原始面额。如果无解,则输出No Solution。
输入样例1:
23
输出样例1:
25.51
输入样例2:
22
输出样例2:
No Solution
/*这个题应该注意两点:
1、浮点数存在不确定的尾数,所以不是十分的精确,精确的运算要用整数。
2、在输出y.f的时候要注意f如果是个位数应该直接加到点后面,我一开始默认了f/100是两位数,导致
最后一个测试点一直过不去,最后看了看别人的输出才恍然大悟。*/
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc =new Scanner(System.in);
int n=sc.nextInt();
int y = 0;
int f = 0;
int flag=0;
for(f=0;f<100;f++)//100元100分
{
for(y=0;y<100;y++)//100元100分
{
if(n+200*y+2*f==100*f+y)/*之前是浮点数,现在改为整型就是100*(n/100+2*y+2*f/100==f+y/100),更精确了*/
{
System.out.printf("%d.%d",y,f);
flag=1;
System.exit(0);
}
}
}
if(flag==0)
{
System.out.printf("No Solution");
}
}
}
n=(int )(input())
y=0
f=0
flag=0
for f in range(0,100):
for y in range(0,100):
if n+200*y+2*f==100*f+y :
print("%d.%d"%(y,f))
flag=1
exit(0)
if flag==0 :
print("No Solution")
输入格式:
输入在一行中给出一个正整数N(1≤N≤9)。
输出格式:
输出下三角N*N部分口诀表,其中等号右边数字占4位、左对齐。
输入样例:
4
输出样例:
import java.util.Scanner;/*一行一行地打印出来*/
public class Main {
public static void main(String[] args) {
Scanner sc =new Scanner(System.in);
int n=sc.nextInt();
int i=0;
int j=0;
for(i=1;i<=n;i++)
{
for(j=1;j<=i;j++)
{
System.out.printf( j+ "*" + i + "=" + "%-4d", i*j);
}
System.out.println();
}
}
}
n=(int )(input())
i=0
j=0
for i in range(1,n+1):
for j in range(1,i+1):
print("%d*%d=%-4d"%(j,i,i*j),end='')
print()
7-21 求特殊方程的正整数解 (15分)
本题要求对任意给定的正整数N,求方程X
2
+Y
2
=N的全部正整数解。
输入格式:
输入在一行中给出正整数N(≤10000)。
输出格式:
输出方程X
2
+Y
2
=N的全部正整数解,其中X≤Y。每组解占1行,两数字间以1空格分隔,按X的递增顺序输出。如果没有解,则输出No Solution。
输入样例1:
884
输出样例1:
10 28
20 22
输入样例2:
11
输出样例2:
No Solution
import java.math.*;//引用开平方函数
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc =new Scanner(System.in);
int n=sc.nextInt();
int i=0;
int j=0;
int flag=0;
for(i=1;i<=Math.sqrt(n);i++)
{
for(j=1;j<=Math.sqrt(n);j++)
{
if(i*i+j*j==n&&i<=j)
{
System.out.printf( i+" "+j);
flag=1;
System.out.println();
}
}
}
if(flag==0)
{
System.out.println("No Solution");
}
}
}
n=(int )(input())
import math
i=0
j=0
flag=0
for i in range(1,(int)(math.sqrt(n)+1)):
for j in range(1,(int)(math.sqrt(n)+1)):
if(i*i+j*j==n and i<=j):
print(i,j)
flag=1
if flag==0 :
print("No Solution")
7-22 龟兔赛跑 (20分)
乌龟与兔子进行赛跑,跑场是一个矩型跑道,跑道边可以随地进行休息。乌龟每分钟可以前进3米,兔子每分钟前进9米;兔子嫌乌龟跑得慢,觉得肯定能跑赢乌龟,于是,每跑10分钟回头看一下乌龟,若发现自己超过乌龟,就在路边休息,每次休息30分钟,否则继续跑10分钟;而乌龟非常努力,一直跑,不休息。假定乌龟与兔子在同一起点同一时刻开始起跑,请问T分钟后乌龟和兔子谁跑得快?
输入格式:
输入在一行中给出比赛时间T(分钟)。
输出格式:
在一行中输出比赛的结果:乌龟赢输出@@,兔子赢输出^^,平局则输出--;后跟1空格,再输出胜利者跑完的距离。
输入样例:
242
输出样例:
@@ 726
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc =new Scanner(System.in);
int T=sc.nextInt();
int bunny = 0, turtle = 0;//兔子和乌龟移动距离
int rest=0;//兔子当前还需休息的时间
int t=0;//这个时间是一分一分算的,实在没办法才会去当数学题去找规律——很麻烦
while(t < T)//直到t=T时
{
turtle+=3;//乌龟每分钟跑3m
if(t%10==0&&bunny>turtle&&rest==0)
{
rest=30;
}
if(rest!=0)
{
rest--;
}
else
{
bunny+=9;
}
t++;
}
if(bunny == turtle)
{
System.out.printf("-_- %d", bunny);
}
else if(bunny > turtle)
{
System.out.printf("^_^ %d", bunny);
}
else
{
System.out.printf("@_@ %d", turtle);
}
}
}
T=(int )(input())
bunny=0
turtle=0
rest=0
t=0
while tturtle and rest==0 :
rest =30
if rest!=0 :
rest-=1
else:
bunny+=9
t+=1
if(bunny==turtle):
print("-_- %d"%(bunny))
elif bunny>turtle :
print("^_^ %d" %(bunny))
else :
print("@_@ %d"%(turtle))
7-23 币值转换 (20分)
输入一个整数(位数不超过9位)代表一个人民币值(单位为元),请转换成财务要求的大写中文格式。如23108元,转换后变成“贰万叁仟壹百零捌”元。为了简化输出,用小写英文字母a-j顺序代表大写数字0-9,用S、B、Q、W、Y分别代表拾、百、仟、万、亿。于是23108元应被转换输出为“cWdQbBai”元。
输入格式:
输入在一行中给出一个不超过9位的非负整数。
输出格式:
在一行中输出转换后的结果。注意“零”的用法必须符合中文习惯。
输入样例1:
813227345
输出样例1:
iYbQdBcScWhQdBeSf
输入样例2:
6900
输出样例2:
gQjB
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc =new Scanner(System.in);
int n=sc.nextInt();
char num[]={'a','b','c','d','e','f','g','h','i','j'};//存数字
char unit[]={0,0,'S','B','Q','W','S','B','Q','Y'};//存单位,为将下标与位数对应,前两个单元存0
char[] result=new char[20];//存结果,最多存9个数字,8个单位,定义时略大点
int k = 0,bitnum=0,cur,pre=0;//定义数组位数索引,位数,当前位,前一位
if(n==0)
{
System.out.println(num[0]);
System.exit(0);
}
while(n!=0)
{
cur=n%10;
n/=10;
bitnum++;
if(cur!=0)
{
if(bitnum>1)//如果不为个位,存单位
{
result[k++]=unit[bitnum];
}
result[k++]=num[cur];//无论如何,存数字
}
else//如果当前位为0
{
if(bitnum==5)//若为万位
{
result[k++]=unit[bitnum];//必存单位
}
else if(pre!=0&&bitnum!=4&&bitnum!=1) //若不为万位,千位,个位,且前一位不为0
{
result[k++]=num[cur];//存当前的数字0
}
pre=cur;//注意及时保存当前位
}
}
for(int i=k-1;i>=0;i--)//倒序输出结果
{
System.out.print(result[i]);
}
}
}
/*参考见https://blog.csdn.net/qq_37729102/article/details/80637016*/
目前不会
7-24 约分最简分式 (15分)
分数可以表示为分子/分母的形式。编写一个程序,要求用户输入一个分数,然后将其约分为最简分式。最简分式是指分子和分母不具有可以约分的成分了。如6/12可以被约分为1/2。当分子大于分母时,不需要表达为整数又分数的形式,即11/8还是11/8;而当分子分母相等时,仍然表达为1/1的分数形式。
输入格式:
输入在一行中给出一个分数,分子和分母中间以斜杠/分隔,如:12/34表示34分之12。分子和分母都是正整数(不包含0,如果不清楚正整数的定义的话)。
提示:在scanf的格式字符串中加入/,让scanf来处理这个斜杠。
输出格式:
在一行中输出这个分数对应的最简分式,格式与输入的相同,即采用分子/分母的形式表示分数。如 5/6表示6分之5。
输入样例:
66/120
输出样例:
11/20
import java.util.Scanner;
public class Main {
public static int f(int a,int b)
{//求公约数
int count = 0;
for(int i=1;i<=Math.min(a, b);i++)
{
if(a%i==0&&b%i==0)
{
count = i;
}
}
return count;
}
public static void main(String[] args) {
Scanner sc =new Scanner(System.in);
String s=sc.nextLine();
String[] num = s.split("/");
int a = Integer.parseInt(num[0]);
int b = Integer.parseInt(num[1]);
int i;
System.out.println(a/f(a,b)+"/"+b/f(a,b));
}
}
import math
def f(a,b,c):
count=0
for i in range(1,c+1):
if a%i==0 and b%i==0 :
count=i
return count
a,b=map(int,input().split("/"))
c=min(a,b)
print((int)(a/f(a,b,c)),end="/")#除法自动转浮点型
print((int)(b/f(a,b,c)))
7-25 念数字 (15分)
输入一个整数,输出每个数字对应的拼音。当整数为负数时,先输出fu字。十个数字对应的拼音如下:
0: ling
1: yi
2: er
3: san
4: si
5: wu
6: liu
7: qi
8: ba
9: jiu
输入格式:
输入在一行中给出一个整数,如:1234。
提示:整数包括负数、零和正数。
输出格式:
在一行中输出这个整数对应的拼音,每个数字的拼音之间用空格分开,行末没有最后的空格。如 yi er san si。
输入样例:
-600
输出样例:
fu liu ling ling
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s = sc.next();
for(int i=0;i
a = input()
li = {0: 'ling', 1: 'yi', 2: 'er', 3: 'san', 4: 'si', 5: 'wu', 6: 'liu', 7: 'qi', 8: 'ba', 9: 'jiu'}
for i in range(len(a)):
x = a[i]
if x == '-':
print('fu', end=' ')
elif i != len(a) - 1:
print(li[int(x)], end=' ')
else:
print(li[int(x)])