数组--程序设计作业。
数组是fortran90最重要的结构数据类型之一。许多实际问题往往设计大量的数据,数组是存储和处理大批量数据的有效工具,有些问题如果不用数组求解将难以解决。
数组是类型相同且有序的一组数据,涉及到这类数据均可考虑使用数组。
本次实验是学习和掌握数组声明、数组元素引用、数组输入输出、数组赋初值的一次系统实验活动。通过本次实验,能够设计和编写比较简单的数组应用程序。
一.实验内容1
1.问题描述。
已知10个正整数,输入一个待删除整数,在10个整数中查找,若有该整数,则将其删除,输出删除前后这组整数。编写程序实现之。
2.算法设计。
已知的10个正整数符合数组定义,用一维整型数组num保存,用数组构造器赋初值。
待删除整数n从键盘输入。
算法基本思想:输入待删除整数,从第1个数组元素num(1)开始,依次用n去比较是否相等,若相等查找成功,将该数组元素删除(在该数组元素位置设置删除标志),直到第10个数组元素检查比较完毕。输出删除前后数组元素。
因10个整数为正数,所以删除标志可用-1表示。
算法:1) 输入待删除整数n;
2) 输出删除前10个整数;
3) 用n依次在数组元素num(1)、num(2)、…num(10)中查找,查找成功置删除标志;
4) 输出删除后数据。
5) 结束。
算法第3步可用“计数型”循环结构和do循环语句实现。
3.程序编写。
根据算法,设计和编写不完整示例程序如下(请在下划线空白处填充正确内容):
程序8-1:
!班级:??
!姓名:??
!时间:??
!数据查询。
program problem01
integer ::num(10n
print*,‘请输入100以内的一个正整数: ’
read*,n
print*,‘删除前数据: ’
write(*,100) (num(i
do i=1,10
if (n==num(i)) num(i)=-1
enddoprint*
print*,‘删除后数据: ’
do iifwrite(*,100) num(i)
enddoprint*
100 format((i3,2x\))
end4.实验要求。
分析问题,理解算法和程序,将程序填写完整。
掌握数组声明、数组构造器、隐含do循环基本概念和使用规则。
将输入数据和输出结果以注释形式编辑输入到源程序文件末尾。
(下次上机试验)改写程序,提高通用性(正整数个数不定,且从键盘输入,数组元素最大个数max通过parameter语句定义)。运行输入几组不同数据,获得不同运行结果。
5.实验步骤。
分析问题,理解算法和程序,完成程序填空,得到正确完整程序。
启动软件开发环境microsoft developer studio。
编译、构建、运行、调试程序。运行时输入数据45,得到输出结果。
将输入数据和输出结果以注释形式编辑输入到源程序文件末尾。
二.实验内容2
1.问题描述。
输入一个班学生(人数≤40)的学号和3门课(英语、数学、物理)成绩,计算每个学生平均成绩、每门课平均成绩和三门课平均成绩,统计高于每门课平均成绩和三门课平均成绩的学生人数和占总人数比例,输出统计结果。编写程序实现之。
2.算法设计。
问题中涉及一个班级的学生学号、3门课成绩和学生平均成绩,这些数据符合数组定义,用五个数组存储这些数据。定义以下五个数组:
numbers:字符型数组,存储学生学号。从键盘输入。
englishs:整型数组,存储英语成绩。
maths:整型数组,存储数学成绩。从键盘输入。
physics:整型数组,存储物理成绩。从键盘输入。
**erages:实型数组,存储学生平均成绩。计算获得。
计算获得英语平均成绩english_**、数学平均成绩math_**、物理平均成绩physic_**和三门课平均成绩**erage,均为实型。
从键盘输入学生人数n。
统计高于英语平均成绩人n1和比例p1,高于数学平均成绩人n2和比例p2,高于物理平均成绩人n3和比例p3,高于三门课平均成绩人nn和比例pp。
求解算法比较简单,设计算法如下:
1) 输入学生人数n;
2) 采用“计数型”循环结构输入学生学号和三门课成绩,同时计算学生平均成绩,统计英语、数学、物理课总成绩;
3) 计算英语、数学、物理课平均成绩和三门课平均成绩;
4) 采用“计数型”循环结构统计高于平均成绩人数及比例。
5) 输出统计结果。
6) 结束。
3.程序编写。
根据算法,设计和编写不完整示例程序如下(请在下划线空白处填充正确内容):
程序8-2:
!班级:??
!姓名:??
!时间:??
!统计人数及比例。
program main
parameter (max=40)
character*5 ::numbers(max)
integer,dimensionenglishs,maths,physics
real ::**erages(max),english_**,math_**,physic_**,**erage,sum1=0,sum2=0,sum3=0
integer(1) :n,n1=0,n2=0,n3=0,nn=0
real ::p1,p2,p3,pp
print*,‘请输入学生人数: ’
read*,n
print*,‘请输入’,n,‘名学生的学号、英语成绩、数学成绩和物理成绩。’
print*,‘数据之间用空格间隔。学号为长度为5的字符串,用引号括住。’
do i=1,n
read*,numbers(i),englishs(i),maths(i),physics(i)
**erages(i3.0
sum1=sum1+englishs(i)
sum2=sum2+maths(i)
sum3english_**=sum1/n
math_**
physic_**=sum3/n
**erage=(english_**+math_**+physic_**)/
do i=1,n
if ( englishs(i)>english_** ) n1=n1+1
ifn2=n2+1
if (physics(i)>physic_**)
if (**erages(i)>**erage) nn
enddop1=real(n1)/n
p2np3=real(n3)/
pp= (nn)/n
write(*,100) ‘英语’,n1,p1*100
write(*,100
write(*,100) ‘物理’,n3,p3*100
write(*,100) ‘三门课’,nn,pp*
100 format(1x,‘高于’,a,‘平均成绩的学生人数有’,i2,‘人,占总人数比例’,f4.1,‘%
end4. 实验要求。
分析问题,理解算法和程序,完成程序填空,得到正确完整程序。
编译、构建、运行、调试程序。
将输入数据和输出结果以注释形式编辑输入到源程序文件末尾。
改写程序,提高程序通用性(将英语平均成绩、数学平均成绩、物理平均成绩和三门课平均成绩采用数组保存,将高于平均成绩人数采用数组保存,统计高于平均成绩人数可用循环结构实现)。
5.实验步骤。
分析问题,理解算法和程序,在程序下划线空白处填写正确内容。
编译、构建、运行、调试程序。
运行程序,输入学生人数:5和5名学生的学号、三门课成绩数据:
运行结束,得到输出结果。
将输入数据和输出结果以注释形式编辑输入到源程序文件末尾。
fortran作业
工程分析程序设计上机作业 六 上机目的 练习派生类型的定义 构造 初始化,成员的调用和操作,操作符的重载,指针。1 构造一个由年 月 日组成的派生类型,并编写程序,实现从键盘上输入年 月 日,由程序计算出是当年度的第几天。例如 输入 2011,4,8 输出 4月8日是2011年的第98天。注意 需考...
Fortran语言复习大纲
复习内容提纲。程序的结构 书写规则。fortran程序的构成 主程序和子程序 fortran77源程序的书写格式。2.数据类型及其运算。常量和变量的类型 整型 实型 双精度型 复型 逻辑型 字符型 定义变量类型的方法 用i n规则隐式说明和显式说明 符号常量及其定义方法 parameter语句 运算...
2023年fortran卷A
专业班级学号姓名。一 选择题 用铅笔把选中的方格涂黑 40 1 40分 二 填空题 每空占一行,每行写一个答案 25 2 50分 三 程序设计 10 1 10分 编写一个判断素数的函数子程序,在主程序中输入两个整数m 和m2,并输出 m1,m2 中的全部素数。一 选择题。1 下列关于subrouti...