当前位置:文档之家› java web编程技术(沈泽刚,清华大学出版社)双星习题部分解答

java web编程技术(沈泽刚,清华大学出版社)双星习题部分解答

java web编程技术(沈泽刚,清华大学出版社)双星习题部分解答
java web编程技术(沈泽刚,清华大学出版社)双星习题部分解答

1_3

public class chap1_3

{

public static void main(String[] args)

{

System.out.println(" ] A V V A");

System.out.println(" ] A A V V A A");

System.out.println("] ] AAAAA V V AAAAA");

System.out.println(" ] ] A A V A A");

}

}

2_6

import java.util.Scanner;

/*

* (求一个整数各位数的和)编写程序,读取一个在0和1000之间的整数,并将该整数的各位数字相加。

*/

public class chap2_6 {

public static void main(String[] args){

//初始化,数据准备

int inputNum;//用户输入的整数

int sum;//整数的各位数字和

//输入,读取一个整数

inputNum = getInput();

//运算,整数的各位数字相加

sum = getResult(inputNum);

//输出,整数的各位数字和

showResult(inputNum,sum);

}

static int getInput(){

int num=0;

Scanner sc = new Scanner(System.in);

boolean isValidNum = false;

while (!isValidNum){

System.out.println("请输入一个在0和1000之间的整型数:");

num = sc.nextInt();

if (num > 0 && num < 1000){

isValidNum = true;

}

else {

System.out.println("您输入的数字不合法!");

}

}

return num;

}

static int getResult(int Num){

int result = 0;

int temp = Num;//方便计算的临时变量

while (temp>0){

result += temp % 10;//余数就是末位数字

temp = temp / 10;//去掉末位数字

}

return result;

}

static void showResult(int num,int result){

System.out.println("num="+num);

System.out.println("result="+result);

}

}

2_15

import java.util.Scanner;

/*

* (财务应用程序:复利值)假设你每月向银行账户存100元,年利率为5%,那么每月利率是0.05/12=0.00417

* 第一个月之后,账户上的值就变成:100*(1+0.00417)= 100.417

* 第二个月之后,账户上的值就变成(100+100.417)*(1+0.00417)= 201.252

* 第三个月之后,账户上的值就变成(100+201.252)*(1+0.00417)= 302.507

* 以此类推

* 编写程序显示任意一个月后账户上的钱数。

*/

public class chap2_15 {

public static void main(String[] args){

//初始化

double principal = 0.0; //本金

double annual_interest_rate = 0.0; //年利率

double amount_of_account = 0.0; //账户金额

int month;//月数

//输入本金

principal = inputPrincipal();

//输入年利率

annual_interest_rate = inputInterestRate();

//输入月数

month = inputMonth();

//计算账户上的钱数

amount_of_account = calculateAccount(principal,annual_interest_rate,month);

//输出账户上的钱数

outputAccount(principal,annual_interest_rate,month,amount_of_account);

}

public static double inputPrincipal(){

double principal;

Scanner sc = new Scanner(System.in);

System.out.println("请输入本金:");

principal = sc.nextDouble();

return principal;

}

public static double inputInterestRate(){

double interestRate;

Scanner sc = new Scanner(System.in);

System.out.println("请输入年利率:");

interestRate = sc.nextDouble();

return interestRate;

}

public static int inputMonth(){

int month;

Scanner sc = new Scanner(System.in);

System.out.println("请输入月数:");

month = sc.nextInt();

return month;

}

//计算账户金额,p代表本金,air代表年利率,m代表月数

public static double calculateAccount(double p,double air, int m){

double mir;//代表月利率

double accountResult = 0.0;//代表最后计算出的账户金额

double currentAmout = p;//代表当前进行复利运算的金额

mir = (air /100)/ 12;

for (int i = 0 ; i < m ; i ++){

accountResult = currentAmout * (1 + mir);

currentAmout = accountResult + p;

}

return accountResult;

}

//输出账户金额,p代表本金,air代表年利率,m代表月数,aa代表计算出的账户金额public static void outputAccount(double p,double air, int m, double aa){

System.out.println("您的本金是" + p + "元;年利率是" + air + "%;" +

m + "个月后您的账户金额为" + aa + "元");

}

}

3_21

/**

编写程序,提示用户输入年、月和该月的哪一天,然后显示它是一周中的星期几。

h =(q+[26(m+1)/10]+k+[k/4]+[j/4]+5*j)%7

1、h是一个星期中的每一天(0为星期六;1为星期天;2为星期一;3为星期二;4为星期三;

5为星期四;6为星期五)

2、q是某月的某一天

3、m是月份(3为三月,4为四月,...,12为十二月)。一月和二月分别记为上一年的13和14月。

4、j是世纪数(即|year/100|)

5、k是世纪的年数(即year%100)。

*/

import java.util.Scanner;

public class chap3_21{

public static void main(String[] args){

int year,month,day;//分别代表用户输入的年月日

String dayOfWeek;//代表星期几

year = InputYear();

month = InputMonth();

day = InputDay();

dayOfWeek = GetDayOfWeek(year,month,day);

ShowDayOfWeek(year,month,day,dayOfWeek);

}

private static int InputYear(){

int year;

Scanner sc = new Scanner(System.in);

System.out.println("请输入年份:(如:2008):");

year = sc.nextInt();

return year;

}

private static int InputMonth(){

int month;

Scanner sc = new Scanner(System.in);

System.out.println("请输入月份:1-12:");

month = sc.nextInt();

return month;

}

private static int InputDay(){

int day;

Scanner sc = new Scanner(System.in);

System.out.println("请输入天数:1-31:");

day = sc.nextInt();

return day;

}

private static String GetDayOfWeek(int y,int m,int d){ int h;

h = CalculateH(y,m,d);

String dayOfWeek;

switch (h)

{

case 0: dayOfWeek = "星期六";break;

case 1: dayOfWeek = "星期日";break;

case 2: dayOfWeek = "星期一";break;

case 3: dayOfWeek = "星期二";break;

case 4: dayOfWeek = "星期三";break;

case 5: dayOfWeek = "星期四";break;

case 6: dayOfWeek = "星期五";break;

default: dayOfWeek = "星期计算错误";break;

}

return dayOfWeek;

}

private static int CalculateH(int year,int month,int day){

int h,q,m,j,k;

q = day;

if (1 == month){

m = 13;

k = year % 100 -1;

}else if (2 == month){

m = 14;

k = year % 100 -1;

}else{

m = month;

k = year % 100;

}

j = Math.abs(year/100);

h = (q + (int)(26*(m + 1)/10) + k + (int)(k/4) + (int)(j/4) + 5 * j) % 7;

return h;

}

private static void ShowDayOfWeek(int year,int month,int day, String dayOfWeek){ System.out.println(year+"-"+month + "-" + day + "是" + dayOfWeek );

}

}

3_24

/**

(游戏,挑一张牌)编写程序,模拟从一副52张的牌中选择一张牌。程序应该显示牌的大小

(A,2,3,4,5,6,7,8,9,10,J,Q,K)以及牌的花色(黑梅花,红方块,红心,

黑桃)。

*/

public class chap3_24{

public static void main(String[] args){

String colorOfPoker;

String size;

ShowMessage("正在挑牌,请您耐心等待...");

colorOfPoker = RandomSelectColor();

size = RandomSelectSize();

ShowMessage("为您挑出的牌是:" + colorOfPoker + size);

}

private static String RandomSelectSize(){

String size;

int num;

num = (int)(Math.random()*13) + 1;

switch (num){

case 1: size = "A";break;

case 2: size = "2";break;

case 3: size = "3";break;

case 4: size = "4";break;

case 5: size = "5";break;

case 6: size = "6";break;

case 7: size = "7";break;

case 8: size = "8";break;

case 9: size = "9";break;

case 10: size = "10";break;

case 11: size = "11";break;

case 12: size = "12";break;

case 13: size = "13";break;

default: size = "错误的大小";break;

}

return size;

}

private static String RandomSelectColor(){

String color;

int num;

num = (int)(Math.random()*4);

switch (num){

case 0: color = "黑梅花";break;

case 1: color = "红方块";break;

case 2: color = "红心";break;

case 3: color = "黑桃";break;

default:color = "错误的花色";break;

}

return color;

}

private static void ShowMessage(String message){

System.out.println(message);

}

}

