计算S是以原占为中心的正方体(每边长度为2)的边界,指向外侧.
计算
S是以原占为中心的正方体(每边长度为2)的边界,指向外侧.
计算
S是以原占为中心的正方体(每边长度为2)的边界,指向外侧.
A.5+4+3+2+1
B.5+4+3+2
C.4+3+2+l
D.4+3+2
(41)
A.5+4+3+2+1
B.5+4+3+2
C.4+3+2+1
D.4+3+2
问题描述:给定正整数序列x1,x2,…,xn要求:
①计算其最长递增子序列的长度s.
②计算从给定的序列中最多可取出多少个长度为s的递增子序列.
③如果允许在取出的序列中多次使用x1和xn,则从给定序列中最多可取出多少个长度为s的递增子序列.
算法设计:设计有效算法完成①、②、③提出的计算任务.
数据输入:由文件input.txt提供输入数据.文件第1行有1个正整数n,表示给定序列的长度.接下来的1行有n个正整数x1,x2,...,xn,
结果输出:将任务①、②、③的解答输出到文件output.txt.第1行是最长递增子序列的长度s.第2行是可取出的长度为s的递增子序列个数.第3行是允许在取出的序列中多次使用x1和xn时可取出的长度为s的递增子序列个数.
●试题三
阅读下列程序说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。
【说明】
下面的程序功能的功能是以行为单位对字符串按下面的条件进行排序。排序条件为:从字符串中间一分为二,右边部分按字符的ASCⅡ值降序排序,排序后左边部分与右边部分进行交换。如果原字符串长度为奇数,则最中间的字符不参加排序,字符仍放在原位置上
例如:位置:0 1 2 3 4 5 6 7
源字符串:h g f e a b c d
则处理后字符串:d c b a h g f e
函数ReadDat()实现从文件in.dat中读取数据(每行字符串长度均小于80),函数WriteDat()把结果dat输出到文件out.dat中。
【程序】
#include<stdio.h>
#include<siring.h>
#include<conio.h>
char dat[20][80];
void jsSort()
{
int i,j,k,strl;
char ch;
for(i=0;i<20;i++)
{
strl=strlen(dat[i]);
for(j= (1) ;j<strl;j++)/*对后半部分的字符串进行排序*/
for(k=j+1;k<strl;k++)
if((2) )
{
ch=dat[i][j];
dat[i][j]=dat[i][k];
dat[i][k]=ch;
}
for(j=0; (3) j++)/*前后两部分进行交换*/
{
ch=dat[i][j];
dat[i][j]=dat[i][(strl+1)/2+j];
dat[i][(strl+1)/2+j]=ch;
}
}
}
void main()
{
readDat();
jsSort();
writeDat();
}
readDat()
{
FILE*in;
int i=0;
char*p;
(4) ;
while(i<20 && fgets(dat[i],80,in)!=NULL)
{
p=strchr(dat[i],"\n");
if(p)*p=0;
i++;
}
fclose(in);
}
writeDat()
{
FILE*out;
int i;
clrscr();
out=fopen("out.dat","W");
for(i=0;i<20;i++)
{
printf("%s\n",dat[i]);
printf((5) );
}
fclose(out);
}
阅读以下说明及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
A.比较两个字符串的大小
B.计算s所指字符串占用内存字节个数
C.计算s所指字符串的长度
D.将s所指字符串复制到字符串t中
有以下函数 int fun(char *s) {char *t=s; while(*t++); return(t-s); } 该函数的功能是()。
A.比较两个字符的大小
B.计算s所指字符串占用内存字节的个数
C.计算s所指字符串的长度
D.将s所指字符串复制到字符串t中
有下列函数:int fun(char*s){char*t=s; while(*t++); return(t-s);}该函数的功能是()。
A.比较两个字符串的大小
B.计算s所指字符串占用内存字节的个数
C.计算s所指字符串的长度
D.将s所指字符串复制到字符串t中
有以下函数:int fun(char *s){ char *t = s; while (*t++); return (t-s);} 该函数的功能是()
A.比较两个字符串的大小
B.计算s所指字符串占用内存字节个数
C.计算s所指字符串的长度
D.将s所指字符串自制到字符串t中
A.将一个字符串首尾颠倒
B.计算字符串的长度
C.统计字符串中的空格个数
D.将字符串中的小写字母变成大写字母