关于java毕业论文题目的基础题目

ASP.NET保存网站基本信息的有关问题。_java 窗口怎么美化_ssh2中点击一个连接后改变一个值的简单方法,该如何处理__脚本百事通
稍等,加载中……
^_^请注意,有可能下面的2篇文章才是您想要的内容:
ASP.NET保存网站基本信息的有关问题。
java 窗口怎么美化
ssh2中点击一个连接后改变一个值的简单方法,该如何处理
ASP.NET保存网站基本信息的有关问题。
ASP.NET保存网站基本信息的问题。。。。现在我在用ASP.NET做一个CMS网站,因为网站信这些数据几乎在每个页面都要被调用,比如:网站名称,站长EMAIL,是否可以注册,网站公告,网站ICP证类似的这些信息。现在主要是要考虑一个性能问题,因如果数据保存在数据库,那么没个用户访问每个页面都要进行一次查询:1千个人访问一个页面数据库就要查询1千次,这样我觉得性能肯定回有影响。不知道大家是怎么处理这种问题的?麻烦高人指点下。听说可以使用读写XML和缓存可能会好点,不知道大家怎么觉得。另外还要说的是:网站基本信息这些数据字段很多,差不多有20多条数据吧。我QQ:91302谢谢。。。------解决方案--------------------如需要阅读该回复,请登录或注册CSDN!
java 窗口怎么美化
java 窗口如何美化这个是我用java SWT开发工具,窗口界面用的是shell控件,可是太不好看了怎么才能将窗口美化一下做到像第二张图片这样呢,现在QQ什么的聊天工具都是这种风格,是怎么做到的?------解决方案--------------------
可以设置LookAndFeel,通过第三方皮肤:可选使用substance、JTattoo、liquidlnf等,我当前使用的是JTattoo的皮肤,swing/awt的默认皮肤确实是有点那个...LZ可以去G一下上述皮肤,你会发现你的界面会很NICE的.如下代码是我使用JTattoo的SmartLookAndFeel主题皮肤的方法,GoodLuck!Java code
public static void main(String[] args) {
JFrame.setDefaultLookAndFeelDecorated(true);
JDialog.setDefaultLookAndFeelDecorated(true);
SmartLookAndFeel.setTheme("Green");
SmartLookAndFeel lookFeel = new SmartLookAndFeel();
javax.swing.UIManager.setLookAndFeel(lookFeel);
} catch (Exception e) {
e.printStackTrace();
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new ToolMainFrame().setVisible(true);
ssh2中点击一个连接后改变一个值的简单方法,该如何处理
ssh2中点击一个连接后改变一个值的简单方法像这样,我0代表未通过,1代表通过,我希望点击未通过后就把数据库中isPass的值改为1了,然后就变成通过了,我这个isPass类要怎么写
&s:if test="isPass==1"&
&s:a href="isPass.action?news.isPass=0"& 通过&/s:a&&/s:if&&s:else&
&s:a href="isPass.action?news.isPass=1"&未通过&/s:a&&/s:else&------解决方案--------------------
action里面有news这个对象的getter、setter方法就可以了。。取出isPass的值,先判断数据库该字段是否0什么的,如果肯定是0的就直接更改字段否则就返回
给页面一个提示什么吧。。大体就这样
如果您想提高自己的技术水平,欢迎加入本站官方1号QQ群:&&,&&2号QQ群:,在群里结识技术精英和交流技术^_^
本站联系邮箱:您现在的位置: &
应届生初级Java编程题-主要考察基本的Java编码能力及逻辑
应届生初级Java编程题-主要考察基本的Java编码能力及逻辑
一、求两个数的和与差。程序填空,不要改变与输入输出有关的语句。
输入整数a和b,计算并输出a、b的和与差。
import java.io.*;
import java.util.S
public class Test20001{
public static void main(String args[]){
int a, b, sum,
Scanner in=new Scanner(System.in);
a=in.nextInt();
b=in.nextInt();
/*------------------*/
System.out.println("The sum is "+sum);
System.out.println("The difference is "+diff);
二、求平方根。程序填空,不要改变与输入输出有关的语句。
输入1个实数x,计算并输出其平方根。
例:输入1.21输出The square root of 1.21 is 1.1
import java.io.*;
import java.util.S
public class Test20002{
public static void main(String args[]){
Scanner in=new Scanner(System.in);
x=in.nextDouble();
/*------------------*/
root=Math.sqrt(x);
System.out.println("The square root of "+x+" is "+root);
三、华氏温度转换为摄氏温度。程序填空,不要改变与输入输出有关的语句。
输入华氏温度f,计算并输出相应的摄氏温度c。c = 5/9(f-32).
例:括号内是说明:输入17.2 (华氏温度)输出The temprature is -8.223
import java.util.S
public class Test20003 {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
f=in.nextDouble();
/*------------------*/
c=5.0/9*(f-32);
System.out.println("The temprature is "+c);
四、计算旅途时间。程序填空,不要改变与输入输出有关的语句。
输入2个整数time1和time2,表示火车的出发时间和到达时间,计算并输出旅途时间。
有效的时间范围是,不需要考虑出发时间晚于到达时间的情况。
例:括号内是说明:输入712 1411(出发时间是7:12,到达时间是14:11)
输出The train journey time is 6 hrs 59 mins.
import java.util.S
public class Test20004 {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
int time1, time2, hours,
time1=in.nextInt();
time2=in.nextInt();
/*------------------*/
/*计算两个时间之间的小时数和分钟数*/
hours=time2/100-time1/100;
mins=time2%100-time1%100;
/*当计算得到的分钟数为负数时进行如下处理*/
hours=mins&0?hours:hours-1;
mins=mins&0?mins:mins+60;
System.out.println("The train journey time is "+hours+" hrs "+ mins+" mins.");
五、数字加密。程序填空,不要改变与输入输出有关的语句。
输入1个四位数,将其加密后输出。方法是将该数每一位上的数字加9,然后除以10取余,做为该位上的新数字,最后将第1位和第3位上的数字互换,第2位和第4位上的数字互换,组成加密后的新数。
例:括号内是说明:输入1257输出The encrypted number is 4601(每一位上的数字加9除以10取余后,得0146,交换后得到4601)
import java.util.S
public class Test20005 {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
int number, digit1, digit2, digit3, digit4,
number=in.nextInt();
/*------------------*/
/*先分离出各位上的数字*/
digit1=number/1000;(是这样来取得位数的)
digit2=number/100%10;
//或 digit2=(number-digit1*;
digit3=number/10%10;
//或 digit3=(number-digit1*1000-digit2*100)/10;
digit4=number%10;
/*再调整各位上的数字*/
digit1=(digit1+9)%10;
digit2=(digit2+9)%10;
digit3=(digit3+9)%10;
digit4=(digit4+9)%10;
/*最后组成加密后的新数*/
newnum=digit3*1000+digit4*100+digit1*10+digit2;(注意这里是这样来实现交换的)
System.out.println("The encrypted number is "+newnum);
六、大写字母转换成小写字母。程序填空,不要改变与输入输出有关的语句。
输入一个大写英文字母,输出相应的小写字母。
例:输入G输出g
import java.io.*;
public class Test20006 {
public static void main(String[] args) throws IOException {
ch=(char)System.in.read();
/*------------------*/
ch=(char)(ch+32);
System.out.println(ch);
七、计算三门课程的平均成绩。程序填空,不要改变与输入输出有关的语句。
已知某位学生的数学、英语和计算机课程的成绩分别是87分、72分和93分,求该生3门课程的平均分。
本题无输入。输出示例:math = 87, eng = 72, comp = 93 ,average = 84
public class test20007 {
public static void main(String[] args)
int math, eng, comp,
/**********/
average=(math+eng+comp)/3;
System.out.println("math = "+math+", eng = "+eng+", comp = "+comp);
System.out.println("average = "+ average);
八、计算存款利息。程序填空,不要改变与输入输出有关的语句。
输入存款金额 money、存期 year 和年利率 rate,根据下列公式计算存款到期时的利息 interest(税前),输出时保留2位小数。
interest = money(1+rate)^year - money
输入输出示例:括号内为说明
输入.025 (money = 1000, year = 3, rate = 0.025)
输出interest = 76.89
import java.util.S
public class test20008 {
public static void main(String[] args)
int money,
double interest,
Scanner in=new Scanner(System.in);
/*使用in.nextDouble()和in.nextInt()输入double和int型数据*/
/**********/
money=in.nextInt();
year=in.nextInt();
rate=in.nextDouble();
interest=money*Math.pow((1+rate), year )-
表示的是1+rate的year方幂
System.out.println("interest = "+ (int)(interest*100+0.5)/100.0);
//保留两位小数
分支结构程序的设计
一、显示两级成绩,程序填空,不要改变与输入输出有关的语句。
输入一个正整数repeat (0&repeat&10),做repeat次下列运算:
输入一个学生的数学成绩,如果它低于60,输出“Fail”,否则,输出“Pass”。
输出使用System.out.println("Pass");及System.out.println("Fail");
例:括号内是说明:输入2
(repeat=2) 60
59输出Pass
import java.util.S
public class Test30001{
public static void main(String[] args){
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1; ri&= ri++){
mark=in.nextInt();
/*------------------*/
if (mark&60)
System.out.println("Fail");
System.out.println("Pass");
二、找最小值,程序填空,不要改变与输入输出有关的语句。
输入一个正整数repeat (0&repeat&10),做repeat次下列运算:
输入四个整数,输出其中的最小值。
例:括号内是说明
(repeat=3)
10 40 30 20
-1 -3 -4 -5
min is 1 (12 6 1 90 中的最小值是1)
min is 10 (10 40 30 20 中的最小值是10)
min is -5 (-1 -3 -4 -5中的最小值是-5)
import java.util.S
public class Test30002 {
public static void main(String[] args){
int a, b, c, d,
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1; ri&= ri++){
a=in.nextInt();
b=in.nextInt();
c=in.nextInt();
d=in.nextInt();
/*------------------*/
if(min&b) min=b;
if(min&c) min=c;
if(min&d) min=d;
System.out.println("min is "+min);
三、求三角形的面积和周长,程序填空,不要改变与输入输出有关的语句。
输入一个正整数repeat (0&repeat&10),做repeat次下列运算:
输入三角形的三条边a, b, c,如果能构成一个三角形,输出面积area和周长perimeter;否则,输出“These sides do not correspond to a valid triangle”。
在一个三角形中,任意两边之和大于第三边。
三角形的面积计算公式:
aere*area = s(s-a)(s-b)(s-c)
其中:s = (a+b+c)/2
System.out.println("area="+(int)(area*100+0.5)/100.+";perimeter="+(int)(perimeter*100+0.5)/100.);
System.out.println("These sides do not correspond to a valid triangle");
例:括号内是说明
(repeat=2)
area=7.15;perimeter=13.0
These sides do not correspond to a valid triangle
import java.util.S
public class Test30003 {
public static void main(String[] args){
float a, b, c, area, perimeter,
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1; ri&= ri++){
a=in.nextFloat();
b=in.nextFloat();
c=in.nextFloat();
/*------------------*/
if (a+b&c&&a+c&b&&b+c&a)
{ s=(a+b+c)/2;
area=(float)Math.sqrt(s*(s-a)*(s-b)*(s-c));
perimeter=a+b+c;
System.out.println("area="+(int)(area*100+0.5)/100.+";perimeter="+(int)(perimeter*100+0.5)/100.);
System.out.println("These sides do not correspond to a valid triangle");
四、判断数的符号,程序填空,不要改变与输入输出有关的语句。
输入整数x,若x大于0,y=1;若x等于0,y=0;否则,y=-1,最后输出y。
import java.util.S
public class Test30004{
public static void main(String[] args){
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1; ri&= ri++){
x=in.nextInt();
/*------------------*/
if (x&0)y=1;
else if(x==0)y=0;
else y=-1;
System.out.println(y);
(这样是错的。。这是为什么?)
五、计算个人所得税,程序填空,不要改变与输入输出有关的语句。
输入一个正整数repeat (0&repeat&10),做repeat次下列运算:
输入一个职工的月薪salary,输出应交的个人所得税tax。
tax = rate * (salary-850)
当 salary &= 850 时,rate = 0%;
当 850 & salary &= 1350 时,rate = 5%;
当 1350 & salary &= 2850 时,rate = 10%;
当 2850 & salary &= 5850 时,rate = 15%;
当 5850 & salary 时,rate = 20%;
例:括号内是说明
(repeat=5)
tax=6249.75
import java.util.S
public class Test30005 {
public static void main(String[] args){
float rate, salary,
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1; ri&= ri++){
salary=in.nextFloat();
/*------------------*/
if(salary&=850)
else if(salary&=1350)
rate=0.05f;
else if(salary&=2850)
rate=0.1f;
else if(salary&=5850)
rate=0.15f;
rate=0.2f;
tax=rate*(salary-850);
System.out.println("tax="+(int)(tax*100+0.5)/100.0);
六、显示水果的价格,程序填空,不要改变与输入输出有关的语句。
输入一个正整数repeat (0&repeat&10),做repeat次下列运算:
以下4种水果的单价分别是3.00元/公斤,2.50元/公斤,4.10元/公斤,10.20元/公斤。
[1] apples
[3] oranges
[4] grapes
输入水果的编号,输出该水果的单价。如果输入不正确的编号,显示单价为0。
例:括号内是说明
(repeat=1)
(oranges的编号)
[1] apples
[3] oranges
[4] grapes
import java.util.S
public class Test30006{
public static void main(String[] args){
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1; ri&= ri++){
System.out.println("[1] apples");
System.out.println("[2] pears");
System.out.println("[3] oranges");
System.out.println("[4] grapes");
choice=in.nextInt();
/*------------------*/
switch(choice){
case 1:price=3.0f;
case 2:price=2.5f;
case 3:price=4.1f;
case 4:price=10.2f;
default: price=0; }
System.out.println("price="+price);
七、字母转换,程序填空,不要改变与输入输出有关的语句。
输入一批以问号“?”结束的字符,对“?”以前的每一个字符,如果它是大写字母,输出相应的小写字母;如果它是小写字母,输出相应的大写字母;否则,原样输出。
import java.io.*;
public class Test30007 {
public static void main(String[] args)throws IOException{
ch=(char)System.in.read();
while(ch!='?'){
/*------------------*/
if('A'&=ch&&ch&='Z')
else if('a'&=ch&&ch&='z') //此处必须使用if结构的嵌套
System.out.print(ch);
ch=(char)System.in.read();
循环结构程序的设计(一)
1. 求1+1/2+1/3+……+1/n
程序填空,不要改变与输入输出有关的语句。
输入一个正整数repeat (0&repeat&10),做repeat次下列运算:
读入1 个正整数 n(n&=100),计算并输出1+1/2+1/3+……+1/n 。
sum=sum+1/i;
} while(n&=100);
System.out.println((int)(sum*)/1000.);
import java.util.S
public class Test40001 {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1; ri&= ri++){
n=in.nextInt();
/*--------------------*/
//以下if语句用于检查输入数据的正确性,可以不写
if(n&=0||n&100){ //输入0、负数或大于100的数时结束程序的运行
System.out.println("输入数据出错,程序退出");
System.exit(0);
sum=0; //注意这条赋初值语句的位置
for(i=1;i&=n;i++){
sum+=1.0f/i;
System.out.println((int)(sum*)/1000.);
程序填空,不要改变与输入输出有关的语句。
输入一个正整数repeat (0&repeat&10),做repeat次下列运算:
读入1 个正整数 n(n&=50),计算并输出n! 。
import java.util.S
public class Test40002 {
public static void main(String[] args) {
/// 这里的double在编写中是用不到的吧~~
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1; ri&= ri++){
n=in.nextInt();
/*--------------------*/
for(i=1;i&=n;i++)
System.out.println(fact);
3. 求x的n次幂
程序填空,不要改变与输入输出有关的语句。
输入一个正整数repeat (0&repeat&10),做repeat次下列运算:
读入1 个正实数x和1个正整数 n(n&=50),计算并输出x的n次幂。
import java.util.S
public class Test40003 {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1; ri&= ri++){
x=in.nextDouble();
n=in.nextInt();
/*--------------------*/
for(i=1;i&=n;i++)
System.out.println(mypow);
//这个,怎么感觉有些不对??
4. 求1+1/3+1/5+1/7+……
程序填空,不要改变与输入输出有关的语句。
输入一个正整数repeat (0&repeat&10),做repeat次下列运算:
读入1 个正整数 n(n&=100),计算并输出1+1/3+1/5+1/7+……的前n项和。
import java.util.S
public class Test40005 {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1; ri&= ri++){
n=in.nextInt();
/*--------------------*/
for(i=1;i&=n;i++)
//那这里i是什么用的么??循环N次!!
sum+=1.0f/
System.out.println(sum);
temp=2*n-1;
for(i=1;i&=i+=2)
sum+=1.0f/i;
5. 摄氏温度和华氏温度转换表。程序填空,不要改变与输入输出有关的语句。
输入一个正整数repeat (0&repeat&10),做repeat次下列运算:
输入2个整数begin和end,分别代表摄氏温度的起止值,输出该范围内摄氏温度C和华氏温度F的转换表。
F = 32 + C * 9 / 5
输出语句:System.out.println(c+"\t"+f);
import java.util.S
public class Test40007 {
public static void main(String[] args){
int begin, c, end,
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1; ri&= ri++){
begin=in.nextInt();
end=in.nextInt();
System.out.println("Celsius Fahrenheit");//这一条在最后他是自会输出的!!
/*--------------------*/
for(c=c&=c++) {
//这样显然也是可以的~~
f=32+c*9/5;
System.out.println(c+"\t"+f); //就算是空格也不要忘了加引号!!
6. 求奇数和。程序填空,不要改变与输入输出有关的语句。
输入一个正整数repeat (0&repeat&10),做repeat次下列运算:
读入一批正整数(以零或负数为结束标志),求其中的奇数和。
import java.util.S
public class Test40008 {
public static void main(String[] args){
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1; ri&= ri++){
x=in.nextInt();
/*--------------------*/
while(x&0){
if(x%2!=0)sum+=x;
x=in.nextInt();
为什么把他放前面顺序就不一样了呢?
System.out.println(sum);
if(x%2!=0)
while之间的区别要分清楚了!!
7. 求最大值。程序填空,不要改变与输入输出有关的语句。
输入一个正整数repeat (0&repeat&10),做repeat次下列运算:
输入一个正整数n, 再输入n个整数,输出最大值。
import java.util.S
public class Test40009 {
public static void main(String[] args){
int i , max, n,
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1; ri&= ri++){
n=in.nextInt();
/*--------------------*/
max=in.nextInt();
for(i=1;i&=n-1;i++){
x=in.nextInt();
if(x&max)max=x;
System.out.println(max);
8. 求整数的位数以及各位数之和。程序填空,不要改变与输入输出有关的语句。
输入一个正整数repeat (0&repeat&10),做repeat次下列运算:
输入一个整数,输出它的位数以及各位数之和。
import java.util.S
public class Test40010 {
public static void main(String[] args){
int number, sum,n;
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1; ri&= ri++){
n=in.nextInt();
/*--------------------*/
n=Math.abs(n);
number=sum=0;
sum=sum+(n%10);
//这样一直除的话到后来sum一直是加0.但number不是还是一直在加上去么?
}while(n&0);
//这个不是很显然的么?为什么还要写?
/* 如果使用while语句,输入0时输出 “number=0, sum=0”,
其中number的值不正确,应是1 */
System.out.println("number="+number+", sum="+sum);
import java.util.*;
public class grade {
public static void main(String []args){
Scanner in =new Scanner(System.in);
int gcd, lcm, m, n,r;
int repeat,
repeat=in.nextInt();
for(ri = 1; ri &= ri++){
m=in.nextInt();
n=in.nextInt();
if(m &= 0 || n &= 0)
System.out.println("m &= 0 or n &= 0");
else{lcm=m*n;
if(m&n){r=m;m=n;n=r;
}while(r!=0);
lcm=lcm/m;
System.out.println("the least common multiple:"+lcm+", the greatest common divisor:"+gcd);
循环结构程序的设计(二)
9. 求1-1/2+1/3-1/4+……
程序填空,不要改变与输入输出有关的语句。
输入一个正整数repeat (0&repeat&10),做repeat次下列运算:
读入1 个正整数 n(n&=100),计算并输出1-1/2+1/3-1/4+……的前n项和(四舍五入保留小数4位)。
import java.util.S
public class Test40004 {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1; ri&= ri++){
n=in.nextInt();
/*--------------------*/
for(i=1;i&=n;i++) {
sum+=flag*1.0f/i;
System.out.println((long)(sum*)/10000.);
10. 求1-1/3+1/5-1/7+……
程序填空,不要改变与输入输出有关的语句。
输入一个正整数repeat (0&repeat&10),做repeat次下列运算:
读入1 个正实数eps,计算并输出1-1/3+1/5-1/7+……,直到最后一项的绝对值小于eps为止(要求每一项的绝对值均大于等于eps,并以float类型输出数据)。
import java.util.S
public class Test40006 {
public static void main(String[] args) {
double eps, item,
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1; ri&= ri++){
eps=in.nextDouble();
/*--------------------*/
temp=flag=1;
while(Math.abs(item)&=eps){
item=flag*1.0/
System.out.println((int)(sum*)/10000.);
11. 求2/1+3/2+5/3+8/5+...
程序填空,不要改变与输入输出有关的语句。
输入一个正整数repeat (0&repeat&10),做repeat次下列运算:
输入一个正整数n,输出 2/1+3/2+5/3+8/5 +...的前n项之和,保留4位小数(不足4位时,不必用0填满4位)。(该序列从第2项起,每一项的分子是前一项分子与分母的和,分母是前一项的分子)
import java.util.S
public class Test40011 {
public static void main(String[] args) {
float a,b,s,t;
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1; ri&= ri++){
n=in.nextInt();
/*--------------------*/
//这样的题目像兔子数列一样,开始时都定好一些值就好了。
b=2; //分子
for(i=1;i&=n;i++) {
//分母是前一项的分子
b=t+b; //分子是前一项分子与分母的和
//为什么直接这样做他就错了呢?
System.out.println((int)(s*1000.);
12. 求a+aa+aaa+aa…a
程序填空,不要改变与输入输出有关的语句。
输入一个正整数repeat (0&repeat&10),做repeat次下列运算:
输入2个正整数a和n, 求a+aa+aaa+aa…a(n个a)之和。
import java.util.S
public class Test40012{
public static void main(String args[]){
int i, n, a, sn,
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1; ri&= ri++){
a=in.nextInt();
n=in.nextInt();
/*--------------------*/
for(i=1;i&=n;i++){
tn=tn*10+a;
//迭代公式
for(i=1;i&=n;i++){
tn=tn*10+a;
System.out.println(sn);
13. 判断素数。程序填空,不要改变与输入输出有关的语句。
输入一个正整数repeat (0&repeat&10),做repeat次下列运算:
输入一个正整数m,如果它是素数,输出"YES",否则,输出"NO"(素数就是只能被1和自身整除的正整数,1不是素数,2是素数)。
import java.util.S
public class Test40013{
public static void main(String args[]){
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1; ri&= ri++){
m=in.nextInt();
/*--------------------*/
if(m==1)flag=
///true和false输进去是会变红的!!
for(i=2;i&=m-1;i++)
if(m%i==0){
//有些时候确实需要你确认一下是不是大括号方面出错了!!
} flag=if(m==1)flag=
for(i=2;i&=m-1;i++){
if(m%i==0)flag=
if(flag) System.out.println("YES");
else System.out.println("NO");
14. 求1 + 1/2! +....+ 1/n!
程序填空,不要改变与输入输出有关的语句。
输入一个正整数repeat (0&repeat&10),做repeat次下列运算:
输入1 个正整数n,计算 s 的前n项的和。
s = 1 + 1/2! +....+ 1/n!
import java.util.S
public class Test40021{
public static void main(String args[]){
float s,t;
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1; ri&= ri++){
n=in.nextInt();
/*--------------------*/
for(i=1;i&=n;i++){
//如果这两条语句交换位置,则i=1要改成i=2
System.out.println((int)(s*)/10000.);
15. 求各位数字的立方和等于它本身的数。程序填空,不要改变与输入输出有关的语句。
输入一个正整数repeat (0&repeat&10),做repeat次下列运算:
输入2 个正整数m和n(1&=m,n&=1000),输出m 和n之间所有满足各位数字的立方和等于它本身的数。
输出语句:System.out.println(i);
import java.util.S
public class Test40022{
public static void main(String args[]){
int i, digit, m, n, number,
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1; ri&= ri++){
m=in.nextInt();
n=in.nextInt();
/*------------------*/
for(i=m;i&=n;i++){
//不能从值上来看i所代表的循环次数啊!!!
//为什么总有number大于0这个显然的东西?
while(number&0){
digit=number%10;
number=number/10;
sum+=digit*digit*
if(i==sum)
System.out.println(i);
Method的使用
16. 统计素数并求和。程序填空,不要改变与输入输出有关的语句。
输入一个正整数repeat (0&repeat&10),做repeat次下列运算:
输入2 个正整数m和n(1&=m,n&=500),统计并输出m 和n之间的素数的个数以及这些素数的和。
例:括号内是说明
(repeat=2)
(m=1, n=10)
(m=20, n=35)
(m=14, n=16)
count=4, sum=17
(1到10之间有4个素数:2,3,5,7)
count=3, sum=83
(20到35之间有3个素数:23, 29, 31)
count=0, sum=0
(14到16之间没有素数)
import java.util.S
public class Test40023 {
public static void main(String args[]){
int count, digit, i, j, k , m, n,
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1;ri&=ri++) {
m=in.nextInt();
n=in.nextInt();
/*---------------------*/
count=sum=0;
for(k=m;k&=n;k++){
for(i=2;i&=k-1;i++)
if(k%i==0)
System.out.println("count="+count+", sum="+sum);
import java.util.S
public class Test40023_2 {
public static void main(String args[]){
int count, i, j, k , m, n,
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1;ri&=ri++) {
m=in.nextInt();
n=in.nextInt();
/*---------------------*/
count=sum=0;
for(k=m;k&=n;k++) {
if(k==1)flag=
//1不是素数
else flag=
for(i=2;i&=k-1;i++) {
if(k%i==0){
System.out.println("count="+count+", sum="+sum); }
import java.util.S
public class a{
public static void main(String args[]){
int count, i, j, k, m, n,
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1; ri&= ri++){
m=in.nextInt();
n=in.nextInt();
count=sum=0;
for(i=m;i&=n;i++)
if(isprime(i)) {count++;
System.out.println("count="+count+", sum="+sum);
public static boolean isprime(int n)
for(i=2;i&n;i++)
if(n%i==0)
顺序结构程序的设计
17. 求1 + 1/2! +....+ 1/n!
输入一个正整数repeat (0&repeat&10),做repeat次下列运算:
输入1 个正整数n,计算 s 的前n项的和(保留 4 位小数)。
s = 1 + 1/2! +....+ 1/n!
要求定义并调用函数fact(n)计算n的阶乘。
import java.util.S
public class Test50001 {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1;ri&=ri++){
n=in.nextInt();
/*---------------*/
for(i=1;i&=n;i++)
s+=1.0/fact(i);
System.out.println((long)(s*)/10000.);
/*---------------*/
static double fact(int n) {
double f=1;
//把两个变量先定义一下!!
for(i=1;i&=n;i++)
/* 方法fact()也可以用以下递归算法设计
static double fact(int n) {
return n*fact(n-1);
18. 求a+aa+aaa+aa…a
输入一个正整数repeat (0&repeat&10),做repeat次下列运算:
输入2个正整数a和n, 求a+aa+aaa+aa…a(n个a)之和。
要求定义并调用函数fn(a,n),它的功能是返回aa…a(n个a)。例如,fn(3,2)的返回值是33。
import java.util.S
public class Test50002{
public static void main(String args[]){
int i, n,a;
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1; ri&= ri++){
a=in.nextInt();
n=in.nextInt();
/*------------*/
for(i=1;i&=n;i++)
sn+=fn(a,i);
System.out.println(sn);
/*------------*/
static int fn(int a,int n){
for(int i=1;i&=n;i++)
f(a,n)=a+10*f(a,n-1);
错的原因是?
/* 方法fn()也可以用以下递归算法设计
static int fn(int a,int n){
return a+10*fn(a,n-1);
19. 统计一个整数中数字的个数
输入一个正整数repeat (0&repeat&10),做repeat次下列运算:
读入1 个整数,统计并输出该数中2的个数。
要求定义并调用函数countdigit(number,digit),它的功能是统计整数number中数字digit的个数。例如,countdigit(10090,0)的返回值是3。
import java.util.S
public class Test50003{
public static void main(String args[]){
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1; ri&= ri++){
n=in.nextInt();
/*---------*/
n=Math.abs(n);
count = countdigit(n,2);
System.out.println("count="+count);
/*---------*/
static int countdigit(long number,int digit){
int a,c=0;
while(number&0){
a=(int)(number%10);
if(a==digit)c++
//当a不等于digit的情况下?是不是默认就进行下一个的循环了?
number=number/10;
20. 判断素数
输入一个正整数repeat (0&repeat&10),做repeat次下列运算:
输入一个正整数n,如果它是素数,输出"YES",否则,输出"NO"(素数就是只能被1和自身整除的正整数,1不是素数,2是素数)。
要求定义并调用函数prime(m)判断m是否为素数。
import java.util.S
public class Test50004{
public static void main(String args[]){
int ri, repeat,n;
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1; ri&= ri++){
n=in.nextInt();
/*---------*/
flag=prime(n);
if(flag) System.out.println("YES");
System.out.println("NO");
static boolean prime(int m){
boolean flag=
if(m==1)flag=
for(int i=2;i&=m-1;i++)
if(m%i==0)
21. 统计素数并求和
输入一个正整数repeat (0&repeat&10),做repeat次下列运算:
输入2 个正整数m和n(1&=m,n&=500),统计并输出m 和n之间的素数的个数以及这些素数的和(素数就是只能被1和自身整除的正整数,1不是素数,2是素数)。
要求定义并调用函数prime(m)判断m是否为素数。
import java.util.S
public class Test50005{
public static void main(String args[]){
int count, i, m, n,
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1; ri&= ri++){
m=in.nextInt();
n=in.nextInt();
/*---------*/
for(i=m;i&=n;i++)
if(prime(i)){count++; sum+=i;}
System.out.println("count="+count+", sum="+sum);
/*---------*/
static boolean prime(int m){
boolean flag=
if(m==1)flag=
for(int i=2;i&=m-1;i++)
if(m%i==0)
22. 输出 Fibonacci 序列
输入一个正整数repeat (0&repeat&10),做repeat次下列运算:
输入2 个正整数m和n(1&=m,n&=10000),输出m 和n之间所有的Fibonacci数。
Fibonacci 序列(第1项起):1
要求定义并调用函数fib(n),它的功能是返回第n项Fibonacci数。例如,fib(7)的返回值是13。
输出语句:System.out.print(f+" ");
import java.util.S
public class Test50006{
public static void main(String args[]){
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1; ri&= ri++){
m=in.nextInt();
n=in.nextInt();
/*---------*/
while(f&=n){
if(f&=m) System.out.print(f+" ");
//是要输出的数在mn之间,而不是要循环这么多次啊!
System.out.println();
/*---------*/
static long fib(int n){
long a=1,b=1,f=1;
for(i=3;i&=n;i++){ //从第3项开始计算
/* 方法fib(n)用递归实现
static long fib(int n){
if(n==1||n==2) return 1;
else return fib(n-1)+fib(n-2);
23. 求完数
输入一个正整数repeat (0&repeat&10),做repeat次下列运算:
输入2 个正整数m和n(1&=m,n&=1000),输出m 到n之间的所有完数(完数就是因子和与它本身相等的数)。
要求定义并调用函数factorsum(number),它的功能是返回number的因子和。例如,factorsum(12)的返回值是16(1+2+3+4+6)。
输出语句:System.out.print(i+" ");
import java.util.S
public class Test50007{
public static void main(String args[]){
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1;ri&=ri++){
m=in.nextInt();
n=in.nextInt();
/*---------*/
for(i=m;i&=n;i++)
if(i==factorsum(i))
System.out.print(i+" ");
System.out.println();
static int factorsum(int number){
int sum=0;
if(number==1)sum=1;
for(int i=1;i&=number-1;i++)
if(number%i==0)sum+=i;
static int factorsum(int number){
int s=0,a=0;
while(number&0){
a=number%10;
number=number/10;
哎呀!!!你这样定义的不是因子和啊!!
24. }求各位数字的立方和等于它本身的数
输入一个正整数repeat (0&repeat&10),做repeat次下列运算:
输入2 个正整数m和n(1&=m,n&=1000),输出m 到n之间的所有满足各位数字的立方和等于它本身的数。
要求定义并调用函数is(number)判断number的各位数字之立方和是否等于它本身。
输出语句:System.out.print(i+" ");
import java.util.S
public class Test50008{
public static void main(String args[]){
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1;ri&=ri++){
m=in.nextInt();
n=in.nextInt();
/*---------*/
for(i=m;i&=n;i++)
System.out.print(i+" ");
System.out.println();
/*---------*/
static boolean is(int number) {
int sum=0,n,
while(n&0){
digit=n%10;
sum+=digit*digit*
if(number==sum)
Method的使用(二)
25. 将一个整数逆序输出
输入一个正整数repeat (0&repeat&10),做repeat次下列运算:
输入一个整数,将它逆序输出。
要求定义并调用函数reverse(number),它的功能是返回number的逆序数。例如reverse(12345)的返回值是54321。
import java.util.S
public class Test50009{
public static void main(String args[]){
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1;ri&=ri++){
n=in.nextInt();
/*---------*/
res=reverse(n);
System.out.println(res);
/*---------*/
static long reverse(long number){
int flag=1;
if(number&0){
while(number&0){
digit=number%10; //分离出个位数字
//形成当前的逆序数
number=number/10;
return flag*a;
26. 十进制转换二进制
输入一个正整数 repeat (0&repeat&10),做 repeat 次下列运算:
输入1 个正整数n,将其转换为二进制后输出。
要求定义并调用函数 dectobin(n),它的功能是输出 n 的二进制。例如,调用dectobin(10),输出1010。
输出语句:System.out.print(t);
//t为某位二进制数
import java.util.S
public class Test50010{
public static void main(String args[]){
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1;ri&=ri++){
n=in.nextInt();
/*---------*/
dectobin(n);
System.out.println();
/*---------*/
static void dectobin(int n){
//保存某位二进制
String s=""; //保存二进制数
//获得除2后的余数
//获得除2后的商
}while(n&0);
System.out.print(s); //本方法无返回值,需要在方法体中输出结果
一维数组的使用
27. 求平均值
输入一个正整数repeat (0&repeat&10),做repeat次下列运算:
输入一个正整数n (1&n≤10),再输入n个整数,输出平均值。
import java.util.S
public class Test60001{
public static void main(String []args){
int i, n, sum,a[];
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1; ri&= ri++){
n=in.nextInt();
a=new int[n];
for(i=0; i&n; i++)
a[i]=in.nextInt();
/*---------*/
for(i=0; i&n; i++) //这个循环实现累加
sum+=a[i];
aver=((float)sum)/n; //求平均值,注意要先把sum转换成float,再计算
System.out.println("aver="+aver);
28. 求最大值及其下标
输入一个正整数repeat (0&repeat&10),做repeat次下列运算:
输入一个正整数n (1&n≤10),再输入n个整数,输出最大值极其下标(设最大值惟一,下标从0开始)。
import java.util.S
public class Test60002{
public static void main(String []args){
int i, index, n, a[];
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1; ri&= ri++){
n=in.nextInt();
a=new int[n] ;
for(i=0; i&n; i++)
a[i]=in.nextInt();
/*---------*/
index=0; //用index保存最大数的下标,开始假设a[0]是最大数
for(i=1; i&n; i++)
if(a[index]&a[i]) index=i;
//a[i]与当前最大数a[index]比较,若a[i]更大,index变为i
System.out.println("max="+a[index]+",index="+index);
29. 逆序输出
输入一个正整数repeat (0&repeat&10),做repeat次下列运算:
输入一个正整数n (1&n≤10),再输入n个整数,按逆序输出这些数。
import java.util.S
public class Test60003{
public static void main(String []args){
int i, n, temp,a[];
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1; ri&= ri++){
n=in.nextInt();
a=new int[n];
for(i=0; i&n; i++)
a[i]=in.nextInt();
/*---------*/
for(i=0; i&n/2; i++){ //a[i]与a[n+1-i]交换,注意交换次数
temp=a[i];
a[i]=a[n+1-i];
for(i=0; i&n; i++)
System.out.print(a[i]+" ");
System.out.println();
30. 交换最小值和最大值
输入一个正整数repeat (0&repeat&10),做repeat次下列运算:
输入一个正整数n,再输入n个整数,将最小值与第一个数交换,最大值与最后一个数交换,然后输出交换后的n个数。
import java.util.S
public class Test60004{
public static void main(String []args){
int i, index, n, t,a[];
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1; ri&= ri++){
n=in.nextInt();
a=new int[n];
for(i=0; i&n; i++)
a[i]=in.nextInt();
/*---------*/
//找最大数
for(i=0; i&n; i++)
if(a[index]&a[i]) index=i;
t=a[index]; a[index]=a[n-1];a[n-1]=t;
//找最小数
for(i=0; i&n; i++)
if(a[index]&a[i]) index=i;
t=a[index]; a[index]=a[0];a[0]=t;
for(i=0; i&n; i++) //输出
System.out.print(a[i]+" ");
System.out.println();
二维数组的使用
输入一个正整数repeat (0&repeat&10),做repeat次下列运算:
输入一个正整数n,再输入n个整数,将它们从大到小排序后输出。
import java.util.S
public class Test60005{
public static void main(String []args){
int i, index, k, n, temp,a[];
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1; ri&= ri++){
n=in.nextInt();
a=new int[n];
for(i=0; i&n; i++)
a[i]=in.nextInt();
/*---------*/
for(i=0;i&n-1;i++) { //选择法递减排序
for(k=i+1;k&n;k++)
if(a[k]&a[index]) index=k;
temp=a[i];
a[i]=a[index];
for(i=0; i&n; i++)
System.out.print(a[i]+" ");
System.out.println();
32. 矩阵运算
输入一个正整数repeat (0&repeat&10),做repeat次下列运算:
读入 1 个正整数 n(1≤n≤6), 再读入 n 阶方阵 a , 计算该矩阵除副对角线、最后一列和最后一行以外的所有元素之和.(副对角线为从矩阵的右上角至左下角的连线)
import java.util.S
public class Test60011{
public static void main(String []args){
int a[][],i,j,n,
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1; ri&= ri++){
n=in.nextInt();
a=new int[n][n];
for(i=0; i&n; i++)
for(j=0;j&n;j++)
a[i][j]=in.nextInt();
/*---------*/
for(i=0; i&n-1; i++)
//i&n-1 排除最后一行
for(j=0;j&n-1;j++){ //j&n-1 排除最后一列
if((i+j)!=(n-1)) sum+=a[i][j]; //非副对角线元素才加入
System.out.println("sum="+sum);
33. 加法口诀表
输入一个正整数repeat (0&repeat&10),做repeat次下列运算:
输入 1 个正整数 n(1≤n≤10), 输出一张 20 以内的加法口诀表. 加数与被加数都不大于 n, 分列第一行和第一列.(将加数、被加数、和放入一个二维数组中, 再输出该数组)
import java.util.S
public class Test60012{
public static void main(String []args){
int i,j,n,a[][]=new int[10][10];
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1; ri&= ri++){
n=in.nextInt();
/*---------*/
for(i=1;i&=n;i++) { //给第1行和第1列所有元素赋值,a[0][0]不用赋值
a[0][i]=i;
//第1行为被加数,从第2列开始赋值1,2,...,n
a[i][0]=i;
//第1列为加数,从第2行元素开始赋值1,2,...,n
for(i=1;i&=n;i++) //计算和,从第2行第2列开始
for(j=1;j&=n;j++){
a[i][j]=i+j;
//或 a[i][j]=a[0][j]+a[i][0]; //所在列第1行元素+所在行第1列元素
for( i=0; i&=n; i++ ){
for( j=0; j&=n; j++ )
if(i==0&&j==0) System.out.print( "+
");//在第1行第1列上输出"+
else if(i==0||j&=i) System.out.print(a[i][j]+"
//输出下三角阵和第1行元素
System.out.println();
34. 判断上三角矩阵
输入一个正整数repeat (0&repeat&10),做repeat次下列运算:
输入1 个正整数 n (1≤n≤6)和n 阶方阵a中的元素,如果a是上三角矩阵, 输出"YES", 否则, 输出"NO"。(上三角矩阵,即主对角线以下的元素都为0, 主对角线为从矩阵的左上角至右下角的连线)
import java.util.S
public class Test60013{
public static void main(String []args){
int a[][],i,j,n;
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1; ri&= ri++){
n=in.nextInt();
a=new int[n][n]
for (i=0;i&n;i++)
for (j=0;j&n;j++)
a[i][j]=in.nextInt();
/*---------*/
for(i=1;i&n;i++)
//上三角矩阵中值为0的元素位置:行1~n-1,列0~i-1
for(j=0;j&i;j++)
if(a[i][j]!=0) flag=//若有一个元素非0,则不是上三角矩阵
System.out.println("YES");
System.out.println("NO");
35. 求矩阵每行元素之和
输入一个正整数repeat (0&repeat&10),做repeat次下列运算:
输入2 个正整数 m 和 n (1≤m, n),然后输入该m 行 n 列矩阵a中的元素,分别求出
各行元素之和, 并存入一维数组row中, 再输出row.
import java.util.S
public class Test60014{
public static void main(String []args){
int i,j,m,n,a[][],row[];
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1; ri&= ri++){
m=in.nextInt();
n=in.nextInt();
a=new int[m][n];
row=new int[m];
//这里定义的时候row也是定义在行那里的!!!
for (i=0;i&m;i++)
for (j=0;j&n;j++)
a[i][j]=in.nextInt();
/*---------*/
for (i=0;i&m;i++)
for (j=0;j&n;j++)
//表示的是那一个矩阵
row[i]+=a[i][j]; //计算数组a的第i+1行元素之和, 存入数组row的第i+1个元素
for(i=0;i&m;i++)
System.out.println("sum of row "+i+" is "+row[i]);
字符串处理
36. 求字符串长度
连续输入一批以 # 结束的多串字符(不包含空格)。。
统计并输出每串字符的长度。
输出使用:System.out.println(len);
import java.util.S
public class Test60021{
public static void main(String []args){
int len,count,i,k; //变量count,k未用到
Scanner in=new Scanner(System.in);
//话说这里就是一个数组了么? str=in.next();
//对5月7日前建立的练习用in.nextLine();
/*---------*/
//保存当前字符串的长度
count=0; //保存字符串个数,可以不写
for(i=0;i&str.length();i++) {
ch=str.charAt(i); //从字符串中逐个取出字符
if(ch=='#'){ //当前字符串结束了
System.out.println(len);//输出长度
count++; //字符串增加1个,可以不写
//新的字符串要开始了
else len++;
//当前字符串长度加1
//以上程序段可以换成以下的程序段:
String[] s=str.split("#");
//字符串数组
for(i=0;i&s.i++)
System.out.println(s[i].length());
输出的是第i串字符的长度
37. 统计大写辅音字母
输入一个正整数n (0&n&10),做n次下列运算:
输入一行字符串,统计并输出字符串中大写辅音字母的个数
(大写辅音字母:除“A”,“E”,“I”,“O”,“U”以外的大写字母)。
import java.util.S
public class Test60022{
public static void main(String []args){
int count,i,j,n;
Scanner in=new Scanner(System.in);
n=(in.nextLine()).charAt(0)-'0'; //读取输入的第1行的第1个字符,转换成数字
for(i=1;i&=n;i++){
str=in.nextLine(); //读取输入的下一行
/*---------*/
//保存大写辅音字母的个数
for(j=0;j&str.length();j++){
ch=str.charAt(j); //从字符串中逐个取出字符
if((ch&='B'&&ch&='Z')&&(ch!='E'&&ch!='I'&&ch!='O'&&ch!='U'))//判断
//大写字母'B'~'Z'中去掉'E','I','O','U'
System.out.println(count);
38. 查找字符
先输入一个字符ch。然后输入一个正整数n (0&n&10),做n次下列运算:
输入一行字符串,在字符串中查找该字符(ch),如果找到,则输出
该字符在字符串中最后出现的位置(从0开始);否则输出“Not Found”。
import java.util.S
public class Test60023{
public static void main(String []args){
int index,i,n,j;
Scanner in=new Scanner(System.in);
ch=(in.nextLine()).charAt(0); //读取输入的第1行的第1个字符,就是要查找的字符
n=(in.nextLine()).charAt(0)-'0'; //读取输入的第2行的第1个字符,转换成数字
for(i=1;i&=n;i++){
str=in.nextLine(); //读取输入的下一行
/*---------*/
//先假设找到
for(j=0;j&str.length();j++)
if(str.charAt(j)==ch) index=j;
//从当前字符串中找字符ch,找到时记住它的位置,继续找下一个
//循环结束后,index中的值就是最后出现的位置
if(index&=0) System.out.println(index);
else System.out.println("Not Found");
//解法2:从字符串末尾开始找字符ch,第1次找到时记住它的位置,终止循环。
for(j=str.length()-1;j&=0;j--){
if(str.charAt(j)==ch)
{index=j; }
39. 字符串替换
输入一个正整数repeat (0&repeat&10),做repeat次下列运算:
输入一行字符串,生成一个新的字符串,将原字符串中的大写字母用下面列出的对应大写字母替换, 其余字符不变, 输出新字符串.
A ──→ Z
B ──→ Y
C ──→ X
D ──→ W
X ──→ C
Y ──→ B
Z ──→ A
import java.util.S
public class Test60024{
public static void main(String []args){
int ri, repeat,
String str1,str2;
Scanner in=new Scanner(System.in);
repeat=(in.nextLine()).charAt(0)-'0';
for(ri=1; ri&= ri++){
str1=in.nextLine();
/*---------*/
//保存转换后的新字符串
for(i=0;i&str1.length();i++) {
ch=str1.charAt(i); //从字符串中逐个取出字符
if((ch&='A'&&ch&='Z'))
//对该字符进行转换
ch=(char)('Z'-ch+'A');
str2=str2+
//转换后字符添加到结果中
System.out.println(str2);
字符串处理(二)
说明:本次实验中的题目请采用字符串处理来实现。
40. 求整数的位数以及各位数之和。40010
输入一个正整数repeat (0&repeat&10),做repeat次下列运算:
输入一个整数,输出它的位数以及各位数之和。
import java.util.S
public class Test40010 {
public static void main(String[] args){
int number, sum,n;
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1; ri&= ri++){
n=in.nextInt();
/*--------------------*/
n=Math.abs(n);
String s=String.valueOf(n); //把整数n转换成字符串
number=s.length(); //得到整数的位数
for(int i=0;i&i++){
sum+=(s.charAt(i)-'0'); //求各位数字和
System.out.println("number="+number+", sum="+sum);
41. 统计单词(选做) 40031
输入一个正整数repeat (0&repeat&10),做repeat次下列运算:
输入一行字符,统计其中单词的个数。各单词之间用空格分隔,空格数可以是多个。
import java.util.S
public class Test40031{
public static void main(String []args ){
int ri, repeat,count, word,i;
Scanner in=new Scanner(System.in);
repeat=(in.nextLine()).charAt(0)-'0';
for(ri=1; ri&= ri++){
line=in.nextLine();
/*---------*/
count=word=0;
for(i=0;i&line.length();i++){
c=line.charAt(i); //从字符串line中取出第i个字符,放入变量c
if(c==32) word=0; //当前字符是空格,表示不是单词
else if(word==0){ //当前字符不是空格,同时word=0,表示新单词开始
System.out.println( count);
42. 输出一个整数的各位数字(选做) 40032
输入一个正整数repeat (0&repeat&10),做repeat次下列运算:
输入一个整数,从高位开始逐位输出它的各位数字。
输出语句:System.out.print(digit+" ");
例:括号内是说明
import java.util.S
public class Test40032{
public static void main(String []args ){
long n, temp,
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1; ri&= ri++){
n=in.nextLong();
/*---------*/
n=Math.abs(n);
String s=String.valueOf(n); //把整数n转换成字符串
for(int i=0;i&s.length();i++){
digit=s.charAt(i)-'0';
//从高位到低位依次得到一位数字
System.out.print(digit+" "); //输出该位数字,再加一个空格
System.out.println();
另一种编法:
n=Math.abs(n);
char[] cs=String.valueOf(n).toCharArray();
//把整数n转换成字符串后存入字符数组cs,cs的元素就是n的每位数字
for(int i=0;i&cs.i++)
System.out.print(cs[i]+" "); //依次输出字符数组cs的各个元素
43. 统计一个整数中数字的个数 50003
输入一个正整数repeat (0&repeat&10),做repeat次下列运算:
读入1 个整数,统计并输出该数中2的个数。
要求定义并调用函数countdigit(number,digit),它的功能是统计整数number中数字digit的个数。例如,countdigit(10090,0)的返回值是3。
import java.util.S
public class Test50003{
public static void main(String args[]){
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1; ri&= ri++){
n=in.nextInt();
/*---------*/
n=Math.abs(n);
count=countdigit(n,2);
System.out.println("count="+count);
/*------------*/
static int countdigit(long number,int digit){//统计整数number中数字digit的个数
String s=String.valueOf(number); //把长整数number转换成字符串
//以下循环实现:依次取出number的每个数字与指定数字digit比较,若相等则个数加1
for(int i=0;i&s.length();i++)
if(s.charAt(i)-'0'==digit)c++;
44. 将一个整数逆序输出 50009
输入一个正整数repeat (0&repeat&10),做repeat次下列运算:
输入一个整数,将它逆序输出。
要求定义并调用函数reverse(number),它的功能是返回number的逆序数。例如reverse(12345)的返回值是54321。
import java.util.S
public class Test50009{
public static void main(String args[]){
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1;ri&=ri++){
n=in.nextInt();
/*---------*/
res=reverse(n);
System.out.println(res);
/*---------*/
static long reverse(long number){//返回number的逆序数
int flag=1; //保存符号
if(number&0) {
//负数变成正数
String s1=String.valueOf(number);
String s2="";
for(int i=0;i&s1.length();i++)
s2=s1.charAt(i)+s2; //字符串逆序
a=Long.parseLong(s2); //转换成数值
return flag*a;
//加上符号
45. 十进制转换二进制50010
输入一个正整数 repeat (0&repeat&10),做 repeat 次下列运算:
输入1 个正整数n,将其转换为二进制后输出。
要求定义并调用函数 dectobin(n),它的功能是输出 n 的二进制。例如,调用dectobin(10),输出1010。
输出语句:System.out.print(t);
//t为某位二进制数
import java.util.S
public class Test50010{
public static void main(String args[]){
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1;ri&=ri++){
n=in.nextInt();
/*---------*/
dectobin(n);
System.out.println();
/*---------*/
static void dectobin(int n){
//保存某位二进制
String s=""; //保存二进制数,这是字符串
//获得除2后的余数
//获得除2后的商
}while(n&0);
System.out.print(s); //本方法无返回值,需要在方法体中输出结果
46. 十六进制转换十进制 60025
输入一个正整数repeat (0&repeat&10),做repeat次下列运算:
输入一行字符串,对字符串做如下处理:滤去所有的非十六进制字符后,组成一
个新字符串(十六进制形式),然后将其转换为十进制数后输出。
import java.util.S
public class Test60025{
public static void main(String []args){
int ri, repeat, i,
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1; ri&= ri++){
str=in.next();
/*---------*/
for(i=0;i&str.length();i++){ //从左往右依次取出字符
ch=str.charAt(i);
if(ch&='0'&&ch&='9') //合法字符转换成相应数值后计算十进制数
number=number*16+(ch-'0');
else if(ch&='A'&&ch&='F')
number=number*16+(ch-'A'+10);
else if(ch&='a'&&ch&='f')
number=number*16+(ch-'a'+10);
//说明:要滤去所有的非十六进制字符,实际上只要对这些字符不进行任何操作就行了(当它不存在!)。
System.out.println(number);
str=str.toLowerCase(); //所有字母转换成小写字母
for(i=0;i&str.length();i++){ //从左往右依次取出字符
ch=str.charAt(i);
if(ch&='0'&&ch&='9') //合法字符转换成相应数值后计算十进制数
number=number*16+(ch-'0');
else if(ch&='a'&&ch&='f')
number=number*16+(ch-'a'+10);
str=str.toUpperCase(); //所有字母转换成大写字母
for(i=0;i&str.length();i++){ //从左往右依次取出字符
ch=str.charAt(i);
if(ch&='0'&&ch&='9') //合法字符转换成相应数值后计算十进制数
number=number*16+(ch-'0');
else if(ch&='A'&&ch&='F')
number=number*16+(ch-'A'+10);
实验13 数组作为方法的参数(4-6题)
60019(选做)
47. 统计素数并求和。 40023
输入一个正整数repeat (0&repeat&10),做repeat次下列运算:
输入2 个正整数m和n(1&=m,n&=500),统计并输出m 和n之间的素数的个数以及这些素数的和。
import java.util.S
public class Test40023{
public static void main(String args[]){
int count, i, j, k, m, n,
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1; ri&= ri++){
m=in.nextInt();
n=in.nextInt();
/*---------------------*/
count=sum=0;
for(k=m;k&=n;k++){
for(i=2;i&=k-1;i++)
if(k%i==0)
System.out.println("count="+count+", sum="+sum);
另一种编法:
count=sum=0;
for(k=m;k&=n;k++) {
if(k==1)flag=
//1不是素数
else flag=
for(i=2;i&=k-1;i++) {
if(k%i==0){flag=}
if(flag){sum+=i; count++;}
48. 简单计算器(选做) 40033
输入一个正整数repeat (0&repeat&10),做repeat次下列运算:
程序模拟简单运算器的工作:输入一个算式,遇等号"="说明输入结束,输出结果。
假设计算器只能进行加减乘除运算,运算数和结果都是整数,4种运算符的优先级相同,按从左到右的顺序计算。
import java.util.S
public class T40033{
public static void main(String args[]) {
int op1, op2,
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1; ri&= ri++){
op1=in.nextInt();
operator=(in.next()).charAt(0);
/*---------*/
while(operator!='=')
op2=in.nextInt();
switch(operator) {
case '+': res+=op2;
case '-': res-=op2;
case '*': res*=op2;
case '/': res/=op2;
operator=(in.next()).charAt(0);
System.out.println(res);
49. 找鞍点(选做)
输入一个正整数repeat (0&repeat&10),做repeat次下列运算:
输入 1 个正整数 n和n 阶方阵a中的元素,如果找到a 的鞍点(鞍点的元素值在该行上最大, 在该列上最小), 就输出它的下标, 否则,输出"NO"(设a最多有1个鞍点)。
import java.util.S
public class Test60019{
public static void main(String []args){
int i,j,k,row,col,n,a[][];
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1; ri&= ri++){
n=in.nextInt();
a=new int[n][n];
for (i=0;i&n;i++)
for (j=0;j&n;j++)
a[i][j]=in.nextInt();
/*---------*/
flag= row=0; col=0;//不写这些,就通不过编译
for(i=0;i&n;i++){
//先在第i行中找出该行的最大值
row=i; //row保存最大值的行坐标
col=0; //col保存最大值的列坐标,假设第i行第0列元素为最大
for(j=1;j&n;j++)
if(a[row][j]&a[row][col]) col=j;
//再判断a[row][col]是否是第col列中的最小值
for(k=0;k&n;k++)
if(a[k][col]&a[row][col]){
//若有比a[row][col]小的,可知它不是鞍点,可结束循环
if(flag) //找到1个鞍点后就不用再找了
System.out.println("a["+row+"]["+col+"]="+a[row][col]);
System.out.println("NO");
50. 编写排序函数(方法) 60030
输入一个正整数repeat (0&repeat&10),做repeat次下列运算:
输入一个正整数n,再输入n个整数,将它们从小到大排序后输出。要求将排序编写为一个sort()方法。
import java.util.S
public class Test60030{
public static void main(String []args){
int i, n, a[];
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1; ri&= ri++){
n=in.nextInt();
a=new int[n];
for(i=0; i&n; i++)
a[i]=in.nextInt();
for(i=0; i&n; i++)
System.out.print(a[i]+" ");
System.out.println();
/*---------*/
//说明:数组作参数时,传递的是地址,形参数组和实参数组共用同一块内存,
//方法sort()中对形参数组b排序,实际上就是对实参数组a排序,
//所以不需要返回值。
static void sort(int b[]){
int i,j,k,
for(i=0;i&b.length-1;i++) { //选择法递增排序
for(j=i+1;j&b.j++)
if(b[k]&b[j]) k=j;
temp=b[i];b[i]=b[k]; b[k]=
51. 编写矩阵加法和输出函数(方法) 60031
输入一个正整数repeat (0&repeat&10),做repeat次下列运算:
读入 1 个正整数 n(1≤n≤6), 再读入2个 n 阶方阵 a和b , 计算矩阵的和。
要求:(1)编写计算矩阵和的函数(方法)add()。(2)编写输出矩阵的方法prt()。
矩阵元素输出使用:System.out.print(a[i][j]+" ");
import java.util.S
public class Test60031{
public static void main(String []args){
int a[][],b[][],c[][],i,j,n;
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1; ri&= ri++){
n=in.nextInt();
a=new int[n][n]; b=new int[n][n];c=new int[n][n];
for(i=0; i&n; i++)
for(j=0;j&n;j++)
a[i][j]=in.nextInt();
for(i=0; i&n; i++)
for(j=0;j&n;j++)
b[i][j]=in.nextInt();
add(a,b,c);
prt("A矩阵",a);
prt("B矩阵",b);
prt("A+B矩阵",c);
/*----加法-----*/
static void add(int x[][],int y[][],int z[][]){
for(int i=0;i&x.i++) {
for(int j=0;j&x[i].j++) {
z[i][j]=x[i][j]+y[i][j];
/*----输出-----*/
static void prt(String s,int a[][]){
System.out.println(s);
for(int i=0; i&a. i++){
for(int j=0;j&a[i].j++)
System.out.print(a[i][j]+" ");
System.out.println();
编写函数求矩阵最大值
输入一个正整数repeat (0&repeat&10),做repeat次下列运算:
读入 2 个正整数 m和n(1≤m,n≤6), 再读入1个 m×n 阶矩阵 a , 计算该矩阵元素的最大值。
要求:编写max(),返回矩阵元素的最大值。
import java.util.S
public class Test60032{
public static void main(String []args){
int a[][],i,j,m,n;
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1; ri&= ri++){
m=in.nextInt(); n=in.nextInt();
a=new int[m][n];
for(i=0; i&m; i++)
for(j=0;j&n;j++)
a[i][j]=in.nextInt();
System.out.println("max="+max(a));
/*---------*/
static int max(int b[][]){
int max=b[0][0];
先设第一个元素是最大的
for(int i=0;i&b.i++)
for(int j=0;j&b[i].j++)
if(max&b[i][j]) max=b[i][j];
程序填空,不要改变与输入输出有关的语句。
输入一个正整数repeat (0&repeat&10)并换行,然后做repeat次下列运算:
输入一行字符,统计其中单词的个数。各单词之间用空格分隔,空格数可以是多个。
1)使用c=line.charAt(i);表示从line中获得第i个字符,i从0开始。
2)line中的字符个数为:line.length()
例:括号内是说明
Reold building
123 Programming is fun
import java.util.S
public class Test40031{
public static void main(String []args ){
int ri, repeat,count, word,i;
Scanner in=new Scanner(System.in);
repeat=(in.nextLine()).charAt(0)-'0';
//输入repeat
for(ri=1; ri&= ri++){
line=in.nextLine();
//输入一行字符
/*---------*/
System.out.println( count);
程序填空,不要改变与输入输出有关的语句。
输入一个正整数repeat (0&repeat&10),做repeat次下列运算:
输入一个整数,从高位开始逐位输出它的各位数字。
输出语句:System.out.print(digit+" ");
例:括号内是说明
1 2 3 4 5 6
import java.util.S
public class Test40032{
public static void main(String []args ){
long n, temp,
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1; ri&= ri++){
n=in.nextLong();
/*---------*/
System.out.println();
import java.util.S
public class a {
public static void main(String[] args) {
long n, temp,
Scanner in = new Scanner(System.in);
repeat = in.nextInt();
for (ri = 1; ri &= ri++) {
n = in.nextLong();
digit = 0;
while(temp&0){
temp /= 10;
while(digit&0){
pow = (long) Math.pow(10, digit-1);
System.out.print(n/pow%10+" ");
System.out.println();
程序填空,不要改变与输入输出有关的语句。
输入一个正整数repeat (0&repeat&10),做repeat次下列运算:
程序模拟简单运算器的工作:输入一个算式,遇等号"="说明输入结束,输出结果。
假设计算器只能进行加减乘除运算,运算数和结果都是整数,4种运算符的优先级相同,按从左到右的顺序计算。
例:括号内是说明
15 + 2 / 3 =
1 + 2 * 10 - 10 / 2 =
import java.util.S
public class T40033{
public static void main(String args[]) {
int op1, op2,
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1; ri&= ri++){
op1=in.nextInt();
operator =(in.next()).charAt(0);
/*---------*/
System.out.println(res);
import java.util.S
public class a{
public static void main(String args[]) {
int op1, op2,
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1; ri&= ri++){
op1=in.nextInt();
operator =(in.next()).charAt(0);
while(operator!='=')
{op2=in.nextInt();
switch(operator){
case '+':op1+=op2;
case '-':op1-=op2;
case '*':op1*=op2;
case '/':op1/=op2;
operator=(in.next()).charAt(0);
System.out.println(res);
输出m~n之间的所有闰年
程序填空,不要改变与输入输出有关的语句。
输入一个repeat(1&repeat&10)),做repeat次下列运算:
输入正整数m和n(1900&=m&=n&=2100),分别代表年份的起止值,输出该范围内所有的闰年。判断闰年的条件是:能被 4 整除但不能被 100 整除,或者能被 400 整除。
输出使用语句 System.out.println(year);
输入输出示例:括号内是说明
import java.util.S
public class T{
public static void main(String []args){
int year,m,n,repeat,
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1;ri&=ri++){
m=in.nextInt();
n=in.nextInt();
/*---------*/
import java.util.S
public class a{
public static void main(String []args){
int year,m,n,repeat,
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1;ri&=ri++){
m=in.nextInt();
n=in.nextInt();
for(year=m;year&=n;year++){
if((year%4==0&&year%100!=0)||year%400==0){
System.out.println(year);
import java.util.S
public class Test30009{
public static void main(String args[]){
int repeat,
int a,b,c,d;
double x1,x2;
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri = 1; ri &= ri++)
a=in.nextInt();b=in.nextInt();c=in.nextInt();
/*---------*/
if(a==0&&b==0&&c==0)
System.out.println("a=b=c=0,meaningless");
else if(a==0&&b==0&&c!=0)
System.out.println("a=b=0,c!=0,error");
else if(a==0)
System.out.println("x="+Math.round(-(float)c/b*100)/100.0);
else //满足一元二次方程a*x*x+b*x+c=0条件
d=b*b-4*a*c;
if(d&=0)//前面三种情况排除了就是最后一种情况,所以就不用写出来了!
{ x1=(-b+Math.sqrt(d))/(2*a);
x2=(-b-Math.sqrt(d))/(2*a);
System.out.println("x1="+Math.round(x1*100)/100.0);
System.out.println("x2="+Math.round(x2*100)/100.0);
System.out.println("x1="+Math.round((float)(-b)/(2*a)*100)/100.0+"+"+Math.round(Math.sqrt(-d)/(2*a)*100)/100.0+"i");
System.out.println("x2="+Math.round((float)(-b)/(2*a)*100)/100.0+"-"+Math.round(Math.sqrt(-d)/(2*a)*100)/100.0+"i");
import java.util.S
public class Test30010{
public static void main(String args[]){
int repeat,
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri = 1; ri &= ri++){
ch=(in.next()).charAt(0);
/*输入1个字符*/
/*---------*/
switch(ch)
注意。。。这里的A是要加单引号的!!!
case 'A':System.out.println("90-100");//
case 'B':System.out.println("80-89");
case 'C':System.out.println("70-79");
case 'D':System.out.println("60-69");
case 'E':System.out.println("0-59");
default:System.out.println("Invalid input");
&&&主编推荐
&&&热门试卷
&&&最新视频
&&&热门阅读
&&&最新问答
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&&&增值电信业务经营许可证湘B2-}

我要回帖

更多关于 java笔试题目 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信