4_19

/**

(打印金字塔形的数字)编写一个嵌套的for循环,打印下面的输出:

*/

/**

人工解决问题的分析:

约束条件分析:

1、需要提供塔高即行数lineAmount

2、主观限定lineAmountr<=10

3、主观限定每个数字的宽度widthOfNumber=4

4、数字右对齐

5、每个数字的类型为int

算法分析:

1. 循环打印各行(外层循环), 循环次数为lineAmount,循环变量为i,(i=0,1,...,lineAmount-1)

1.1. 循环打印每一行(内层循环), 循环次数为2i+1,循环变量为j,(j=0,1, (2i)

1.1.1. 计算打印的数字, 设数字为number,指数为index,number=(int)Math.pow (2,index)

1.1.1.1. 计算index

当j<=i时,index=j;当年j>i时,index=i-1,i-2,...,0

如i=7时:

j: 0,1,2,3,4,5,6,7, 8, 9, 10, 11, 12, 13, 14

index: 0,1,2,3,4,5,6,7, 6, 5, 4, 3, 2, 1, 0

1.1.

2. 在每一行前面输出若干空格

1.1.

2.1 空格的个数spaceNumber

如:lineAmount=7

i 空格个数

6 widthOfNumber*0

5 widthOfNumber*1

4 widthOfNumber*2

...

0 widthOfNumber*6

spaceNumber = widthOfNumber*(lineAmount-1-i)*/

import java.util.Scanner;

public class chap4_19{

static final int WIDTH_Of_NUMBER = 4;//每个数字的宽度

public static void main(String[] args){

int lineAmount;//行数,为了方便实验主观限定测试时不超过十行

lineAmount = InputLineAmount();//得到行数

ShowNumberTower(lineAmount);//输出数字塔

}

private static int InputLineAmount(){

int temp;

Scanner sc = new Scanner(System.in);

System.out.print("请输入数字塔的行数,1-10:");

temp = sc.nextInt();

return temp;

}

private static void ShowNumberTower(int lineAmount){

for (int i = 0;i < lineAmount ;i++ ){

showSpace(lineAmount-1-i);//在每一行前面输入若干个空格

showLineNumber(i);

System.out.println();

}

}

private static void showLineNumber(int i){

int k = i -1;

for (int j = 0; j < 2 * i + 1;j++ ){

int index,number;

index = 0;

if (j <= i){

index = j;

}

else{

index = k--;

}

number = (int)(Math.pow(2,index));

System.out.printf("%4d",number);

}

}

private static void showSpace(int j){

for (int i = 0;i < WIDTH_Of_NUMBER*j ; i++){

System.out.print(' ');

}

}

}

4_34

/**

编写一个和计算机玩石头、剪刀、布的游戏。

要求:记录玩家姓名、玩的次数并统计其胜率

*/

import java.util.Scanner;

public class chap4_34

{

public static void main(String[] args)

{

String playerName = "guest";//玩家姓名

playerName = InputPlayerName();//获得玩家姓名

Welcome(playerName);

GameControl(playerName);

SayByeBye(playerName);

}

private static void GameControl(String name){

String playerName = name;

int timesOfGame = 0;//游戏次数

int timesOfWin = 0;//获胜次数

int timesOfDraw = 0;//平局

boolean isGameOver = false;

do{

String computerRandomAnswer = GetComputerRandomAnswer();

String playerAnswer = GetPlayerAnswer(playerName);

timesOfGame++;//累加游戏次数

if (IsPlayerWin(computerRandomAnswer,playerAnswer)){

timesOfWin++;//累加获胜次数

isGameOver = IsGameOver();//决定是否继续玩

}else if (IsPlayerDraw(computerRandomAnswer,playerAnswer)){

timesOfDraw++;

continue;

}

else {

System.out.println("计算机出的是" + computerRandomAnswer +

",您出的是" + playerAnswer + "。这次计算机胜了!");

isGameOver = IsGameOver();//决定是否继续玩

}

}while (!isGameOver);

ShowGameResult(playerName,timesOfGame,timesOfWin,timesOfDraw);

}

private static boolean IsGameOver(){

boolean isGameOver = false;

Scanner sc = new Scanner(System.in);

System.out.println("是否继续玩?true/false:");

isGameOver = !sc.nextBoolean();

return isGameOver;

}

private static void ShowGameResult(String playerName,int timesOfGame,int timesOfWin,int timesOfDraw){

System.out.println(playerName + "您一共和计算机猜了" +

timesOfGame + "次,您" + timesOfWin + "次获胜,平了" + timesOfDraw + "次!" );

}

private static boolean IsPlayerDraw(String computerRandomAnswer,String playerAnswer){ boolean draw = false;

if (playerAnswer.equals("石头") && computerRandomAnswer.equals("石头") ){

draw = true;

}

else if (playerAnswer.equals("剪刀") && computerRandomAnswer.equals("剪刀") ){ draw = true;

}

else if (playerAnswer.equals("布") && computerRandomAnswer.equals("布")){ draw = true;

}

else {

}

if (draw){

System.out.println("计算机出的是" + computerRandomAnswer +

",您出的是" + playerAnswer + "。这次平了!");

}

return draw;

}

private static boolean IsPlayerWin(String computerRandomAnswer,String playerAnswer){ boolean win = false;

if (playerAnswer.equals("石头") && computerRandomAnswer.equals("剪刀") ){ win = true;

}

else if (playerAnswer.equals("剪刀") && computerRandomAnswer.equals("布") ){ win = true;

}

else if (playerAnswer.equals("布") && computerRandomAnswer.equals("石头")){ win = true;

}

else {

}

if (win){

System.out.println("计算机出的是" + computerRandomAnswer +

",您出的是" + playerAnswer + "。这次您赢了!");

}

return win;

}

private static String GetPlayerAnswer(String playerName){

String playerAnswer;

System.out.println(playerName + "请出拳!输入(石头,剪刀,布):");

Scanner sc = new Scanner(System.in);

playerAnswer = sc.next();

return playerAnswer;

}

private static String GetComputerRandomAnswer(){

String computerRandomAnswer = null;

int temp;

temp = (int)(Math.random()*3);

switch (temp)

{

case 0: computerRandomAnswer = "石头";break;

case 1: computerRandomAnswer = "剪刀";break;

case 2: computerRandomAnswer = "布";break;

}

return computerRandomAnswer;

}

private static String InputPlayerName(){

String name;

Scanner sc = new Scanner(System.in);

System.out.println("请输入您的姓名:");

name = sc.next();

return name;

}

private static void Welcome(String playerName){

System.out.println(playerName + "欢迎您来玩石头剪刀布游戏!");

}

private static void SayByeBye(String playerName){

System.out.println(playerName + "祝你好运,下次再来!");

}

}

6_21

