creat table mytable 序号 n(2),数字 n(10) for i=1 to 20 input '请随便输入一个数字' to myshuzi use mytable appe blank repl 序号,数字 with i,myshuzi endfor wait use mytable in 0 index on 数字 tag 数字 brow
要下班了,先写个输入和输出,有空再 冒泡,楼下接着写Option Base 1 Dim a() As Integer '定义数组 Dim i As Integer Dim x '输入字符 Dim n As IntegerPrivate Sub Command1_Click() For i = 1 To n x = InputBox("请输入数字:", "随机数 " & i) If IsNumeric(x) = False Then MsgBox "请输入数字!", 16, "提示" x = InputBox("请输入数字:", "随机数 " & i) End If a(i) = x NextEnd SubPrivate Sub Command2_Click() For i = 1 To n MsgBox a(i), 64, i NextEnd SubPrivate Sub Form_Load() n = 20 ReDim a(n + 1) As Integer End Sub
Dim a() As Integer '定义数组 Dim i As Integer Dim x '输入字符 Dim n As Integer Dim Maxs As Integer Dim MaxID As Integer Dim Mins As Integer Dim MinID As Integer Private Sub Command1_Click() For i = 1 To n x = InputBox("请输入数字:", "共" & n & "个随机数 " & "---第" & i & "个") If x = "" Then Exit Sub If IsNumeric(x) = False Then MsgBox "请输入数字!", 16, "提示" x = InputBox("请输入数字:", "共" & n & "个随机数 " & "---第" & i & "个") End If a(i) = x Next '显示最大数、最小数及位置 Maxs = a(1) For i = 2 To n If a(i) > Maxs Then Maxs = a(i) MaxID = i End If Next If MaxID = 0 Then MaxID = 1 MsgBox "最大值:" & Maxs, 64, "位置:第" & MaxID & "个数" Mins = a(1) For k = 2 To n If a(k) < Mins Then Mins = a(k) MinID = k End If Next If MinID = 0 Then MinID = 1 MsgBox "最小值:" & Mins, 64, "位置:第" & MinID & "个数"End SubPrivate Sub Form_Load() n = 20 ReDim a(n + 1) As Integer End Sub
#include <iostream> using namespace std;template<typename T> void findMaxMin(const T *Array,const int ArraySize)//参数1是数组名,参数2是数组大小 { T max,min; int maxFlag=0,minFlag=0; if(Array[0] >= Array[1]){ max=Array[0]; min=Array[1]; } else{ max=Array[1]; min=Array[0]; } for (int i = 2,j=i+1;i < ArraySize;++i) { if (Array[i] >= Array[j]) { if (Array[i] > max) { max=Array[i]; maxFlag=i; } if (Array[j] < min){ min=Array[j]; minFlag=j; } }//end of if else { if (Array[j] > max) { max=Array[j]; maxFlag=j; } if (Array[i] < min){ min=Array[i]; minFlag=i; } }//end of else }//end of for cout<<"max:"<<max<<" First of Position:"<<maxFlag<<endl <<"min:"<<min<<" First of Position:"<<minFlag<<endl; }int main() { int intArray[10]={20,30,20,10,10,15,80,40,80,17}; findMaxMin(intArray,10);
int main() { int intArray[10]={20,30,20,10,10,15,80,40,80,17}; findMaxMin(intArray,10);
return 0; } 对上面的模板函数的测试,输出: max:80 First of Position:6 min:10 First of Position:3 请按任意键继续. . .Good! I hope this will help you! 这题目是很简单的算法,建议可以自己动手完成。呵呵
vfp9.0:dime lanshuzu(20) input '请任意输入数字' to lanshuzu(1) lnmax=lanshuzu(1) lnmix=lanshuzu(1) for i=2 to 20 input '请任意输入数字' to lanshuzu(i) if lnmax<lanshuzu(i) lnmax=lanshuzu(i) lnmaxxuhao=i endif if lnmix>lanshuzu(i) lnmix=lanshuzu(i) lnmixxuhao=i endif endfor?"最大值为",lnmax+space(5)+'位置为',lnmaxxuhao ?"最小值为",lnmix+space(5)+'位置为',lnmixxuhao
for i=1 to 20
input '请随便输入一个数字' to myshuzi
use mytable
appe blank
repl 序号,数字 with i,myshuzi
endfor
wait
use mytable in 0
index on 数字 tag 数字
brow
Dim a() As Integer '定义数组
Dim i As Integer
Dim x '输入字符
Dim n As IntegerPrivate Sub Command1_Click() For i = 1 To n x = InputBox("请输入数字:", "随机数 " & i) If IsNumeric(x) = False Then
MsgBox "请输入数字!", 16, "提示"
x = InputBox("请输入数字:", "随机数 " & i)
End If a(i) = x NextEnd SubPrivate Sub Command2_Click() For i = 1 To n
MsgBox a(i), 64, i
NextEnd SubPrivate Sub Form_Load()
n = 20
ReDim a(n + 1) As Integer
End Sub
Dim i As Integer
Dim x '输入字符
Dim n As Integer
Dim Maxs As Integer
Dim MaxID As Integer
Dim Mins As Integer
Dim MinID As Integer
Private Sub Command1_Click() For i = 1 To n x = InputBox("请输入数字:", "共" & n & "个随机数 " & "---第" & i & "个") If x = "" Then Exit Sub If IsNumeric(x) = False Then
MsgBox "请输入数字!", 16, "提示"
x = InputBox("请输入数字:", "共" & n & "个随机数 " & "---第" & i & "个")
End If a(i) = x Next '显示最大数、最小数及位置
Maxs = a(1) For i = 2 To n If a(i) > Maxs Then Maxs = a(i)
MaxID = i End If Next If MaxID = 0 Then MaxID = 1 MsgBox "最大值:" & Maxs, 64, "位置:第" & MaxID & "个数" Mins = a(1) For k = 2 To n If a(k) < Mins Then Mins = a(k)
MinID = k End If Next If MinID = 0 Then MinID = 1 MsgBox "最小值:" & Mins, 64, "位置:第" & MinID & "个数"End SubPrivate Sub Form_Load()
n = 20
ReDim a(n + 1) As Integer
End Sub
#include <iostream>
using namespace std;template<typename T>
void findMaxMin(const T *Array,const int ArraySize)//参数1是数组名,参数2是数组大小
{
T max,min;
int maxFlag=0,minFlag=0; if(Array[0] >= Array[1]){
max=Array[0];
min=Array[1];
}
else{
max=Array[1];
min=Array[0];
} for (int i = 2,j=i+1;i < ArraySize;++i)
{
if (Array[i] >= Array[j])
{
if (Array[i] > max) {
max=Array[i];
maxFlag=i;
} if (Array[j] < min){
min=Array[j];
minFlag=j;
}
}//end of if
else
{
if (Array[j] > max) {
max=Array[j];
maxFlag=j;
} if (Array[i] < min){
min=Array[i];
minFlag=i;
}
}//end of else
}//end of for cout<<"max:"<<max<<" First of Position:"<<maxFlag<<endl
<<"min:"<<min<<" First of Position:"<<minFlag<<endl;
}int main()
{
int intArray[10]={20,30,20,10,10,15,80,40,80,17}; findMaxMin(intArray,10);
return 0;
}
以上是C++代码、、、,我写成了模板的形式了,所以你用的时候任意类型的数组都是能用的,也很容易改成C代码的;
算法:
1、首先比较数组开始的两个数,大的赋值给max,小的赋值给min
2、然后从第三个数开始每次取两个数进行比较,再把大的数跟记录起来的max比较,比max大时则赋值给max同时记录下它所在的位置;再把小的数跟记录起来的min比较,比min小时则赋值给min,同时记录下它的位置;
3、如果数组中有多个相等的最大值和最小值,则只记录第一次出现的最大值和最小值的位置;
4、算法复杂度分析:每2个数需要的比较次数是3次,所以每个数需要的比较次数是1.5次,n个大小的数组需要的算法复杂度大约是1.5n,效率比较高。
/*---------------------------------------*/
楼主的需求是随机输入20个数,在这里你可以随便多少个数都可以的,也不限定数据类型(这就是模板的好处)
int main()
{
int intArray[10]={20,30,20,10,10,15,80,40,80,17}; findMaxMin(intArray,10);
return 0;
}
对上面的模板函数的测试,输出:
max:80 First of Position:6
min:10 First of Position:3
请按任意键继续. . .Good! I hope this will help you!
这题目是很简单的算法,建议可以自己动手完成。呵呵
input '请任意输入数字' to lanshuzu(1)
lnmax=lanshuzu(1)
lnmix=lanshuzu(1)
for i=2 to 20
input '请任意输入数字' to lanshuzu(i)
if lnmax<lanshuzu(i)
lnmax=lanshuzu(i)
lnmaxxuhao=i
endif
if lnmix>lanshuzu(i)
lnmix=lanshuzu(i)
lnmixxuhao=i
endif
endfor?"最大值为",lnmax+space(5)+'位置为',lnmaxxuhao
?"最小值为",lnmix+space(5)+'位置为',lnmixxuhao