阅读下列说明和流程图,将应填入(n)处。
[流程图说明]
流程图1-1描述了一个算法,该算法将给定的原字符串中的所有前导空白和尾部空白都删除,但保留非空字符之间的空白。例如,原字符串“ File Name ”,处理后变成“File Name”。流程图1-2、流程图1-3、流程图1-4分别详细描述了流程图1-1中的框A,B,C。
假设原字符串中的各个字符依次存放在字符数组ch的各元素ch(1),ch(2),…,ch(n)中,字符常量KB表示空白字符。
流程图1-1的处理过程是:先从头开始找出该字符串中的第一个非空白字符ch(i),再从串尾开始向前找出位于最末位的非空白字符ch(j),然后将ch(i),…,ch(j)依次送入 ch(1),ch(2),…中。如果原字符串中没有字符或全是空白字符,则输出相应的说明。在流程图中,strlen是取字符串长度函数。
[问题]在流程图1-1中,判断框P中的条件可表示为:
i>(5)
第1题
阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。
【说明】
实现矩阵(3行3列)的转置(即行列互换)。
例如,输入下面的矩阵:
100 200 300
400 500 600
700 800 900
程序输出:
100 400 700
200 500 800
300 600 900
【函数】
int fun(int array[3][3])
{
int i,j,t;
for(i=0;(1);i++)
for(j=0;(2);j++)
{
t=array[i][j];
(3);
(4);
}
}
}
main()
{
int i,j;
int array[3][3]={{100,200,300},{400,500,600},{700,800,900}};
clrscr();
for (i=0;i<3;i++)
{
for(j=0;j<3;j++)
printf("%7d",array[i][j]);
printf("\n");
}
fun((5));
printf("Converted array:\n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
printf("%7d",array[i][j]);
printf("\n");
}
}
第2题
阅读下列说明和流程图,将应填入(n)处的语句写在对应栏内。
【说明】
设学生(学生数少于50人)某次考试的成绩按学号顺序逐行存放于某文件中,文件以单行句点“.”为结束符。下面的流程图用于读取该文件,并把全部成绩从高到低排序到数组B[50]中。
【流程图】
第3题
阅读以下说明及Visual Basic程序代码,将应填入(n)处的字句写在对应栏内。
[说明]
某银行新近开通外汇定期存款业务。为方便用户查询不同存款方式下的日利率、计算本利,特开发了日利率查询及本利计算程序,其运行窗口如下图所示。用户只要在界面上选择相应的存款方式(包括外汇币种、存期等),便可单击按钮一查询存款日利率。若输入一定数量的本金。程序还会根据所选择的存期计算并输出本利和。
在开发过程中,选择币种和存期的组合框(ComboBox)名分别为Combo1和Combo2,单旋钮 (CommandButton)“个人单位”和“金融机构”分别名为Option1和Option2,用于输入本金的文本框 (TextBox)名为Price,“输出日利率”和“计算本利和”按钮(CommandButton)分别名为Command1和 Command2。且已知,第i类币种、第j类存期之下,个人单位与金融机构的存款日利率分别存放于数组元素interestRate(i,j,0)和interestRate(i,j,1)中,其中i,j从0开始计数。
[Visual Basic代码]
Dim interestBate(50,10,2) As Single ’通用声明
Private Sub Form_Load()
…… ’为数组interestRate赋初值
End Sub
’根据所选择的币种、存期等信息确定日利率
Function getInterestRate()
Dim strCurrency, strTime As String, i, j, k, intDays As Integer
strCurrency = Combo1.Text
strTime = Combo2.Text
For i = 0 To Combol. ListCount - 1
If Combol.List(i) = strCurrency Then (1)
Next
For j = 0 To Combo2.ListCount - 1
IfCombo2.List(j) = strTime Then (1)
Next
If (2)=True Then
k=0
Else: k=1
End If
(3)= interestRate(i, j, k)
End Function
’输出日利率
Private Sub Commund1_Click()
MsgBox "日利率为" & getInterestRate()
End Sub
’输出本利和
Private Sub Command2_Click()
Dim strTime As String, intDays As Integer, sngCorpus, sngResult As Single
strTime = Combo2. Text
sngCorpus = CSng(Text1.Text)
(4) ’计算存款天数(以每月30天计)
Case "一个月" :intDays = 30
Case "三个月" :intDays = 90
Case "六个月" :intDays = 120
End Select
’计算并输出本利和
sngResult = sngCorpus +(5)
MsgBox "本利之和为:" & sngResult
End Sub
第4题
阅读以下说明和C语言函数,将应填入(n)处的字句写在对应栏内。
[说明]
若S和T是用结点大小为1的单链表存储的两个串,试设计一个算法找出S中第一个不在T中出现的字符。查找过程是这样的,取S中的一个字符(结点),然后和T中所有的字符一一比较,直到比完仍没有相同的字符时,查找过程结束,否则再取S中下一个字符,重新进行上述过程。
[函数]
typedef struct node {
char data;
struct node *next;
}LinkStrNode; //结点类型
typedef LinkStrNode *LinkString; //LinkString 为链串类型
LifikString S; //S 是链串的头指针
char SearchNoin ( LinkString S, LinkString T )
{//查找不在T中出现的字符
LinkStrNode *p, *q;
(1);
q=T;
while ((2))
{//取S中结点字符
while((3))//进行字符比较
q=q->next;
if(q==NULL) return (4);//找到并返回字符值
q=T;//指针恢复串T的开始结点
((5));
}
printf("there's no such character.");
return NULL:
}
第5题
被除数p和除数q之间的余数。
[C程序]
static int fun(int p,int q)
{ int x=0;
while (x<=p)
{ if (x == p)
return 0;
(5)
}
return (6)
}
第6题
阅读以下说明及Visual Basic程序代码,将应填入(n)处的字句写在对应栏内。
[说明]
我国现行使用的公民身份证号码有两种,分别遵循两个国家标准:〖GB 11643-1989〗和〖GB 11643-1999〗。〖CB 11643-1989〗中规定的是15位身份证号码,排列顺序从左至右依次为:六位数字地址码,六位数字出生日期码,三位数字顺序码,其中出生日期码不包含世纪数。〖GB 11643 -1999〗中规定的是18位身份证号码,是特征组合码,它由十七位数字本体码和一位数字校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位校验码。其中,校验码C由本体码按如下过程求得:
(1)计算校验码和S=a18W18+a17W17+…+a2W2,其中i表示18位身份证号,码每一位的序号,从右至左,最左侧为18,最右侧为1;ai表示身份证号码第i位上的号码;wi表示第i位上的权值,其值为2i-1模11的结果;
(2)计算校验码值R,其值为校验和模11的结果;
(3)根据下面对应关系找出校验码C:
由上述计算过程可以看出,18位身份证号码中可能包含非数字的字母X(代表数字10)。下面的应用程序基于这一算法实现了身份证号码的升位查询:
在开发过程中,显示新旧两种身份证号码的文本框(TextBox)分别名为Text1和Text2,“号码升位”按钮(CommandButton)名为Command1。
代码中使用到的字符串函数及功能说明如下:
(1)Len(s):获取字符串s的长度;
(2)Left(s,1):返回字符串s左端长度为1的子串;
(3)Right(s,1):返回字符串s右端长度为1的子串;
(4)Mid(s,p,1):返回字符串s从第P个字符开始长度为1的子串。
[Visual Basic代码]
’计算18位身份证号码
Private Sub Commandl_Click()
Dim code As String
Dim S As Integer
code = Textl. Text '提取15位身份证号码
If Len(code) < > 15 Then
MsgBox "ID 号码长度不正确,请检查!"
(1)
End If
code = Left(code, 6) + "19" + (2) (code, 9) '年份升位
S=0
For i = 18 To 2 Step -1 '计算校验码和
S = S + Clnf((3)) * (2 ^ (i - 1) Mod11)
Next i
(4) '计算校验码值
Select Case S '确定校验码
Case 0: code = code + "1"
Case 1: code = code + "0"
Case 2: code = code + "X"
Case Else: code = code + CStr((5))
End Select
Text2. Text = code '显示18位身份证号码
End Sub
第7题
阅读以下说明和C语言函数,将应填入(n)处的字句写在对应栏内。
【说明】
下面一段程序从给定的数组b中找出值最小的元素,并输出该元素的数组下标、内存地址minaddr以及元素值本身。函数findmin负责在给定的数组中查找最小值,并返回最小值所在的内存地址,函数有三个参数:array是所要处理的数组;size是数组的大小;index负责从函数返回具有最大值的元素在数组中的数组下标。请填充空白,使其成为一个合乎要求的完整程序。
【程序】
//程序开始
include<iostream.h>
int *findmin(int *array, int size, int &index);
void main()
{
/****** 变量定义部分 ***********/
int b[10] = {34, 34, 23, 89, 1, 2, 13, 42, 5, 54};
(1);
int idx;
/******* 寻找最小值 ************/
minaddr = findmin(b, sizeof(b)/sizeof(int), idx);
/******* 输出最小值的有关信息 ************/
cout << "Min value index: "<<idx<<end1
<<"Min value address: "<<minaddr<<end1
<<"Min value: "<<(2)<<end1;
}
/******* 函数findmin的定义部分 ************
int *findmin(int *array, int size, int &index)
{
int min = 0;//max 是当前具有最小值的数组元素下标值
for(int i = 1;(3); i++)
{
if(array[i]<(4))
min = i;
}
(5);
return array + min;//返回最小值所在内存地址
}
第8题
阅读以下说明和流程图,回答问题,并将解答填入对应栏内。
【说明】
求解约瑟夫环问题。算法分析:n个士兵围成一圈,给他们依次编号,班长指定从第w个士兵开始报数,报到第s个士兵出列,依次重复下去,直至所有士兵都出列。
【流程图】
【问题】
将流程图中的(1)~(5)处补充完整。
第9题
阅读以下说明和流程图,将应填入(n)处的字句写在对应栏内。
[说明]
下面的流程图用于计算一个英文句子中最长单词的长度(即单词中字母个数)MAX。假设该英文句子中只含字母、空格和句点“.”,其中句点表示结尾,空格之间连续的字母串称为单词。
[流程图]
第10题
阅读以下说明和JAVA2代码,将应填入(n)处的字句写在对应栏内。
【说明】
以下程序实现了利用鼠标任意移动该圆形的位置,仔细阅读代码和相关注释,将程序补充完整。
【代码6】
import java.awt.*;
import java.awt.event.*;
public class CIUSAMPLE extends Frame. implements MouseMotionListener, MouseListener
{
static CIUSAMPLE frm=new CIUSAMPLE ();
int x=70,y=60,posX=70,posY=60,dx,dy;
public static void main ( String args[])
{
frm.setTitle ("Dragging a circle");
frm.setSize ( 200,150 );
(1)
frm.addMouseMotionListener ( frm );
frm. setVisible ( true );
}
public void mousePressed ( MouseEvent e )
{
(2)
dy=e.getY () -posY;
}
public void mouseDragged ( MouseEvent e )
{
(3)
y=e.getY () -dy;
if ( dx>0 && dx<50 && dy>0 && dy<50 ) //如果指我落在正方形区域内
{
Graphics g=getGraphics ();
(4)
}
}
public void paint ( Graphics g )
{
g.setColor ( Color. pink ); // 设置绘图颜色为粉红
g.fillOval ( x,y,50,50 ); //以基准点为图形的左上角绘出圆形
(5)
posY=y;
}
public void mouseMoved ( MouseEvent e ) { }
public void mouseReleased ( MouseEvent e ) { }
public void mouseEntered ( MouseEvent e ) { }
public void mouseExited ( MouseEvent e ) { }
public void mouseClicked ( MouseEvent e ) { }
}
为了保护您的账号安全,请在“上学吧”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!