/**

(游戏:豆机)豆机,也称为梅花瓶或高尔顿瓶,它是一个用来做统计实验的设备。

一个三角形状的均匀放置钉子的直立板子,球从板子口落下时碰到钉子,它有50%的机会落向左边或者右边。在板子底部的槽子中累积落下的球。

编写程序模拟豆机。程序提示用户输入球的个数以及机器的槽数。打印每个球的路径模拟它的下落。如某球的路径为LRLRLRR,R的个数为4,则它将落在第5个槽中。

变量分析:

1、定义String[] path,用于存储每个球的路径

2、定义int[] slots,用于存储每个槽中的球数

3、用随机函数产生0或者1,0代表球碰到钉子向左,1代表向右

过程分析:

1、输入球的个数和机器的槽数

2、根据球的个数numOfBalls循环放置球进行实验(循环numOfBalls次)

若机器的槽数为numOfSlots,则对于每个球将碰撞钉子n-1次后落入槽中(循环numOfSlots),

根据随机数0或者1逐步构造路径,同时统计落向右边的次数

3、输出结果

*/

import java.util.Scanner;

public class chap6_21{

public static void main(String[] args){

//实验准备阶段

String[] path = null;//用于记录每个球的路径,数组的大小等于球的个数

int[] whichSlots = null;//用于记录每个球落入到哪个槽中

int[] slots = null;//用于统计每个槽中的球个数,数组的大小等于槽数

int numOfBalls;//球数

int numOfSlots;//槽数

System.out.print("请输入实验的球数:");

numOfBalls = InputTheNumber();

System.out.print("请输入实验的槽数:");

numOfSlots = InputTheNumber();

path = new String[numOfBalls];

whichSlots = new int[numOfBalls];

slots = new int[numOfSlots];

//实验准备阶段结束

//模拟实验开始

Experiment(numOfBalls,numOfSlots,path,slots,whichSlots);

//模拟实验结束

//书写实验报告开始

ShowReport(numOfBalls,numOfSlots,path,slots,whichSlots);

//书写实验报告结束

}

private static void ShowReport(int numOfBalls,int numOfSlots,String[] path,int[] slots,int[] whichSlots){

System.out.print("本次豆机实验报告如下:");

System.out.print("\n实验次数:" + numOfBalls);

for (int i = 0; i < numOfBalls; i++ ) {

System.out.print("\n第" + i + "个球落入到"+ whichSlots[i] + "号槽中,其路径为:" + path[i]);

}

for (int j = 0; j < numOfSlots; j++ ){

System.out.print("\n第" + j + "号槽中的球数为:" + slots[j]);

}

}

//球落下时碰到的钉子的个数为(槽数-1)

private static void Experiment(int numOfBalls,int numOfSlots,String[] path,int[] slots,int[] whichSlots){

for (int i = 0; i < numOfBalls ; i++) {

path[i] = "";

int countR = 0;//统计R的数目

for (int j = 0; j < numOfSlots-1; j++ ){

char ch = SimulateBallSelect();

path[i] += ch;

if ('R' == ch){

countR++;

}

}

slots[countR]++;//球落入coutR槽,该槽的计数器增加1

whichSlots[i] = countR;//记录下该球落入的槽序号

}

}

private static char SimulateBallSelect(){

char ch = ' ';

int select = (int)(Math.random()*2);

if (0 == select){

ch = 'L';//球落向左边

}else {

ch = 'R';//球落向右边

}

return ch;

}

private static int InputTheNumber(){

int num;

Scanner sc = new Scanner(System.in);

num = sc.nextInt();

return num;

}

}

6_23

/**

(游戏:储物柜难题)一个学校有100个储物柜和100个学生。所有的储物柜在上学第一天

都是关着的。随着学生进来,第一个学生,用S1表示,打开每个柜子。然后,第二个学生,用S2表示,从第二个柜子开始,第二个柜子用L2表示,然后关闭其他的柜子。学生S3从

第三个柜子开始,然后改变每个第三个柜子(如果它是开的就关上,如果它是关的就打开)。学生S4从柜子L4开始,然后改变每个第四个柜子。学生S5从L5开始,然后改变每个第五个

柜子,依此类推,直到学生S100改变L100为止。

在所有学生都经过教学楼并且改变了柜子之后,哪些柜子是开的?编写程序找出答案。

提示:使用存放100个布尔型元素的数组,每个元素都表明一个柜子是开的(true)还是关的

(false)。初始状态时,所有的柜子都是关的。

分析:

问题很简单,只需遍历数组一次,就可输出结果。

需要如下3个步骤

1、初始状态,柜子均为关闭

2、100个学生分别改变柜子的状态

3、输出最终的结果

对步骤2进行详细分析:

为了表示的方便,100个柜子对应的序号为i:i = 0 (99)

step表示每个学生挑选柜子进行改变的因子。

第一个学生,改变的柜子i = 0 i = 1 i = 2 ... i = 99 step = 0

第二个学生,改变的柜子i = 1 i = 2 i = 3 ... i = 99 i = 0 step = 1

第三个学生,改变的柜子i = 2 i = 4 i = 6 ... i = 98 i = 0 step = 2

第四个学生,改变的柜子i = 3 i = 6 i = 9 ... i = 99 i = 2 i = 5 i = 8 ... i = 98 i = 1 i = 2 ... i = 97 i = 0 step = 3

第五个学生,改变的柜子i = 4 i = 8 ... i = 96 i = 0 step = 4

...

第j个学生, 改变的柜子i = j -1 i = (i+ step)mod 100 step = j -1 一直到i = 0 为止...

第100个学生,改变的柜子i = 99 i = 98 i = 97 ... i = 0

对步骤2进行设计

100个学生改变柜子状态,使用for循环for(int i = 0; i < 100; i++)

在循环体中分三种情况进行处理

1、if (i == 0 ) for (int j = 0; j < 100 ;j++) 柜子状态全部改变

2、else if (i == 99) 第99号柜子改变状态

3、else 从第i个柜子开始每第i个柜子改变状态,直到第0号柜子被改变为止。

*/

public class chap6_23{

public static void main(String[] args){

final int THE_NUMBER_OF_CABINETS = 100;//橱柜的数量

final int THE_NUMBER_OF_STUDENTS = 100;//学生的数量

boolean[] status_of_cabinets = new boolean[THE_NUMBER_OF_CABINETS];//橱柜的状态数组

InitCabinet(THE_NUMBER_OF_STUDENTS,status_of_cabinets);//橱柜状态数组初始化

ChangeCabinet(THE_NUMBER_OF_STUDENTS,status_of_cabinets);//学生改变柜子的状态

//ShowResult(THE_NUMBER_OF_STUDENTS,status_of_cabinets);

}

private static void ChangeCabinet(int length,boolean[] status){

for (int i = 0; i < length ; i++ ) {

if (0 == i){

System.out.println("第" + (i+1) + "个学生改变柜子的过程如下:");

for (int j = 0; j < length; j++){

System.out.print(j + ":" + (status[j] ? "开" : "关") + "-->");

status[j] = !status[j];//状态转换

System.out.print((status[j] ? "开" : "关") + ";");

if (0 == (j + 1) % 5) System.out.println();

}

}else if (i < length -1){

System.out.println("\n第" + (i+1) + "个学生改变柜子的过程如下:");

int k = i;

int count = 1;

while (0 != k){

System.out.print(k + ":" + (status[k] ? "开" : "关") + "->");

status[k] = !status[k];

System.out.print((status[k] ? "开" : "关") + ";");

count++;

k = (k + i) % 100;

if (0 == count % 5) System.out.println();

}

System.out.print(k + ":" + (status[k] ? "开" : "关") + "->");

status[k] = !status[k];

System.out.print((status[k] ? "开" : "关") + ";");

}else {

System.out.println("\n第" + (i+1) + "个学生改变柜子的过程如下:");

System.out.print(i + ":" + (status[i] ? "开" : "关") + "->");

status[i] = !status[i];//最后一名学生转换柜子状态,游戏结束

System.out.print((status[i] ? "开" : "关") + ";");

}

System.out.println("\n第" + (i+1) + "个学生改变柜子状态后的状态为:");

ShowResult(length,status);

}

}

private static void ShowResult(int length,boolean[] status){

for (int i = 0; i < length ; i++) {

System.out.print(i + ":" + (status[i] ? "开" : "关") + ";");

if (0 == (i+1) % 10){

System.out.println();

}

}

}

private static void InitCabinet(int length,boolean[] status){

for (int i = 0; i < length; i++){

status[i] = false;

}

}

}

