回 帖 发 新 帖 刷新版面

主题:vfp程序求助

请求帮助
本人要考试了,老师要求编程,并且要写出编程思路及程序分析、程序代码。程序已经从网上找到了,但水平有限,还是写不出编程思路及程序分析。请各位高手帮忙看一下。
   程序先要求使用者输入N个要排序的数,然后使用者依次输入N个数,最后依次输出原始输入数列、从小到大排列后的数列、从大到小排列后的数列、两端大中间小排列后的数列。
CLEAR 
INPUT "输入数的个数n=" to n 
DIMENSION x(n) 
FOR i=1 TO n 
input "第"+STR(i,4)+"个数=" to x(i) 
ENDFOR 

??"输入的顺序:" 
FOR i=1 TO n 
??x(i) 
endfor 
a=x(1,1) 

*|*输入部分 
FOR j=2 TO n 
FOR w=2 TO n 
IF x(w)>=x(w-1) 
a=x(w-1) 
x(w-1)=x(w) 
x(w)=a 
endif 
endfor 
ENDFOR 
*|*判断大小部分 

??"大到小顺序:" 
FOR i=1 TO n 
??x(i) 
ENDFOR 
*|*输出大小部分 

??"小到大顺序:" 
FOR i=1 TO n 
??x(n-i+1) 
ENDFOR 
*|*输出小大部分 

??"大小大顺序:" 
FOR i=1 TO n STEP 2 
??x(i) 
ENDFOR 
IF MOD(n,2)=0 
FOR i=n TO 2 STEP -2 
??x(i) 
ENDFOR 
ELSE 
FOR i=n-1 TO 2 STEP -2 
??x(i) 
ENDFOR 
endif

回复列表 (共1个回复)

沙发

首先建立一个一维数组(行数为要输入的数据个数正如上面的方法),用于储存要输入的每个数据。

对数组进行排序:从小到大就是升序排列,从大到小就降序排列,然后以次输出数组的每个元素值。

如何输出两端大中间小的,用上面从大到小的排列的数组来做一个循环(同时也可以再定一个与上面相同元素个数的数组来储存“两端大中间小”):
DIMENSION ml(n) 
for i=1 to n
    if mod(i,2)=1
        ml(int(i/2)+1)=x(i)
    else
        ml(n-int(i/2))=x(i)
    endif
endfor
**ml数组就是两端大中间小的

我来回复

您尚未登录,请登录后再回复。点此登录或注册