编程题要求.docx
《编程题要求.docx》由会员分享,可在线阅读,更多相关《编程题要求.docx(23页珍藏版)》请在冰豆网上搜索。
编程题要求
VB编程练习题
说明:
做练习时,工程文件、标准模块及main过程可以自己创建,本练习只提供一个样例。
第一题
【问题描述】
请打开指定文件夹下的工程文件Count.vbp,并在标准模块Module1中的main过程中实现如下功能:
在给定的数据序列中,统计指定的关键字在序列中出现的次数,并将结果写入输出文件out.Txt中。
说明:
1.输出语句使用Print,若同一行上输出多个表达式,多个表达式采用紧凑格式输出。
2.打开文件时,使用相对路径,不使用绝对路径,即直接使用文件名即可。
【输入文件】
输入文件in.txt有2行,第1行中第1个数表示数据序列中数的个数,第1行中第2个数表示要查找的关键字,第2行表示给定的数据序列。
每个数之间用空格隔开。
【输出文件】
输出文件out.Txt是1行,表示统计结果。
【输入样例】
555
3423551255
【输出样例】
2
Submain()
DimnAsInteger,numAsLong
DimiAsInteger,xAsLong
DimcountAsInteger
Open"in.txt"ForInputAs#1
Open"out.txt"ForOutputAs#2
Input#1,n,num
Fori=1Ton
Input#1,x
Ifx=numThencount=count+1
Nexti
Print#2,count
Close#1,#2
EndSub
第二题
【问题描述】
请打开指定文件夹下的工程文件CountWord.vbp,并在标准模块Module1中的main过程中实现如下功能:
在给定的单词序列中,统计指定的关键字在序列中出现的次数,并将结果写入输出文件out.Txt中。
说明:
1.输出语句使用Print,若同一行上输出多个表达式,多个表达式采用紧凑格式输出。
2.打开文件时,使用相对路径,不使用绝对路径,即直接使用文件名即可。
【输入文件】
输入文件in.txt有2行,第1行中第1个数表示单词序列中单词的个数,第1行中第2个数据表示要查找的关键字,第2行表示给定的单词序列。
每个单词之间用逗号隔开。
【输出文件】
输出文件out.Txt是1行,表示统计结果。
【输入样例】
5dog
Cat,dog,good,bear,character
【输出样例】
1
Submain()
DimnAsInteger,wordAsString
DimiAsInteger,sAsString
DimcountAsInteger
Open"in.txt"ForInputAs#1
Open"out.txt"ForOutputAs#2
Input#1,n,word
Fori=1Ton
Input#1,s
Ifs=wordThencount=count+1
Nexti
Print#2,count
Close#1,#2
EndSub
第三题
【问题描述】
求最大公约数的算法思想:
(最小公倍数=两个整数之积/最大公约数)
(1)对于已知两数m,n;
(2)m除以n得余数r;
(3)若r=0,则n为求得的最大公约数,算法结束;否则执行(4);
(4)m←n,n←r,再重复执行
(2)。
请打开指定文件夹下的工程文件gcd.vbp,并在标准模块Module1中的main过程中实现如下功能:
从输入文件in.txt中读入给定的两个数,并求出这两个数的最大公约数和最小公倍数,并将结果写入到输出文件out.Txt中。
说明:
1.输出语句使用Print,若同一行上输出多个表达式,多个表达式采用紧凑格式输出。
2.打开文件时,使用相对路径,不使用绝对路径,即直接使用文件名即可。
【输入文件】
输入文件in.txt有1行两个数,用空格分开,表示给定的数据。
【输出文件】
输出文件out.Txt有1行两个数,第一个数表示最大公约数,第二个数表示最小公倍数,两个数之间用空格分开。
【输入样例】
69
【输出样例】
318
Submain()
DimmAsLong,nAsLong,rAsLong,tAsLong
Dimm1AsLong,n1AsLong
Open"in.txt"ForInputAs#1
Open"out.txt"ForOutputAs#2
Input#1,m,n
m1=m:
n1=n
Do
r=mModn:
m=n:
n=r:
LoopUntilr=0
Print#2,m;m1/m*n1
Close#1,#2
EndSub
第四题
【问题描述】
基本思想:
n个有序数(从小到大)存放在数组a
(1)—a(n)中,要插入的数x,把数x插到有序数列中,插入后数列仍然有序。
请打开指定文件夹下的工程文件insert.vbp,并在标准模块Module1中的main过程中实现如下功能:
从输入文件in.txt中读入给定的数据,完成上述思想,并将结果写入到输出文件out.Txt中。
说明:
1.输出语句使用Print,若同一行上输出多个表达式,多个表达式采用紧凑格式输出。
2.打开文件时,使用相对路径,不使用绝对路径,即直接使用文件名即可。
【输入文件】
输入文件in.txt有2行,第1行有两个数,用空格分开;第1个数表示有序数列中数的个数,第二个数表示要插入的数;第二行表示有序数列。
【输出文件】
输出文件out.Txt有1行,表示插入指定数后的有序数列,各个数之间用空格分开。
【输入样例】
524
1215344556
【输出样例】
121524344556
OptionBase1
Submain()
DimnAsInteger,numAsLong
Dima()AsLong,iAsInteger
Open"in.txt"ForInputAs#1
Open"out.txt"ForOutputAs#2
Input#1,n,num
ReDima(n+1)
Fori=1Ton
Input#1,a(i)
Nexti
i=n
DoWhilea(i)>numAndi>=1
a(i+1)=a(i)
i=i-1
Loop
a(i+1)=num
Fori=1Ton+1
Print#2,a(i);
Nexti
第五题
【问题描述】
字母循环加密的基本思想是:
将a-z,A-Z各看成一个环,将每个字母加一序数K,即用它后(前)面的第K个字母代替。
例如序数k为2,这时大写字母:
"A"→"C","B"→"D",…"Z"→"B"。
小与字母:
"a"→"c","b"→"d",…"z"→"b"。
请打开指定文件夹下的工程文件jiami.vbp,并在标准模块Module1中的main过程中实现如下功能:
读入输入文件in.txt中的数据,实现上述思想,并将结果写入到输出文件out.Txt中。
说明:
1.输出语句使用Print,若同一行上输出多个表达式,多个表达式采用紧凑格式输出。
2.打开文件时,使用相对路径,不使用绝对路径,即直接使用文件名即可。
【输入文件】
输入文件in.txt有2行,第1行表示每个字母要加的序数,第2行表示待加密的字母序列。
【输出文件】
输出文件out.Txt是1行,表示加密后的字母序列。
【输入样例】
3
Howareyou
【输出样例】
Krzduhbrx
Submain()
DimxAsString,yAsString,mAsString,iAsInteger
DimkeyAsInteger
DimnAsInteger
Open"in.txt"ForInputAs#1
Open"out.txt"ForOutputAs#2
Input#1,key
Input#1,x
m=""
Fori=1ToLen(x)
y=Mid(x,i,1)
Ify>="A"Andy<="Z"Then
n=Asc(y)-64+key
Ifn>26Thenn=n-26
Ifn<1Thenn=n+26
y=Chr(64+n)
EndIf
Ify>="a"Andy<="z"Then
n=Asc(y)-96+key
Ifn>26Thenn=n-26
Ifn<1Thenn=n+26
y=Chr(96+n)
EndIf
m=m&y
Nexti
Print#2,m
Close#1,#2
EndSub
第六题
【问题描述】
请打开指定文件夹下的工程文件max.vbp,并在标准模块Module1中的main过程中实现如下功能:
从输入文件in.txt中读入给定的矩阵,求出矩阵中最大元素所在的行和列,并将结果写入到输出文件out.Txt中。
说明:
1.输出语句使用Print,若同一行上输出多个表达式,多个表达式采用紧凑格式输出。
2.打开文件时,使用相对路径,不使用绝对路径,即直接使用文件名即可。
【输入文件】
输入文件in.txt有多行,第1行有两个数,用空格分开;第1个数表示矩阵的行数,第2个数表示矩阵的列数。
其他各行为矩阵数据。
【输出文件】
输出文件out.Txt有1行两个数,表示最大元素的行号和列号,行号和列号之间用空格隔开。
【输入样例】
33
121534
455610
437820
【输出样例】
32
OptionBase1
Submain()
DimmAsInteger,nAsInteger
Dima()AsInteger,iAsInteger,jAsInteger
DimmaxAsInteger,i1AsInteger,j1AsInteger
Open"in.txt"ForInputAs#1
Open"out.txt"ForOutputAs#2
Input#1,m,n
ReDima(m,n)
max=-32768
Fori=1Tom
Forj=1Ton
Input#1,a(i,j)
Ifa(i,j)>maxThen
max=a(i,j)
i1=i
j1=j
EndIf
Nextj
Nexti
Print#2,i1;j1
Close#1,#2
EndSub
第七题
素数的定义:
除了1和自身没有其他约数的正整数称为素数。
经过证明,如果正整数m在2~INT(
)的范围内没有约数,则m为素数。
素数判断的基本方法:
将正整数m作为被除数,将2~INT(
)之间的各正整数作为除数,如果都不能整除,则m是素数,否则m不是素数。
请打开指定文件夹下的工程文件prime.vbp,并在标准模块Module1中的main过程中实现如下功能:
从输入文件in.txt中读入给定数,判断该数是不是素数,若是,则在输出文件out.Txt中写入True,若不是素数,则在输出文件out.Txt中写入False。
说明:
1.输出语句使用Print,若同一行上输出多个表达式,多个表达式采用紧凑格式输出。
2.打开文件时,使用相对路径,不使用绝对路径,即直接使用文件名即可。
【输入文件】
输入文件in.txt有1行,表示给定的正整数。
【输出文件】
输出文件out.Txt是1行,表示是否素数的判断结果。
【输入样例】
17
【输出样例】
True
Submain()
DimnAsLong,iAsLong
Open"in.txt"ForInputAs#1
Open"out.txt"ForOutputAs#2
Input#1,n
Fori=2ToInt(Sqr(n))
IfnModi=0Then
ExitFor
EndIf
Next
Ifi>Int(Sqr(n))Then
Print#2,True
Else
Print#2,False
EndIf
EndSub
第八题
素数的定义:
除了1和自身没有其他约数的正整数称为素数。
经过证明,如果正整数m在2~INT()的范围内没有约数,则m为素数。
素数判断的基本方法:
将正整数m作为被除数,将2~INT()之间的各正整数作为除数,如果都不能整除,则m是素数,否则m不是素数。
请打开指定文件夹下的工程文件primenumber.vbp,并在标准模块Module1中的main过程中实现如下功能:
从输入文件in.txt中读入一个正整数,求出小于等于该数的所有素数,并将结果写入到输出文件out.Txt中。
说明:
1.输出语句使用Print,若同一行上输出多个表达式,多个表达式采用紧凑格式输出。
2.打开文件时,使用相对路径,不使用绝对路径,即直接使用文件名即可。
【输入文件】
输入文件in.txt有1行,表示给定的正整数。
【输出文件】
输出文件out.Txt有1行,表示指定范围内的所有素数,每个素数之间用空格分开。
【输入样例】
20
【输出样例】
235711131719
Submain()
DimNAsLong,iAsLong,KAsLong
DimmaxNAsLong
Open"in.txt"ForInputAs#2
Input#2,maxN
Open"out.txt"ForOutputAs#1
ForN=2TomaxN
K=Int(Sqr(N))
Fori=2ToK
IfNModi=0ThenExitFor
Nexti
Ifi>KThen
Print#1,N;
EndIf
NextN
Close#1,#2
EndSub
第九题
【问题描述】
折半查找思想:
设n个有序数(从小到大)存放在数组a(0)----a(n-1)中,要查找的数为x。
用变量bot、top、mid分别表示查找数据范围的底部(数组下界)、顶部(数组的上界)和中间,mid=(top+bot)\2。
若x=a(mid),则已找到退出循环,否则进行下面的判断;
若x若x>a(mid),x必定落在mid+1和top的范围之内,所以修改bot=mid+1;
在确定了新的查找范围后,重复进行以上比较。
请打开指定文件夹下的工程文件Search.vbp,并在标准模块Module1中的main过程中实现如下功能:
在给定的有序数列中,利用折半查找算法查找指定关键字,如果找到则将查找的次数写入输出文件out.Txt中;若没找到则在输出文件out.Txt中写入-1。
说明:
1.输出语句使用Print,若同一行上输出多个表达式,多个表达式采用紧凑格式输出。
2.打开文件时,使用相对路径,不使用绝对路径,即直接使用文件名即可。
【输入文件】
输入文件in.txt有2行,第1行中第1个数表示数列中数的个数,第1行中第2个数表示要查找的关键字,第2行表示给定的有序数列。
每个数之间用空格隔开。
【输出文件】
输出文件out.Txt是1行,表示查找关键字所用次数,若没找到则写入-1。
【输入样例】
556
1234455658
【输出样例】
2
OptionBase1
Submain()
DimfindAsBoolean
Dima()AsLong,xAsLong
Dimi%,top%,bot%,mid%,n%
Open"in.txt"ForInputAs#1
Open"out.txt"ForOutputAs#2
Input#1,n,x
ReDima(n)
Fori=1Ton
Input#1,a(i)
Next
top=n:
bot=1
find=False'find为是否找到的标志变量
i=0
DoWhiletop>=botAndfind=False
mid=(top+bot)\2
i=i+1
Ifx=a(mid)Then
find=True
ElseIfxtop=mid-1
Else
bot=mid+1
EndIf
Loop
Iffind=FalseThen
Print#2,-1
Else
Print#2,i
EndIf
Close#1,#2
EndSub
第十题
【问题描述】
请打开考号文件夹下的工程文件sort.vbp,并在标准模块Module1中的main过程中实现如下功能:
将给定的一组数按照从小到大的顺序排序,并将结果写入到输出文件out.Txt中,所需数据从输入文件in.txt读入。
说明:
1.输出语句使用Print,若同一行上输出多个表达式,多个表达式采用紧凑格式输出。
2.打开文件时,使用相对路径,不使用绝对路径,即直接使用文件名即可。
【输入文件】
输入文件in.txt有2行,第1行表示参加排序的数的个数,第2行表示要排序的一组数。
【输出文件】
输出文件out.Txt是1行,表示排序后的结果,各个数字之间用空格隔开。
【输入样例】
5
533444510
【输出样例】
410344553
OptionBase1
Submain()
Dima()AsLong,tAsLong
Dimi%,j%,n%
Open"in.txt"ForInputAs#1
Open"out.txt"ForOutputAs2
Input#1,n
ReDima(n)
Fori=1Ton
Input#1,a(i)
Next
Fori=1Ton-1
Forj=i+1Ton
Ifa(j)t=a(i):
a(i)=a(j):
a(j)=t'a(i)与a(j)交换
EndIf
Nextj
Print#2,a(i);'排好一个输出一个
Nexti
Print#2,a(n)'输出最后一个数
Close#1,#2
EndSub
第十一题
【问题描述】
请打开考号文件夹下的工程文件string_2.vbp,并在标准模块Module1中的main过程中实现如下功能:
将给定字符串中的所有数字字符(0~9)去掉,并将结果写入到输出文件out.Txt中,给定字符从输入文件in.txt读入。
说明:
1.输出语句使用Print,若同一行上输出多个表达式,多个表达式采用紧凑格式输出。
2.打开文件时,使用相对路径,不使用绝对路径,即直接使用文件名即可。
【输入文件】
输入文件in.txt有1行,表示源字符串。
【输出文件】
输出文件out.Txt也是1行,表示去掉数字字符(0~9)后的结果字符串。
【输入样例】
Abc019a0b123
【输出样例】
Abcab
Submain()
Dimi%,s$,x$,t$
Open"in.txt"ForInputAs#1
Open"out.txt"ForOutputAs#2
Input#1,s
t=""
Fori=1ToLen(s)
x=Mid(s,i,1)
Ifx<"0"Orx>"9"Then
t=t&x
EndIf
Next
Print#2,t
Close#1,#2
EndSub
第十二题
【问题描述】
合并排序是将两个有序数列(均为升序)A、B合并成另一个有序数列C,合并后C仍然为升序)
基本思想:
1)先在A、B数列中各取第一个元素进行比较,将小的元素放入C数列中;
2)取小的元素所在数列的下一个元素与另一数列中上次比较时较大的元素再进行比较,并将小的元素放入C数列中。
重复2),直到某个数列已全部放入C中;
3)将另一个数列的剩余元素抄入到C数列中,合并排序完成。
请打开指定文件夹下的工程文件union.vbp,并在标准模块Module1中的main过程中实现如下功能:
读入输入文件in.txt中的数据,实现上述思想,并将结果写入到输出文件out.Txt中。
说明:
1.输出语句使用Print,若同一行上输出多个表达式,多个表达式采用紧凑格式输出。
2.打开文件时,使用相对路径,不使用绝对路径,即直接使用文件名即可。
【输入文件】
输入文件in.txt有3行,第1行中有两个用空格隔开的数,第1个数表示参与合并的的第1个数列的数据个数,第2个数表示参与合并的第2个数列的数据个数;第2、3行,分别表示参与合并的两个数列。
【输出文件】
输出文件out.Txt是1行,表示合并排序后的结果,各个数字之间用空格隔开。
【输入样例】
34
4810
571318
【输出样例】
4578101318
OptionBase1
Submain()
Dima(),b(),c()
DimiAsInteger,mAsInteger,nAsInteger
DimxAsInteger,yAsInteger,jAsInteger
Open"in.txt"ForInputAs#1
Open"out.txt"ForOutputAs#2
Input#1,m,n
ReDima(m)
ReDimb(n)
ReDimc(m+n)
Fori=1Tom
Input#1,a(i)
Nexti
Fori=1Ton
Input#1,b(i)
Nexti
x=1