实验报告
课程名称:高级语言程序设计
实验九:函数与数组
班级:
学生姓名:
学号:
专业:
指导教师:
学期:2010-2011学年上学期
云南大学信息学院
一、实验目的
1、掌握数组作为参数的函数编写与调用方法
2、掌握数组作为参数的特殊性
3、掌握字符串作为参数的函数编写与调用方法
二、知识要点
1、地址传递的概念及使用
2、数组元素和数组名作为函数参数的特点与区别
3、字符串作为参数的特点:‘\0’字符的使用
三、实验预习(要求做实验前完成)
1、数组作为函数参数时,其特殊性是
2、定义作为参数的函数时,通常需要提供长度作为参数;而定义
作为参数的函数时,通常不需要提供长度参数
3、写出满足如下要求函数的函数首部:
①函数名为fmax,求一个实型数组的最大元素值:
②函数名为scount,求一个字符串中大写字母的个数:
③函数名为delf,删除一个字符串的第一个字符:
四、实验内容
1、编写一个函数,其功能是将字符串中的大写字母改为小写字母,其他字
符不变。
2、编写一个函数,求出给定的二维数组中每一行最大的元素,并显示出来。
3、在主函数中输入N个人的某门课程的成绩,分别用函数求:①平均分、最
高分和最低分;②分别统计90~100分的人数、80~89分的人数、70~
79分的人数、60~69分的人数及59分以下的人数。
结果在主函数中输出。
五、实验结果(要求写出运行界面及输出的运行结果)
六、实验小结
1.#include <stdio.h>
#include <string.h>
void change(char a[])
{int i;
for(i=0;i<strlen(a);i++)
if(a[i]>='A'&&a[i]<='Z')
a[i]+=32;
}
void main()
{char c[30],k;
printf("请输入一个包含大写字母的字符串:\n"); gets(c);
change(c);
puts(c);
}
2.#include <stdio.h>
void max(int b[3][3])
{int i,j,max[3];
for(i=0;i<3;i++) max[i]=b[i][0];
for(i=0;i<3;i++)
for(j=0;j<3;j++)
if(b[i][j]>max[i]) max[i]=b[i][j];
for(i=0;i<3;i++)
printf("第%d行最大值为:%d\n",i+1,max[i]); printf("\n");
}
void main()
{int i,j,a[3][3];
printf("输入3行3列的数组:");
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%d",&a[i][j]);
printf("数组元素为:\n");
for(i=0;i<3;i++)
{for(j=0;j<3;j++) printf("%d ",a[i][j]);
printf("\n");
}
max(a);
}
3.
#include <stdio.h>
int max,min;
float aver;
void f1(int score[],int n)
{int i; float sum;
max=min=sum=score[0];
for(i=1;i<n;i++)
{sum+=score[i];
if(score[i]>max)max=score[i];
else if(score[i]<min) min=score[i];
}
aver=sum/n;
}
void f2(int score[],int b[],int n)
{
int i;
for(i=0;i<5;i++) b[i]=0;
for(i=0;i<n;i++)
switch(score[i]/10)
{case 10:
case 9:b[4]++;break;
case 8:b[3]++;break;
case 7:b[2]++;break;
case 6:b[1]++;break;
default: b[0]++; break;
}
}
main()
{int i,n,score[50],b[5];
printf("输入N值::");
scanf("%d",&n);
printf("输入N个成绩:");
for(i=0;i<n;i++)
scanf("%d",&score[i]);
f1(score,n);
printf("max=%d min=%d aver=%f\n",max,min,aver); f2(score,b,n);
printf("90~100 80~89 70~79 60~69 <60\n");
for(i=4;i>=0;i--)
printf("%4d ",b[i]);
printf("\n");
}。