1编程题参考答案doc.docx
《1编程题参考答案doc.docx》由会员分享,可在线阅读,更多相关《1编程题参考答案doc.docx(9页珍藏版)》请在冰豆网上搜索。
1编程题参考答案doc
第一题:
定义方法
(一)基本算法
37.请编写方法intrevInt(inta),该方法的功能是返回与十进制正整数a的数字顺序相反排列的正整数。
如已知正整数1234,方法返回值是4321。
2015.4
intrevInt(inta){
intb=0,g;
while(a>0){
g=a%10;b=b*10+g;a=a/10;
}
returnb;
}
练习:
请编写方法intgetSum(intx),该方法的功能是返回正整数x的各位数字的和。
intrevInt(intx){
intb=0,g;
while(x>0){
g=x%10;b=b+g;x=x/10;
}
returnb;
}
请编写方法doublegetSum(intx),该方法的功能是返回正整数x的各位数字的平均值。
doublerevInt(intx){
intb=0,g,n=0;
while(x>0){
g=x%10;b=b+g;x=x/10;n++;
}
return(double)b/n;
}
37.编写方法doublesumS(intn),已知参数n,求以下表达式前n项的和S返回。
s=2/1+3/2+5/3+8/5+13/8+……注:
下一项的分母=上一项的分子,下一项的分子=上一项的分子与分母的和。
2015.10
doublesumS(intn){//要特别注意数据类型哟
inti;doubles=0.0;
intfz=2,fm=1,temp;//temp用于保存前一个分母,避免覆盖
for(i=1;i<=n;i++){
temp=fm;//改变前的分母
s=s+(double)fz/fm;
fm=fz;
fz=fz+temp;
}
returns;
}
(二)字符串的运算
37.请编写方法voidstrReverse(Stringstr),该方法的功能是输出一个新字符串,新字符串字符排列顺序与原字符串str的字符排列顺序相反。
例如,strReverse(″ABCD″)所输出的结果是″DCBA″。
请使用字符串与字节数组的相互转换方法进行设计。
2010.1
voidstrReverse(Stringstr){
Stringn="";
for(inti=0;i<=str.length()-1;i++){
n=n+str.substring(str.length()-1-i,str.length()-i);
}
System.out.println(n);
}
/////////////////////////////////////////////////////
voidstrReverse(Stringstr){
byteb[]=str.getBytes();bytet;
for(inti=0;it=b[i];b[i]=b[b.length-1-i];b[b.length-1-i]=t;
}
Stringn=newString(b);
System.out.println(n);
}
37.请编写方法intcountNum(Stringstr),该方法的功能是统计已知字符串str中数字的个数。
例如,countNum("A42B83C2D")的返回值是5。
2010.10
intcountNum(Stringstr){
intn=0;
byteb[]=str.getBytes();//将字符串转换为字节数组来处理
for(inti=0;iif(b[i]>=48&&b[i]<=57)n++;
//也可以写成if(b[i]>='0'&&b[i]<='9')n++;
}
returnn;
}
(三)数组的运用
37.编写方法intsearchMaxNumIndex(int[]a),寻找已知数组中最大数的下标并返回。
2009.10
intsearchMaxNumIndex(int[]a){
intmax=a[0],n=0;
for(inti=1;iif(a[i]>max){max=a[i];n=i;}
}
returnn;
}
37.请编写方法doubleaverageOfArray(double[]a),返回非空数组中正数的平均值(数组中可能有非正数元素)。
2011.1
doubleaverageOfArray(double[]a){
doublesum=0.0;intn=0;
for(inti=0;iif(a[i]>0){sum=sum+a[i];n++;}//注意把这个两个语句放在IF中
}
returnsum/n;
}
37.请编写方法intcountOddNum(int[]a),该方法的功能是求已知数组a中奇数的个数。
要求根据方法的功能写出方法的代码。
2016.10
intcountOddNum(int[]a){
intn=0;
for(inti=0;iif(a[i]%2!
=0)n++;
}
returnn;
}
37.编写方法int[]delete(int[]a,intd),方法将创建一个新数组b,新数组b中只包含原数组中所有值不等于d的元素,并返回该新数组b。
2012.1
int[]delete(int[]a,intd){
intn=0,k=0;//k用来表示下标
for(inti=0;iif(a[i]!
=d)n++;
intb[]=newint[n];//然后定义数组b
for(inti=0;iif(a[i]!
=d){b[k]=a[i];k++;}//注意这里不能用b[i],只能用b[k]
}
returnb;
}
37.请编写方法int[]cubeArray(int[]a),返回一个新数组b,数组b的长度与参数数组的长度相同,其元素的值是参数数组对应各元素值的立方。
2012.10
int[]cubeArray(int[]a){
intb[]=newint[a.length];
for(inti=0;ib[i]=a[i]*a[i]*a[i];
}
returnb;
}
37.编写方法int[]arrayReverse(int[]a),该方法的功能是返回一个新的数组b,新数组的元素排列顺序与参数数组的元素排列顺序相反。
2014.4
int[]arrayReverse(int[]a){
intb[]=newint[a.length],n=0;
for(inti=a.length-1;i>=0;i--){
b[n]=a[i];n++;//或者写成b[a.length-i-1]=a[i];
}
returnb;
}
37.请编写一个方法intfindMaximum(int[][]numbers),要求该方法返回二维数组中元素的最大值。
2011.10
intfindMaximum(int[][]numbers){
intmax=numbers[0][0];//注意max只能初始成第一个元素
for(inti=0;ifor(intj=0;jif(numbers[i][j]>max)max=numbers[i][j];
}
}
returnmax;
}
37.编写方法int[][]transpose(int[][]a),方法将生成并返回一个新数组b,该数组为a的转置数组。
注:
数组转置指的是将数组的行、列内容互换。
2013.10
int[][]transpose(int[][]a){
intb[][]=newint[a[0].length][a.length];//a的列数为b的行数,a的行数为b的列数
for(inti=0;ifor(intj=0;jb[j][i]=a[i][j];
}
}
returnb;
}
第二题:
图形用户界面设计题
1、完成界面设计(界面的设计:
JFrame;布局:
FlowLayout、BorderLayout、GridLayout、CardLayout,null;常用组件:
JLabel、JTextField、JButton、JTextArea、JPanel……;事件处理)
(1)JFrame的应用
importjava.awt.*;
importjavax.swing.*;
classMFrameextendsJFrame{
MFrame(Strings){
super(s);
//布局
//组件创建与加载
this.pack();//this.setSize(300,200);this.setBounds(300,200,400,500);
this.setVisible(true);
this.setDefaultColoseOperation(JFrame.EXIT_ON_COLOSE);
}
}
举例:
2009年1月、2010年1月、2014年4月、2015年10月、2016年10月最后一题
(2)事件的处理actionEvent
importjava.awt.*;
importjavax.swing.*;
importjava.awt.event.*;
classMFrameextendsJFrameimplementsActionListener{
MFrame(Strings){
super(s);
//布局
//组件创建与加载
//为事件源添加监视器
this.pack();//this.setSize(300,200);this.setBounds(300,200,400,500);
this.setVisible(true);
this.setDefaultColoseOperation(JFrame.EXIT_ON_COLOSE);
}
//重写事件处理的方法
publicvoidactionPerformed(ActionEvente){
if(e.getSource()==事件源对象){
//具体的事件处理内容
}
}
}
举例:
2013年10月
(3)事件处理中的两种常见问题:
a、文本框中数字的运算
doublec=Doble.parseDouble(text1.getText());//将文本框的内容转换为数字
doublef=c*9/5+32;
text2.setText(f+””);//text2.setText(String.valueOf(h));//将运算结果转换为字符串写回文本框
举例:
2010年10月、2011年1月
b、字符串的分析
publicvoidactionPerformed(ActionEvente){
if(e.getSource()==button){
Strings=textA.getText();doublesum=0;
StringTokenizerfenxi=newStringTokenizer(s,",\n");//创建字符串分析对象
while(fenxi.hasMoreTokens()){//循环访问分析后的子串
sum=sum+Double.parseDouble(fenxi.nextToken());//将子串转换为数字参与运算
}
textA.setText(sum+””);//将结果写回文本框
}
}
举例:
2009年10月、2012年1月、2012年10月、2015年4月