用Fortran语言, 从键盘输入n个非零整数(有重复值),赋值给动态数组array (1) 从中查找最小数,并将其插入到第一个数前。输出新的序列 (2) 将新的序列按照从大到小的顺序排列,并输出 (3) 查找相同的数据,将数组中所有相同的数删除到只剩一个(删除的数据赋值0),并输出新的数组(依然从大到小排列)
时间: 2024-01-11 16:05:21 浏览: 68
fortran 数值算法
5星 · 资源好评率100%
以下是用Fortran语言实现的代码:
```
program array_operations
implicit none
integer :: n, i, j, k, min_index, temp
integer, allocatable :: array(:)
! 输入n的值
write(*,*) '请输入n的值:'
read(*,*) n
! 动态分配数组
allocate(array(n))
! 输入n个非零整数
write(*,*) '请输入n个非零整数:'
do i = 1, n
read(*,*) array(i)
end do
! 查找最小数并插入到第一个数前
min_index = 1
do i = 2, n
if(array(i) < array(min_index)) min_index = i
end do
temp = array(1)
array(1) = array(min_index)
array(min_index) = temp
! 输出新的序列
write(*,*) '新的序列为:'
do i = 1, n
write(*,*) array(i)
end do
! 将新的序列从大到小排列
do i = 1, n-1
do j = i+1, n
if(array(j) > array(i)) then
temp = array(i)
array(i) = array(j)
array(j) = temp
end if
end do
end do
! 输出排好序的新的序列
write(*,*) '排好序的新的序列为:'
do i = 1, n
write(*,*) array(i)
end do
! 删除数组中相同的数
do i = 1, n-1
if(array(i) /= 0) then
do j = i+1, n
if(array(j) == array(i)) then
do k = j, n-1
array(k) = array(k+1)
end do
n = n - 1
array(n) = 0
end if
end do
end if
end do
! 将新的序列从大到小排列
do i = 1, n-1
do j = i+1, n
if(array(j) > array(i)) then
temp = array(i)
array(i) = array(j)
array(j) = temp
end if
end do
end do
! 输出新的数组
write(*,*) '新的数组为:'
do i = 1, n
write(*,*) array(i)
end do
! 释放数组内存
deallocate(array)
end program array_operations
```
以上代码实现了三个操作:
1. 从中查找最小数,并将其插入到第一个数前。输出新的序列
2. 将新的序列按照从大到小的顺序排列,并输出
3. 查找相同的数据,将数组中所有相同的数删除到只剩一个(删除的数据赋值0),并输出新的数组(依然从大到小排列)
阅读全文