7_11

/**

(游戏:九个正面和背面)一个3*3的矩阵中放置了9个硬币,这些硬币有些面向上,有些面向下。

可以使用3*3的矩阵中的0(正面)或1(反面)表示硬币的状态。下面是一些例子:000 101 110 101 100

101 001 100 110 111

000 100 001 100 110

每个状态都可以使用一个二进制数表示。例如前面的矩阵对应到数字

000010000 101001100 110100001 101110100 100111110

总共会有512种可能性。所以使用十进制数0,1,2,3,...,511来表示这个矩阵的所有状态。

编写一个程序,提示用户输入一个在0到511之间的数字,然后显示用字符H和T表示的

对应的矩阵。

如:

Enter a number between 0 and 511: 7

HHH

HHH

TTT

用户输入7,它代表的是000000111。因为0代表H而1代表T,所以输出正确。

分析:

该游戏可以分为如下三个步骤

1、显示9个硬币的初始状态

2、调整9个硬币的状态

3、显示9个硬币的状态

对于步骤2分析:

1、得到一个0到511之间的数字,int number

2、将number转化为二进制数,并根据该二进制数生成一个包含9个元素的一维数组int[] binary

3、根据binary修改硬币状态

*/

import java.util.Scanner;

public class chap7_11{

public static void main(String[] args){

int[][] coins = {{0,0,0},{0,0,0},{0,0,0}};//用于存储9个硬币的状态

int number;//用户输入的数字

ShowCoins(coins);//显示9个硬币的初始状态

Scanner sc = new Scanner(System.in);

System.out.println("\n请输入0到511之间的一个数字:");

number = sc.nextInt();

Change(coins,number);//根据用户输入的数字改变硬币的状态

ShowCoins(coins);//显示9个硬币的初始状态

}

private static void Change(int[][] coins,int number){

int[] binary = new int[9];//用于改变硬币状态的一维数组

ChangeBinary(binary,number);

/*

System.out.println("测试二进制转换:");

for (int i = 0; i < binary.length ; i++ ){

System.out.print(binary[i]);

}

*/

for (int i = 0; i < coins.length ; i++ ){

for (int j = 0; j < coins[i].length; j++){

coins[i][j] = binary[i*3+j];

}

}

}

private static void ChangeBinary(int[] binary,int number){

int temp = number;

int j = 8;

while (temp > 0)

{

binary[j--] = temp % 2;

temp = temp / 2;

if (j < 0) break;//本程序并没有对传进来的number做限定,如果number数字过大,位数不够就结束。

}

}

private static void ShowCoins(int[][] coins){

for (int i = 0; i < coins.length ; i++) {

System.out.println();

for (int j = 0; j < coins[i].length; j++){

if (0 == coins[i][j]){

System.out.print("H");

}else{

System.out.print("T");

}

}

}

}

}

7_20

