C语言实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验17.7.2(3)
1.实验代码与运行结果
#include
float input_score(float b[5],int i)
{int k;
printf("请输入第%d个学生的5门成绩:\n",i+1);
for(k=0;k<5;k++) scanf("%f",&b[k]);
return 0;
}
float average1(float b[5],int i)
{float s=0;int k;
for(k=0;k<5;k++) s+=b[k];
s=s/5;
printf("第%d个学生的平均分是:%9.2f\n",i+1,s);
return 0;
}
float average2(float c[10],int i)
{float s=0;
int k=0;
for(k=0;k<10;k++) s+=c[k];
s=s/10;
printf("第%d门学科的平均分是:%9.2f\n",i+1,s);
return 0;
}
void main()
{float a[10][5],c[10],max;
int i,j,p=0,q=0;
for(i=0;i<10;i++) input_score(a[i],i);
for(i=0;i<10;i++) average1(a[i],i);
for(i=0;i<5;i++)
{for(j=0;j<10;j++) c[j]=a[j][i];
average2(c,i);};
max=a[0][0];
for(i=0;i<10;i++)
{for(j=0;j<5;j++) {if(a[i][j]>=max) max=a[i][j],p=i,q=j;};};
printf("最大值是第%d个学生的第%d个课程:%9.2f\n",p+1,q+1,max); }
2.运行过程描述
本实验主要考察了函数与数组。因为一个二元数组可以看成若干个行数组。因此,实验中,我定义了input_score函数来输入成绩,average1函数来计算每个学生的平均分,average2函数来计算每个学科的平均分,它们都以数组名作为函数的一个参数,其中,input_score 和average1实参的数组名分别是二维数组对应行的一维数组名,也就是a[i],而average2,我是新定义了一个一维数组来存储每个学科的成绩,然后计算。
3.遇到的问题
实验中我认为循环语句的运用比较复杂,尤其是循环语句中赋值语句的位置(在循环里或循环外)比较重要,否则会出问题,一个可行的方法是添加几个输出语句,输出几个参数的值,就能在执行程序的时候发现问题所在。
实验17.8.2(3)
1.实验代码与运行结果
#include
int letter=0,space=0,number=0,other=0;
void main()
{
void zifu();
zifu();
printf("字母数:%d\n空格数:%d\n数字:%d\n其它字符:%d\n",letter,space,number,other);
}
void zifu()
{char c;
printf("请输入一串字符\n");
for(;(c=getchar())!='\n';)
{if ((c>='a'&&c<='z') ||(c>='A'&&c<='Z')) letter++;
else if (c==' ') space++;
else if (c>='0'&&c<='9') number++;
else other++;};
}
2.运行过程描述
先定义了全局变量letter,space,number,other,这样就能在主调函数和被调函数中直接使用。用zifu函数实现计数功能,然后在main函数上将结果打出。
实验17.8.2(4)
1.实验代码与运行结果
#include
long int gongyue(long int a,long int b,long int c)
{
if(a%b==0) return b;
else c=a,a=b,b=c%b,gongyue(a,b,0);
}
long int gongbei(long int a,long int b,long int f)
{
return (a*b/f);
}
void main()
{long int a,b,c,e;
printf("请输入两个正整数,并用逗号隔开:\n");
scanf("%d,%d",&a,&b);
if(a
printf("%d,%d\n",a,b);
printf("%d和%d的最大公约数是%d\n",a,b,gongyue(a,b,c));
printf("%d和%d的最小公倍数是%d\n",a,b,gongbei(a,b,gongyue(a,b,c))); }
#include
long int a,b,c,d;
long int gongyue(long int a,long int b)
{
if(a%b==0) c=b;
else c=a,a=b,b=c%b,gongyue(a,b);
return 0;
}
void gongbei()
{
d=a*b/c;