用Fortran语言,从键盘输入n个非零整数(有重复值),赋值给动态数组array (1) 从中查找最小数,并将其插入到第一个数前。输出新的序列 (2) 将新的序列按照从大到小的顺序排列,并输出 (3) 查找相同的数据,将数组中所有相同的数删除到只剩一个(删除的数据赋值0),并输出新的数组(依然从大到小排列)
时间: 2024-01-11 12:04:56 浏览: 85
以下是Fortran语言的程序实现:
```
program dynamic_array
implicit none
integer, dimension(:), allocatable :: array
integer :: n, i, j, min, temp
! 输入数组长度n
write(*,*) "请输入数组长度n:"
read(*,*) n
! 动态分配数组空间
allocate(array(n))
! 输入n个非零整数赋值给数组array
do i=1,n
write(*,*) "请输入第",i,"个整数:"
read(*,*) array(i)
end do
! 查找最小数并插入到第一个数前,输出新的序列
min = array(1)
do i=2,n
if (array(i) < min) then
min = array(i)
end if
end do
array = [min, array(1:n-1)]
write(*,*) "新的序列:"
do i=1,n
write(*,"(I3)",advance="no") array(i)
end do
write(*,*)
! 将新的序列按照从大到小的顺序排列,并输出
do i=1,n-1
do j=i+1,n
if (array(i) < array(j)) then
temp = array(i)
array(i) = array(j)
array(j) = temp
end if
end do
end do
write(*,*) "按照从大到小的顺序排列后的序列:"
do i=1,n
write(*,"(I3)",advance="no") array(i)
end do
write(*,*)
! 查找相同的数据,将数组中所有相同的数删除到只剩一个,并输出新的数组
do i=1,n-1
do j=i+1,n
if (array(i) == array(j)) then
array(j) = 0
end if
end do
end do
do i=1,n-1
if (array(i) == 0) then
array(i:n-1) = array(i+1:n)
n = n - 1
end if
end do
write(*,*) "删除相同数据后的新数组:"
do i=1,n
write(*,"(I3)",advance="no") array(i)
end do
end program dynamic_array
```
程序的具体实现如下:
1. 定义一个动态数组array。
2. 通过动态分配数组空间,从键盘输入n个非零整数赋值给数组array。
3. 查找最小数并插入到第一个数前,输出新的序列。
4. 将新的序列按照从大到小的顺序排列,并输出。
5. 查找相同的数据,将数组中所有相同的数删除到只剩一个,并输出新的数组。
6. 在删除相同数据的过程中,需要注意数组长度n的变化。
最后,程序输出新的序列、按照从大到小的顺序排列后的序列和删除相同数据后的新数组。
阅读全文