/**

(游戏:连接四子)连接四子是一个两个人玩的棋盘游戏,在游戏中,玩家轮流将有颜色的棋子放在

一个六行七列的垂直悬挂的网格中。

程序设计基础试题库

练习题一Visual FoxPro 基础 、选择题 1. 关系数据库管理系统应能实现的专门关系运算包括___c __________ A 显示、打印、制表B关联、更新、排序 C 选择、投影、连接D排序、索引、统计 2. 关系是指__b__。 A 属性的集合B元组的集合 C 实例的集合 D 字段的集合 3. 如果把学生看成实体,某个学生的姓名叫“杨波”,则“杨波”应看成是___b ______ 。 A)属性型B )属性值C )记录型D )记录值 4. 关系数据库系统中所使用的数据结构是 _______ d ___ 。 A)图B )树C )表格D )二维表 5. 对表进行水平方向的分割用的运算是 _______ b ___ 。 A)交B )选择C )投影D )连接 6. 下列数据库技术的术语与关系模型的术语的对应关系中_______ d _____ 是正确的。 A)实例与关系 B )字段与元组C )记录与属性 D )记录类型与关系模式 7. 下列关于数据库系统的叙述中,正确的是 _____ c _____ 。 A)数据库系统中数据的一致性是指数据类型一致 B)数据库系统只是比文件系统管理的数据更多 C)数据库系统减少了数据冗余 D数据库系统避免了数据冗余 8. 关系数据模型 ______ d ___ 。 A)只能表示实体间的1:1联系 B)只能表示实体间的1:n C只能表示实体间的m:n D 可以表示实体间的上述三种联系 9. 在一个关系中如果有这样一个属性存在,它的值能惟一地标识关系中的每一个元组,称

这个属性为 _____ a____ 。 A)关键字B )主属性C )数据项D )主属性值 10. 关系数据库管理系统中的元组是______ b ____ 。 A)关系中的垂直方向的列 B )关系中的水平方向的行 C属性或属性的组合 D )以上的答案均不正确 11. 从数据库的整体结构看,数据库系统采用的数据模型有_________ a __ 。 A)层次模型、网状模型和关系模型 B)层次模型、网状模型和环状模型 C)网状模型、链状模型和层次模型 D链状模型、关系模型和层次模型 12. 设有属性A B、C D以下表示中不是关系的是___________ d__。 A)R( A) B )R( A, B)C )R (A, B, C, D) D )R (A X B X C X D) 13. 若实体间联系是M N的,则将联系类型_________ a___ 。 A)也转换为关系模型 B)属性加入任一个关系模式中 C)属性加入N端实体类型相应的关系模式中 D)属性加入M端实体类型相应的关系模式中 14. 数据库系统的构成为数据库、计算机硬件系统、用户和________ a ____ 。 A 数据库管理系统 B 操作系统 C 数据集合 D 文件系统 15. 层次型、网状型和关系型数据库划分原则是________ c ___ 。 A 文件大小 B 记录长度 C 数据之间的联系 D 联系的复杂程度 16. 在数据库设计中用关系模型来表示实体和实体之间的联系,关系模型的结构是 _____ d ___ 。 A 封装结构 B 层次结构 C 网状结构 D 二维表结构 17. 在关系模型中,实现“关系中不允许出现相同的元组”的约束是通过__a ________ 。 A 主键 B 超键 C 外键 D 候选键 18. 层次模型不能直接表示 ______ b __ 关系。 A 1:1 B m:n C 1:m D 1:1 和1:m 19. DBAS旨的是_____ d____ 。

高中信息技术《算法与程序设计》试题

高中信息技术《算法与程序设计》试题 一、单选题(每小题3分,20小题,共60分) 1、用计算机解决问题时,首先应该确定程序“做什么?”,然后再确定程序“如何做?”请问“如何做?”是属于用计算机解决问题的哪一个步骤?() A、分析问题 B、设计算法 C、编写程序 D、调试程序 2、在调试程序过程中,下列哪一种错误是计算机检查不出来的?() A、编译错误 B、执行错误 C、逻辑错误 D、任何错误计算机都能检查出来 3、下列关于算法的叙述中,错误的是() A、一个算法至少有一个输入和一个输出 B、算法的每一个步骤必须确切地定义 C、一个算法在执行有穷步之后必须结束 D、算法中有待执行的运算和操作必须是相当基本的。 4、流程图中表示判断的是()。 A、矩形框B、菱形框C、圆形框D、椭圆形框 5、任何复杂的算法都可以用三种基本结构组成,下列不属于基本结构的是() A、顺序结构 B、选择结构 C、层次结构 D、循环结构 6、能够被计算机直接识别的语言是() A、伪代码 B、高级语言 C、机器语言 D、汇编语言 7、在VB语言中,下列数据中合法的长整型常量是() A、08A B、2380836E C、88.12345 D、1.2345E6 8、求Mid(“ABCDEFG”,3,2)的结果是() A、“ABC” B、“CD” C、“ABCDEF” D、“BCD” 9、表达式 A+B+C=3 OR NOT C<0 OR D>0 当A=3,B=4,C=-5,D=6时的运算结果是() A、0 B、1 C、TRUE D、FALSE 10、在循环语句 For x=1 to 100 step 2 …… Next x 中,x能达到的最大值是() A、100 B、99 C、98 D、97 11、在下列选项中,不属于VB的对象的是() A、窗体的背景颜色 B、命令按钮 C、文本框 D、标签 12、在调试程序的时候,经常要设置断点,设置断点的快捷键是()

JAVAWEB期末复习题

第1章WEB开发环境 (1)下列关于WEB开发说法正确的是。 ABCD A)Web是图形化的和易于导航的 B)Web与平台无关 C)Web是分布式的 D)Web 是动态的 (2)下列关于Tomcat说法正确的是。 ABCD A) Tomcat是一种编程语言 B) Tomcat是一种开发工具 C) Tomcat是一种编程思想 D) Tomcat是一种开编程规范 (3)下列关于Tomcat个目录说法错误的是。 E E) work目录——包含web项目示例,当发布web应用时,默认情况下把web 文件夹放于此目录下 (4)下列关于HTTP协议说法正确的是。 ABCDE A) HTTP是一种请求/响应式的协议 B) HTTP请求消息中Accept表示浏览器可接受的MIME类型 C) HTTP请求消息中Accept-Encoding表示浏览器能够进行解码的数据编码方式 D) HTTP请求消息中Accept-Language表示浏览器所希望的语言种类 E) HTTP请求消息中Host表示初始URL中的主机和端口。 (5)下列对于JSP说法中正确的是。ABCDE A) JSP是Sun公司推出的新一代站点开发语言 B) JSP完全解决了目前ASP、PHP的一个通病——脚本级执行 C) JSP将内容的生成和显示进行分离 D) JSP强调可重用的组件 E) JSP采用标识简化页面开发 第2章JSP编译指令 (1)下列关于JSP编译指令说法错误的是。 C C)编译指令向客户端产生任何输出 (2)下面关于page指令说法中错误的是。 B B)一个JSP页面只能包含一个page指令 (3)下面关于page指令的属性说法错误的是。 DE D)session属性制定此页面是否参与HTTP会话。默认值false E)errorpage属性指示当前页面是否为其他页的errorpage目标 (4)下列说法中正确的是。 ABDE A)include指令通知容器将当前的JSP页面中内嵌的、在指定位置上的资源内容包含 B)include指令中file属性指定要包含的文件名 D)Taglib指令允许页面使用者自定义标签 E)你必须在使用自定义标签之前使用<% @ taglib %>指令 (5)下列说法中错误的是。 B B)<%-- This comment will not be visible in the page source --%>会在客户端的HTML源代码中产生和上面一样的数据

《程序设计基础》试卷B及答案

黄淮学院计算机科学系2007-2008学年度第一学期 期末考试《程序设计基础》B 卷 注意事项:本试卷适用于计科系06级本科计算机科学与技术专业学生。 1.__ ____函数是程序启动时惟一的入口。 2.算法的复杂性包含两方面: 和 。 3.已知 char c= 'a' ; int x=2,k; 执行语句k=c&&x++ ; 则x 为 ,k 为 。 4.数值0x34对应的十进制为 。 5.已知int a ; 则表达式”(a=2*3 , 3*8), a*10”的结果为_ _ ____,变量a 的值为___ ___。 6.面向对象程序开发步骤为: 、 和面向对象实现。 1.下列程序设计语言中( )是面向对象语言。 A. FORTRAN B. C 语言 C. C++ D. 汇编语言 2.下列关于注释的说法哪个是错误的( )。 A. 注释不是程序中的可执行语句 B. 注释对于程序的执行有很重要的意义 C. 注释将在程序的编译阶段被编译器剔除 D. 编程时在程序中添加适当的注释是一个良好的编程风格 3.算法设计应该遵守( )的设计原则。 A. 自底向上,逐步求精 B. 自顶向下,逐步求精 C. 自底向上,同步扩展 D. 自顶向下,同步扩展 4.下列语句执行后a 的值为( )。 int a=4, &z=a, k=3; a=k; z+=2; k++; A. 0 B. 4 C. 1 D. 5 5.以下程序执行后,屏幕输出为( )。 #include “iostream.h ” void fun(int d) {d++;} void main() { int d=3; fun(d); d++; cout<=’a ’)&&(d<=’z ’) B. ‘a ’<=d<=’z ’ C. (d>=’a ’)||(d<=’z ’) D. ‘A ’<=d<=’Z ’ 8.已知:int k=7, x=12; 则执行语句( )后x 的值为0。 A. x+=k-x%5; B. x+=(x-k%5); C. x%=(k-=5); D. (x-=k)-(k+=5); 9.运行下列程序,其输出结果为( )。 #include “iostream.h ” void main() { int x(5),y(5),z(5); y--&&++x&&z--||y++; cout<

程序设计基础试题和答案解析二

《程序设计基础》考试试卷二 1.1966年,Bohra和Jacopini提出的三种基本程序设计结构是:________ A.if、while和for; B. switch、do-while和for; C.while、do-while和for; D.顺序结构、分支结构和循环结构。 2.算法的特征不包括:______。 A.有穷性 B.可行性 C.确定性 D.有1个或者多个输入。 3.C语言源程序的基本组成单位是______。 A.函数 B. 语句 C. 声明和语句 D. 文件 4.下列标识符中,只有______是合法的。 A.if B. 3ab C. Int D. A-4 5.下列常量中,只有______是合法的。 A.3e-0.3 B. ‘abc’ C. 02a1 D. ‘\377’ 6.下列说法中正确的是:______。 A.C语言中的for语句的三个表达式都可以省略,而且分号也可以省略。 B.宏替换比函数调用的执行速度慢。 C.实质上,C语言中的指针就是一个变量的地址。 D.C语言中的任何函数都可以由程序员命名。 7.C语言中,运算对象必须是整型的运算符是_______。 A./ B. % C. + D. - 8.以下叙述中错误的是_______。 A.C语句必须以分号结束 B.复合语句在语法上被看作一条语句 C.空语句出现在任何位置都不会影响程序运行 D.赋值表达式末尾加分号就构成赋值语句 9.以下叙述中正确的是_______。 A.调用printf函数时,必须要有输出项 B.使用putchar函数时,必须在之前包含头文件stdio.h C.在C语言中,整数可以以十二进制、八进制或十六进制的形式输出 D.调用getchar函数读入字符时,可以从键盘上输入字符所对应的ASCII码10.以下关于函数的叙述中正确的是_______。 A.每个函数都可以被其它函数调用(包括main函数) B.每个函数都可以被单独编译 C.每个函数都可以单独运行 D.在一个函数内部可以定义另一个函数 11.有以下程序段typedef struct NODE{ int num; struct NODE *next;

历年算法与程序设计学业水平考试真题(带答案)

一、选择题 1、流程图是描述()的常用方式。 A、程序 B、算法 C、数据结构 D、计算规则 2、下面不属于算法描述方式的是()。 A、自然语言 B、伪代码 C、流程图 D、机器语言 3、以下运算符中运算优先级最高的是()。 A、+ B、^ C、>= D、* 4、某程序中三个连续语句如下: a=1 b=2 c=b+a 它属于() A、顺序结构 B、选择结构 C、循环结构 D、以上三种都不是 5、穷举法的适用范围是() A、一切问题 B、解的个数极多的问题 C、解的个数有限且可一一列举 D、不适合设计算法 6、在现实生活中,人工解题的过程一般分为() A、理解分析问题→寻找解题方法→用工具计算→验证结果 B、寻找解题方法→理解分析问题→用工具计算→验证结果 C、用工具计算→验证结果→寻找解题方法→理解分析问题 D、用工具计算→验证结果→理解分析问题→寻找解题方法 7、下列关于算法的特征描述不正确的是() A、有穷性:算法必须在有限步之内结束 B、确定性:算法的每一步必须确切的定义 C、输入:算法必须至少有一个输入 D、输出:算法必须至少有一个输出 8、下列哪一个不是用于程序设计的软件() A、BASIC B、C语言 C、Word D、Pascal 9、下列可以作为合作变量名的是() A、a7 B、7a C、a-3 D、8 10、编程求1+2+3+........+1000的和,该题设计最适合使用的控制结构为()。 A、顺序结构 B、分支结构 C、循环结构 D、选择结构 11、下列步骤不属于软件开发过程的是() A、任务分析与系统设计 B、软件的销售 C、代码编写与测试 D、软件测试与维护12.以下程序段运行时,语句k=k+1 执行的次数为()次。 k=-10 do k=k+1 loop while(until)k=0 A. 9 B. 10 C. 11 D. 12 13.已知x=6, y=5, 则以下运算结果为True 的是() A.Not(x>y) B. (x<5)or(y>6) C. (x>=6)And(y>=5) D. Not(x>4) 14.模块化程序设计方法反映了结构化程序设计的()基本思想。 A、自顶向下,逐步求精 B、面向对象 C、自定义函数、过程 D、可视化编程 15、一位同学想编程解决“韩信点兵”的问题,他制定的如下工作过程中,最恰当的是() A、设计算法,编写程序,提出问题,运行程序,得到答案

JavaWeb程序设计 习题参考答案(第7章)

第七章监听和过滤 1、调用ServletContext的getAttribute()方法时,会触发哪个方法调用?(假设有关联的 监听器) A、ServletContextAttributerListener的attributeAdded()方法 B、ServletContextAttributeListener的attributeRemove()方法 C、ServletContextAttributerListener的attributeReplace() D、不会调用任何监听方法 参考答案:D 2、调用HttpSession的removeAttribute()方法时,会触发哪个方法调用?(假设有关联的监听器) A、HttpSessionListener的attributeRemove()方法 B、HttpSessionActivateionListener的attributeRemove()方法 C、HttpSessionBindingListener的attributeRemove() D、HttpSessionAttributerListener的attributeRemove 参考答案:D 3、调用HttpServletRequest的setAttribute()方法时,会触发哪个方法调用?(假设有关联的监听器) A、ServletRequestAttributeListener的attributeAdded()方法 B、ServletRequestAttributeListene的attributeReplaced()方法 C、ServletRequestAttributeListene的attributeRemove()方法 D、ServletRequestAttributeListene的attributeSetted()方法 参考答案:A 4、在web.xml中使用什么元素配置监听器 A、 B、 C、 D、 参考答案:B 5、下述代码定义了两个过滤器

算法与程序设计会考复习题

《算法与程序设计》模块会考复习题 一.单选题 1. java方法重载时参数不可能出现的情况是____D______。P67 A.参数的个数不同 B.参数的个数相同而参数的类型不同 C.参数不完全对应相同D.参数完全对应相同 2. 运行Java程序需要的工具软件所在的目录是___A_______。P16 A.JDK的bin目录B.JDK的demo目录 C.JDK的lib目录D.JDK的jre目录 3. J_HelloWorld.java 的文件内容如下: class J_HelloWorld { public static void Main(String args[]) M不应大写 { System.out.println(" Hello World "); } } 下面说法正确的是____B______。 A.J_HelloWorld.java无法通过编译,因为main方法的声明方式不对 B.J_HelloWorld.java可以通过编译,但程序运行时出现“程序中没main方法”的异常C.J_HelloWorld.java可以通过编译,但无法运行,因为该文件没有public类 D.J_HelloWorld.java可以通过编译并正常运行,结果输出字符串“Hello World” 4. 逻辑表达式!(3/2==1.5)&& 9<3|| 9>3的运算结果为_____A_______。 P9 A.true B.false C.表达式有错D.条件不足 5. 下列可以将变量x和y的值互换的语句是___B______。P35 A.x=y;y=x; B.z=x;x=y;y=z; C.x=z;z=y;y=x; D. x=(x+y)/2;y=(x-y)/2; 6. 执行完下面程序片段之后,下面结论正确的是___B_____。 P43 int a,b,c; a=1;b=2; c=(a+b)>3 ? a++:b++; A.a的值是2,b的值是3 B.a的值是1,b的值是3 C.a的值是1,b的值是2 D.c的值是false。 7. 下面程序片段输出的是___C_______。应使用关系运算符== int a=3,b=1; if(a=b)

JAVA WEB程序设计第4章

《Java Web程序设计》课程第4章章节检测 一、选择题:(每题4分,共40分) 1、假设myObj是一个对象的引用,ml()是该对象上一个合法的方法。下面的JSP结构哪个是合法的?(B) A.<%myObj.ml()%> B.<%=myObj.ml()%> C.<%myObj.ml();%> D.<%=myObj.ml();%> 2、说明下面代码哪些是合法的JSP结构?(BC) A.<%=myObj.ml();%> B.<%int x=4,y=5;%> C.<%!Int getI(int i){return i;}%> D.<%myObj.ml();%> 3、下面哪个page指令是合法的?(A) A.<%@page pageEncoding="utf-8"%> B.<%!page pageEncoding="utf-8"%> C.<%page pageEncoding="utf-8"%> D.<%@Page pageEncoding="utf-8"%> 4、下面哪个page指令是合法的?(B) A.<%@page import="java.util.*java.text.*"%> B.<%@page import="java.util.*,java.text.*"%> C.<%@page import="java.util.*","java.text.*"%> D.<%@page buffer="true"%> 5、下面哪些是合法的JSP隐含变量?(CD) A.stream B.context C.exception D.application 6、下面关于JSP生命周期方法,哪个是正确的?(A) A.只有jspInit()可以被覆盖 B.只有jspDestroy()可以被覆盖 C.jspInit()和jspDestroy()都可以被覆盖 D.jspInit()、_jspService()和jspDestroy()都可以被覆盖 7、下面哪个JSP标签可以再请求时把另一个JSP页面的结果包含到当前页面中?(B) A.<%@page import%> B. C. D.<%@include%> 8、在一个JSP页面中要把请求转发到view.jsp页面,下面哪个是正确的?(B) A. B. C. D. 9、下面哪个说法是正确的?(A) A.<%@include file="right.jsp?name=hacker"%>语法结构是正确的 B.<%@include file="<%=str%>"%>语句是合法的 C.<%@include file="right.jsp"%>属于动态包含 D.以上都不正确 10、对于,下面哪个说法是正确的?(A) https://www.doczj.com/doc/4618740236.html,值必须与中的id值一致 https://www.doczj.com/doc/4618740236.html,值必须与中的name值一致 C.property值必须与类UserInfo中的属性username一致 D.property值不必与类UserInfo中的属性username一致

程序设计基础试题_03_答案.doc

学院领导 审批并签名 A / B卷 广州大学 学年第学期考试卷 课程高级语言程序设计考试形式(开/闭卷,考试/查)学院系专业班级学号姓名 分数 评分 一:选择题(每题3分,共60分) (1)若有以下定义: char a; int b; float c; double d; 则表达式a*b+d-c值的类型为(A)

A) double B) float C) int D) char (2)设a=1,b=2,c=3,d=4,则表达式:a=10 or a<=0 B)a>=10│a<=0 C)a>=10││a<=0 D)a>=10 ││ a<=0 (7)下列可 作为C语言赋值语句的是(C) A) x=3,y=5 B) a=b=6 C) i--; D) y=int(x); (8)设i是int型变量,f是float型变量,用下面的语句给这两个变量输 入值: scanf(i=%d,f=%f,&i,&f); 为了把100和765.12分别赋给i和f,则正确的输入为(A) A) 100765.12 B) i=100,f=765.12 C) 100765.12 D) x=100y=765.12 (9)给出以下定义: char x[ ]=abcdefg;

程序设计基础练习题(全答案版)

《程序设计基础——C#.NET》练习 参考答案: 一、选择题 https://www.doczj.com/doc/4618740236.html,的目的就是将____A____作为新一代操作系统的基础,对互联网的设计思想进行扩展。A.互联网 B. Windows C. C# D. 网络操作系统 2.假设变量x的值为10,要输出x值,下列正确的语句是__C__。 A.System.Console.writeline(“x”) B. System.Cosole.WriteLine(“x”) C. System.Console.WriteLine(“x={0}”,x) D. System.Console.WriteLine(“x={x}”) 3.要退出应用程序的执行,应执行下列的_A___语句。 A. Application.Exit(); B. Application.Exit; C. Application.Close(); D. Application.Close; 4.关于C#程序的书写,下列不正确的说法是__D________。 A.区分大小写 B.一行可以写多条语句 C.一条语句可以写成多行 D.一个类中只能有一个Main()方法,因此多个类中可以有多个Main()方法 5. 在C#语言中,下列能够作为变量名的是__C__。 A.if B. 3ab C. b_3a D. a-bc 7. 能正确表示逻辑关系“a≥5或a≤0”的C#语言表达方式是__D__。 A.a>=5 or a<=0 B. a>=5|a<=0 C. a>=5&&a<=0 D. a>=5||a<=0 8. 以下程序的输出结果是___C_____。 A. 5 B. 4 C. 6 D. 不确定 9. If语句后面的表达式应该是__A___。 A.逻辑表达式 B. 条件表达式 C. 算术表达式 D. 任意表达式10.有如下程序:

算法与程序设计填空题10套

第一套 1.有如下程序段: x=5 y=6 p=Not(x+y=11) 该程序段运行后,P的值是(1)False或0。 2.有如下程序段: x=5 y=10 z=12 if x+y<=z Or y+z<=x Or x+z<=y then a="False"else a="True" 该程序段运行后,a的值为(1)True。 3.有如下程序段: s=0 for i=1to5 s=s+i*i next i 该程序段运行后,s的值为(1)55。 4.程序填空 随机产生10个0~100之间的整数,按从小到大的次序排序并输出。为了实现这一目标,完善下面 的VB程序,在划线处填入合适的语句或表达式,完成程序设计(流程图参见图12-3)。

图12-3 sub command1_click() const n=10 dim i,j,t as integer dim a(1to10)as integer for i=1to10 ______(1)__a(i)=int(Rnd*101)________ next i For i=1To n-1 For j=i+1To n If______(2)_a(i)>a(j)_____Then k=a(i):a(i)=a(j):a(j)=k End If Next j Next i

For i=1To n List1.AddItem Str(a(i)) Next i 第二套 1.有如下程序段: x=5 y=6 t=x x=y y=t 该程序段运行后,y的值为(1)5。 2.有如下程序段: x=5 y=-20 if not x>0then x=y-3else y=x+3 该程序段运行后,x的值为(1)5。 3.有如下程序段: e=0:f=1 for i=1to3 e=e+f f=f+e next i 该程序段运行后,f的值为(1)13。 4.程序填空 有30个人,其中有男人、女人和小孩。他们在一家饭馆里花去500元。已知,每个男人花30元,每个女人花20元,每个小孩花10元。问男人、女人、小孩各为多少人? 为了实现这一目标,完善下面的VB程序,在划线处填入合适的语句或表达式,完成程序设计。 sub command1_click() dim man,woman,child,s as integer for man=1to15 for woman=1to23 child=_______(1)_30-woman-man_ s=30*man+20*woman+10*child if___(2)s=500and child>0then list1.additem str(man)+""+str(woman)+""+ str(child) end if

JAVA WEB程序设计报告

南京晓庄学院《JAVA WEB程序设计》 课程报告 题目: 《学生成绩管理系统》 姓名: 戴佳伟 学号: 班级: 14软件工程3班 完成时间 成绩: 数学与信息技术学院 2016年5月

目录 1.系统需求分析 (3) 2.相关技术与原理介绍 (4) 3.系统分析与设计 (5) 系统功能分析 (5) 系统结构分析 (7) 数据库设计 (9) 4.系统实现 (11) 教师信息管理模块实现 (11) 成绩信息管理模块实现 (13) 5.总结与体会 (16) 工作总结 (16) 改进设想 (1)

1.系统需求分析 本系统模拟学校对日常教务信息管理过程,开发学生信息管理系统。该系统可实现对教务资源中的学生信息、教师信息、课表信息、课程信息四个模块进行查询及处理操作。系统面向的用户分为:管理员、教师、学生。根据访问角色的不同,在系统中应体现出对教务资源的访问的权限的不同,其中管理员权限最大,拥有增、删、改、查的权限,而教师和学生角色仅拥有查及限制性的增、改权限,因此在这里需要对系统进行需求分析。 系统功能模块分为六大模块,它们包括: 1.登录模块 该模块实现用户登录、密码修改功能。用户可选择管理员、教师或学生身份进行登录,并可修改登录密码。 2.学生信息管理 该模块实现学生信息查询、学生信息添加、学生信息修改、学生信息删除功能。 3.教师信息管理 该模块实现教师信息查询、教师信息添加、教师信息修改、教师信息删除。 4.课程信息管理 该模块实现课程信息查询、课程信息添加、课程信息修改、课程信息删除。 5.选课信息管理 该模块实现学生选课查询、学生选课添加、学生选课删除、学生选课修改。 6.成绩信息管理 该模块实现学生成绩查询、学生成绩修改、学生成绩录入、学生成绩删除。

程序设计基础试题(附答案)

程序设计基础复习题 一、单选 1、一个完整的计算机系统应该包括() A、系统软件和应用软件 B、计算机及其外部设备 C、硬件系统和软件系统 D、系统硬件和系统软件 2、“裸机”的概念是指() A、正在进行设计还没有组装好的计算机 B、已经组装好但还没有安装任何软件的计算机 C、仅安装了操作系统的计算机系统 D、安装了文字处理软件但没有安装专用数据处理系统的计算机 3、世界上第一台电子数字计算机研制成功的时间是() A、1936年 B、1946年 C、1956年 D、1970年 4、CASE的含义是() A、计算机辅助设计 B、计算机辅助制造 C、计算机辅助教学 D、计算机辅助软件工程5、当前广泛使用的微型计算机是() A、第一代 B、第二代 C、第三代 D、第四代 6、当代计算机的体系结构称为是() A、冯·诺依曼机 B、非冯·诺依曼机 C、图灵机 D、比尔盖茨机 7、硬盘是() A、输入设备 B、输出设备 C、存储设备 D、计算设备 8、下面4句话中,最准确的表述是() A、程序=算法+数据结构 B、程序是使用编程语言实现算法 C、程序的开发方法决定算法设计 D、算法是程序设计中最关键的因素

9、计算机能直接执行的语言是() A、机器语言 B、汇编语言 C、高级语言 D、目标语言 10、解释程序的功能是() A、将高级语言程序转换为目标程序 B、将汇编语言程序转换为目标程序 C、解释执行高级语言程序 D、解释执行汇编语言程序 11、下面4种程序设计语言中,不是面向对象式语言的是() A、JAVA B、Object Pascal C、Delphi D、C 12、不是C语言的基本数据类型是() A、int B、double C、char D、bool 13、在C语言中,为了求两个整数相除之后得到的余数,可以使用运算符() A、/ B、% C、* D、++ 14、数据的逻辑结构分为() A、纯属结构和非线性结构 B、顺序结构和非顺序结构 C、树型结构和图型结构 D、链式结构和顺序结构 15、用链表表示纯属表的优点是() A、便于随机存取 B、便于插入和删除操作 C、花费的存储空间较顺序存储少 D、元素的物理顺序与逻辑顺序相同 16、栈的最主要特点是() A、先进先出 B、先进后出 C、两端进出 D、一端进一端出 17、下面4句结论只有一句是错误的,它是()

《算法与程序设计》试题带答案

《算法与程序设计》试题 学校:_____________ 班级:____________ 学号:____________ 姓名:____________ 一、单选题(每小题3分,20小题,共60分) 1、用计算机解决问题时,首先应该确定程序“做什么?”,然后再确定程序“如何做?”请问“如何做?”是属于用计算机解决问题的哪一个步骤?() A、分析问题 B、设计算法 C、编写程序 D、调试程序 2、在调试程序过程中,下列哪一种错误是计算机检查不出来的?() A、编译错误 B、执行错误 C、逻辑错误 D、任何错误计算机都能检查出来 3、下列关于算法的叙述中,错误的是() A、一个算法至少有一个输入和一个输出 B、算法的每一个步骤必须确切地定义 C、一个算法在执行有穷步之后必须结束 D、算法中有待执行的运算和操作必须是相当基本的。 4、流程图中表示判断的是()。 A、矩形框B、菱形框C、圆形框D、椭圆形框 5、任何复杂的算法都可以用三种基本结构组成,下列不属于基本结构的是() A、顺序结构 B、选择结构 C、层次结构 D、循环结构 6、能够被计算机直接识别的语言是() A、伪代码 B、高级语言 C、机器语言 D、汇编语言 7、在VB语言中,下列数据中合法的长整型常量是() A、08A B、2380836E C、88.12345 D、1.2345E6 8、求Mid(“ABCDEFG”,3,2)的结果是() A、“ABC” B、“CD” C、“ABCDEF” D、“BCD” 9、表达式 A+B+C=3 OR NOT C<0 OR D>0 当A=3,B=4,C=-5,D=6时的运算结果是() A、0 B、1 C、TRUE D、FALSE

西交大《程序设计基础》试题及答案

西交大《程序设计基础》试题及答案 一、单项选择题(本大题共20小题,每小题2分,共40分) 1.int a[10];合法的数组元素的最小下标值为()。A:10 B:9 C:1 D:0 答案:D 2.以下运算符中优先级最低的是()。A:&& B:& C:|| D:| 答案:C 3.若使用一维数组名作函数实参,则以下正确的说法是()。A:必须在主调函数中说明此数组的大小B:实参数组类型与形参数组类型可以不匹配C:在被调用函数中,不需要考虑形参数组的大小D:实参数组名与形参数组名必须一致答案:A 4.已知函数的调用形式:fread(buffer,size,count,fp);其中buffer 代表的是()。 A:一个整数,代表要读入的数据项总数B:一个文件指针,指向要读的文件C:一个指针,指向要读入数据的存放地址D:一个存储区,存放要读的数据项答案:C 5.对以下说明语句int a[10]={6,7,8,9,10}; 的正确理解是()。A:将5个初值依次赋给a[1]至a[5] B:将5个初值依次赋给a[0]至a[4] C:将5个初值依次赋给a[6]至a[10] D:因为数组长度与初值的个数不相同,所以此语句不正确答案:B 6.下列程序的输出结果是()。main() { int x=1,y=0,a=0,b=0; switch(x) { case 1:switch(y) { case case } case 2:a++;b++;break; case 3:a++;b++;break; } printf(\} A:a=1,b=0 B:a=2,b=1 C:a=1,b=1 D:a=2,b=2 答案:B 7.下列程序的输出结果为()。main() {int m=7,n=4; float a=38.4,b=6.4,x; x=m/2+n*a/b+1/2; printf(\ 0:a++;break; 1:b++;break; } A:27.000000 B:27.500000 C:28.000000 D:28.500000 答案:A 8.若k为int型变量,则以下程序段的执行结果是()。k=-8567; printf(\A:格式描述符不合

(完整版)程序设计基础试题_10_答案

广州大学学年第学期考试卷 课程高级语言程序设计考试形式(开/闭卷,考试/查) 学院系专业班级学号姓名 一、填空题(每空1分,共10分) 1.C源程序的基本单位是(函数)。 2.一个C源程序中至少应包含一个(main()函数)。 3.若a和b均是int型变量,且a和b的初值均为5,则计算表达式a+=b++ 后,a的值为(10 ),b的值为( 6 )。 4.若a、b和c均是int型变量,则计算表达式a=(b=4)+(c=2)后,b值为( 4 ),c 值为( 2 )。 5.表达式8.2-2/3 的计算结果是(8 )。 6.在C语言中,整数可用三种数制表示,它们分别是(十进制)、(八进制)和(十六进制)。 二、程序计算题(每小题5分,共15分) 1. # define f(a) printf(“%d”,a) main() { int i,b[]={1,2,3,5,7,9,11,13,15},*p=5+b; for(i=3;i;i--) switch(i) { case 1: case 2: f(*p++); break;

case 3: f(*(--p)); } } 2. main() { int arr_sum(int arr[],int n); int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23}; int *p,total; int (*pt)( int arr[],int n); pt=arr_sum; p=a[0]; total=(*pt)(p,12); printf(“total=%d\n”,total); } arr_sum(int arr[],int n) { int i,sum=0; for(i=0;i

算法与程序设计习题

《算法与程序设计》模块练习题 一、单选题 1、模块化程序设计方法主要通过()来实现。 A.递归算法和递归程序 B.过程和函数的定义和调用 C.程序的循环结构 D.对象答案:B 2、text1.text的含义正确的是()。 A.text1是控件名称,text是控件属性 B.text1是窗体名称,text 是控件 C.text1是控件名称,text是方法 D.text1是控件属性,text是控 件答案:A 3、以下程序段运行后S的值是()。 s = 0 For i = 1 To 14 x = 2 * i - 1 If x Mod 3 = 0 Then s = s + 1 Next i A.0 B.4 C.5 D.14 答案:C 4、数列1,4,7,10,13,……的递推公式为()。 A.f(1)=1;f(n)=n+3 B.f(1)=1;f(n)=n*2-1 C.f(1)=1;f(n)=n*2+1

D.f(1)=1;f(n)=f(n-1)+3 答案:D 5、对于对象及其特征的错误理解是()。 A.对象都具有一个标识自己以区别其他对象的名字。 B.对象都具有自身的属性及其属性值。 C.对象一般只用数据表示属性,但不用代码表示行为。 D.对象都具有自身的行为(操作)。 答案:C 6、VB函数Left ()从字串左端取部分字串,那么Left("Visual Basic 6.0", 8)的值为()。 A.Visual B B.Visual C.Visual Ba D.asic 6.0 答案:A 7、程序段如下: c ="1234" For i = 1 To 4 Print _____, Next 如果要让程序运行后得到如下结果: 1 1 2 12 3 1234 则在下划线处应填入的内容为()。 A.Right(c,i) B.Left(c,i) C.Mid(c,i,1) D.Mid(c,i,i) 答案:B 8、若X = True,执行If X Then X = 0 Else X = 1后X的结果为()。

相关主题
文本预览
相关文档 最新文档