初级程序员下午模拟试题及答案解析(15)
(1~7/共20题)填空题
阅读以下说明和Java代码,将应填入______处的语句或语句成分写在对应栏内。
[说明]
某数据文件的内容为100名学生的学号和成绩,下面的程序将文件中的数据全部读入对象数组,按分数从高到低进行排序后选出排名前30%的学生。
[Java代码]
import java.io.*;
class Student{
private String sNO;//学号
private int Credit;//分数
public int getCredit(){
return Credit;
}
public string toString(){
return"sNO="+this.sNO+",Credit="+this.Credit;
}
Student(String sNO,int Credit){
______=sNO;
______=Credit;
}
}
public class SortStudent{
void sort(Student[]s){//Sort the array s[] in decending order of Credit
for(int i=0;i<s.length-1;i++){
for(int j=i+1:j<s.length;j++){
if(s[i].______<s[j].______){
Student tmp=s[i];
s[i]=s[j];
s[j]=tmp;
}
}
}
}
public static void main(String argv[]){
Student[] testStudent=new Student[size];
try{
BufferedReader in=new BufferedReader(new FileReader(""));
boolean done=false;
int i=0;
while(!done){
String adLine(); //每次读取一个学生的学号和成绩
if(s!=null){
String tmp[]=s.split(",");
testStudent[i++]=______(tmp[0],Integer.parselnt(tmp[1]));
}else
done=true;
}
in.closeo();
______=new SortStudent();
ss.sort(testStudent);
System.out.printin("top 30%:");
for(int j=0;j<size*0.3;j++)
System.out.printin(testStudent[j]);
}catch(IOException e){
System.out.printin("io error!");
}catch(NumberFormatException e){
System.out.printin("not a number!");
}
}
______int size=100; //学生总数
}
第1题
第2题
第3题
第4题
第5题
第6题
第7题
下一题
(8~9/共20题)填空题
【函数1.2说明】
函数merge(int a[],int n,int b[],int m,int *c)是将两个从小到大有序数组a和b复制合并出一个有序整数序列c,其中形参n和m分别是数组a和b的元素个数。
【函数1.2】
void merge(int a[ ],int n,int b[ ],int m,int *c)
{ int i,j;
for(i=j:0;i<n && j<m;)
*c++ =a[i] <b[j]? a[i++]:b[j++];
while(i<n) 1 ;
while(j<m) 2 ;
}
第8题
第9题
上一题 下一题
(10~15/共20题)填空题
【函数2说明】
本题中的函数encode()和decode()分别实现对字符串的变换和复原。变换函数encode()顺序考察已知字符串的字符,按以下规则逐组生成新字符串:
1.若已知字符串的当前字符不是数字字符,则复制该字符于新字符串中。
2.若已知字符串的当前字符是一个数字字符,且它之后没有后继字符,则简单地将它自己复制到新字符串中。
3.若已知字符串的当前字符是一个数字字符,并且还有后继字符,设该数字字符的面值为n,则将它的后续字符(包括后续字符是一个数字字符)重复复制n+1次到新字符串中。
4.以上述一次变换为一组,在不同组之间另插入一个下划线字符“-”用于分隔。例如。encode()函数对字符串26a3t2的变换结果为666_a_tttt_2
复原函数decode()做变换函数encode()的相反的工作。即复制不连续相同的单个字符,而将一组连续相同的字符(不超过10个)变换成一个用于表示重复次数的数字字符和一个重复出现的字符,并在复原过程中掠过变换函数为不同组之间添加的一个下划线字符。
假定调用变换函数encode()时的已知字符串中不包含下划线字符。
【函数2】
int encode(char*instr,char * outstr)
{
char*ip,*op,c;int k,n;
ip=instr;op=outstr;
while(*ip){
if 1 &&*(ip+1){
n= *ip -"0"+ 1;
c= *++ip;
for(k=0;k<=n;k++)
2 ;
}
else 3 ;
*op++ ="-";
ip++;
}
if(op>outstr) 4 ;
*op="\0";
return op-outstr;
}
int decode(char * instr,char * outstr)
{char*ip,*op,c;int n;
ip=instr;op=outstr;
while(*ip){
c= *ip;n=0;
while(*ip==c && n<=10){ip++;n++;}
if 5 *op++="0"+n-1;
*op++=c;
if(* ip=="_",) 6 ;
}
* op="\0";
return op-outstr;
merge函数}
第10题
第11题
第12题
第13题
第14题
第15题
上一题 下一题
(16~20/共20题)填空题
【说明】
有一种猜数字游戏,开始时程序随机产生四个不相同的个位数字(顺序固定),然后玩家输入猜测的四个数字。程序比较后给出提示,本次猜数字有几个数字完全正确,有几个数字数值
正确但是位置错误。玩家重复猜测直至结果完全正确。例如,程序生成“1234”,玩家猜测“1630”,则提示"位置正确的有:“1”个,位置错误的有:“1”个,完全错误的有“2”个。
下面的两个Java函数是猜数字游戏里面使用的两个函数,第一个用于产生四个不相同的数字。第二个函数先判断输入是否合法,若合法则进行比较,并给出提示。
【Java程序】
………………
private String randNum()//产生答案数字
{
int[] digits={0,1,2,3,4,5,6,7,8,9};
Random mum=new Random((new Date()).getTime());
for(int i=0;i<10;i++)
{
int p=Math.Int())%10;
int tmp=digits[p];//tmp是临时存储数字的变量
1 ;
digits[i]=tmp;
}
return Integer.toString(digits[0])+Integer.toString(digits[1])
+Integer.toString(digits[2])+Integer.toString(digits[3]);
}
String checkAnswer(String guess,Stdng answer)
{
if guess.length()!=4)return "要输入4个数字!";
int num=0;
try{ num= 2 ;} //判断输入是否是数字
catch(NumberFormatException ex)
{return "要输入数字!";}//catch
int[]timesDigit={0,0,0,0,0,0,0,0,0,0};
for(int i=0;i<4;i++){
int ptr=num%10;
num=num/10;
if 3 //输入数字有重复
return "数字有重复!";
}//for
int a=0;
int b=0;
for(int j=0;j<4;j++)
{
int pos=answer.indexOf(guess.substring(j,j+1));
if 4 //当前数字完全正确
a++;
else if(pos>=0)
b++;
}
if 5 //答案完全正确
return "恭喜!答对了!!";
else{
textAreaContent+= "位置正确的有:"+a+"个,位置错误的有:"+b+"
个,完全错误的有"+(4-a-b)+"个\n";
return "继续努力";
}
}
………………
第16题
第17题
第18题
第19题
第20题
上一题 交卷
交卷
答题卡
答案及解析
(1~7/共20题)填空题
阅读以下说明和Java代码,将应填入______处的语句或语句成分写在对应栏内。
[说明]
某数据文件的内容为100名学生的学号和成绩,下面的程序将文件中的数据全部读入对象数组,按分数从高到低进行排序后选出排名前30%的学生。
[Java代码]
import java.io.*;
class Student{
private String sNO;//学号
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论