实验6 数组和字符串

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验6 数组和字符串

【实验目的】

①掌握一维数组和二维数组的基本操作(定义、初始化、输入、赋值、输出)。

②掌握字符数组和字符串函数的使用。

③掌握与数组有关的常用算法(排序、查找、数组元素的插入和删除)。

【实验6.1】从键盘输入10个整数存入数组a中,然后输出该数组各个元素,并求其中的最大值、最小值和平均值。

【提示】

(1) 通过循环输入10个整数并存入数组a.。

(2)以a[0]作为最大值、最小值及累加和的初始值,用数组的下标和循环相结合,求出

数组的最大值、最小值和平均值。

(3)输出数组各元素,并输出最大值、最小值和平均值。

注意:平均值是通过除法完成的,应选用适当的数据类型。

答案:#include

void main()

{int a[10],max,min,sum,i;

float aver;

for(i=0;i<10;i++)

scanf("%d",&a[i]);

printf("%d",a[i]);

sum=0;

for(i=0;i<10;i++)

sum=sum+a[i];

aver=sum/10.0;

max=a[0];min=a[0];

for(i=0;i<10;i++)

{ if(max

max=a[i];

if(min>a[i])

min=a[i];

}

printf("max=%d,min=%d,aver=%f",max,min,aver);

}

【实验6.2】实行学分制,学生的平均绩点是衡量学生学习的重要依据。成绩等级与绩点的关系如下表所示:

平均绩点=∑∑⨯所学各课程的学分点绩所学各课程学分

编一程序利用两个一维数组分别输入某学生20门课程的学分xf[20]和对应成绩score[20],计算其平均绩点aver 。

【指导】本题是一个求数组元素累加和的问题。

(1)定义数组及相关的变量:20门课程的成绩用数组score[20]表示,20门课程的学分用数组xf[20]表示。

(2)输入20门课程的成绩及其对应学分保存在数组中。

(3)计算20门课程的学分之和sumxf ,并根据成绩的档次分别取不同的绩点计算所有课程的学分与绩点的乘积之和sumscore 。

(4)平均绩点aver=sumscore/sumxf 。

【参考程序】

#include

void main()

{ float score[20],sumscore=0.0F,sumxf=0.0F,aver;

int i,jd,xf[20];

for (i=0; i<20; i++)

scanf("%f%d",&score[i],&xf[i]);

for (i=0; i<20; i++)

{ sumxf=sumxf+xf[i]; //计算学分和

if (score[i]>=90) //由成绩确定绩点

jd=4;

else if (score[i]>=80)

jd=3;

else if (score[i]>=70)

jd=2;

else if (score[i]>=60)

jd=1;

else

jd=0;

sumscore=sumscore+xf[i]*jd; //计算学分与绩点的乘积和

}

aver=sumscore/sumxf; //计算平均绩点

printf("%.2f\n",aver);

}

【实验6.3】请编写程序,它的功能是: 将M 行N 列的二维数组中的数据, 按列的顺序依次放到一维数组中。

例如, 二维数组中的数据为:

33 33 33 33

44 44 44 44

55 55 55 55

则一维数组中的内容应是:

33 44 55 33 44 55 33 44 55 33 44 55。

【提示】

(1)定义int 型数组a[M][N]及b[M*N](M 、N 用符号常数定义)。

(2)输入二维数组的实际行数和列数,以及二位数组的所有元素。

(3)通过二重循环将二维数组a 中各列的元素依次赋值到一维数组b 中(b 的下标要逐次增加)。

(4)按矩阵的形式输出二维数组a 及一维数组的各个元素。

【实验6.4】编制程序,从num 个(num 的值通过键盘输入来指定)字符串中找出最长的一个字符串,并将输出该最长的字符串及其在数组中的位置。例如,输入的字符串为:

Pascal

Fortran

Cobol

Lisp

Ada

则应输出:

最长的字符串是:Fortran,它位于数组的第2行。

【提示】

(1)定义符号常数M 为10、整型变量num 、字符型数组str[M][80]。

(2)输入num 的值,它代表要实际输入的字符串的个数

(3)依次输入num 个字符串存放在 str 中。

(4)依次计算str 中每个字符串的长度,并从中找出最长的字符串,记下它在数组中的下标。

(5)输出结果。

【实验6.5】编制程序自动生成如下N ×N 矩阵,然后将数组的第一行与倒数第一行的元素对调,将第二行元素与倒数第二行元素对调,并输出对调后的矩阵。

⎥⎥⎥⎥⎦

⎤⎢⎢⎢⎢⎣⎡=16151413121110987654321A 【指导】

(1) 可以用a[i][j]=i*4+j+1自动生成上述矩阵。

(2) 为了实现第i 行元素与倒数第i 行元素交换,令i 从1变化到N/2,使a[i][j]与a[N-1-i][j]交换。

【参考程序】

#include

#define N 4

void main()

{ int a[N][N],i,j,k;

for (i=0; i

for (j=0; j

a[i][j]= i*4+j+1; //自动生成矩阵

for (i=0; i

for (j=0; j

相关文档
最新文档