目录
前言
3.每个学生有3门成绩(整数),计算并输出每个学生的平均成绩。要求3门成绩及平均成绩存放在一个二维数组中。
前言
所有程序已经进行过调试
一、数组做函数的参数
1.计算数组所有元素之和及最后的3个元素之和
代码如下(示例):
#include<stdio.h>
int main()
{
int sum(int a[],int n);
int x[5]={1,2,3,4,5},y1,y2;
y1=sum(x,5);
y2=sum(&x[2],3);
printf("y1=%d y2=%d\n",y1,y2);
return 0;
}
int sum(int a[],int n)
{
int i,s=0;
for(i=0;i<n;i++)
s=s+a[i];
return s;
}
2.用起泡法把N个数按升序排序
代码如下:
#include<stdio.h>
#define N 5
void sort(int a[],int n)
{
int i,j,t;
for(i=0;i<N-1;i++)
for(j=0;j<N-1-i;j++)
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;}
}
int main()
{
int a[N],i;
for(i=0;i<N;i++)
scanf("%d",a+i);
sort(a,N);
for(i=0;i<N;i++)
printf("%d ",a[i]);
return 0;}
3.每个学生有3门成绩(整数),计算并输出每个学生的平均成绩。要求3门成绩及平均成绩存放在一个二维数组中。
#include<stdio.h>
#define N 3
void average(int a[][4],int n)
{
int i,j,sum;
for(i=0;i<N;i++)
{ for(sum=0,j=0;j<3;j++)
sum=sum+a[i][j];
a[i][3]=(int)(sum/3.0+0.5);
}
}
int main()
{
int b[N][4],i,j;
for(i=0;i<N;i++)
for(j=0;j<3;j++)
scanf("%d",&b[i][j]);
average(b,N);
printf("avarage score:\n");
for(i=0;i<N;i++)
printf("%d\n",b[i][3]);
return 0;}
1. 三门成绩求和 for(sum=0,j=0;j<3;j++)
sum=sum+a[i][j];
a[i][3]=(int)(sum/3.0+0.5);//注意类型转化,循环每次都是sum=0//2.for(i=0;i<N;i++)
printf("%d\n",b[i][3]);//注意只输出最后一列,用一次循环结构就可以了//
二、函数的嵌套调用
1.输入m,n的值,计算组合数的值
#include<stdio.h>
double fact(int x)
{
int i;
double t=1;
for(i=1;i<=x;i++)
t=t*i;
return t;}
double com(int n,int m)
{
return(fact(n)/(fact(m)*fact(n-m)));
}
int main()
{
int n,m;
printf("please input n,m(n>=m>=0):\n");
scanf("%d%d",&n,&m);
printf("%.0lf\n",com(n,m));
return 0;
}
主调函数调用函数com,函数com调用函数fact
三、函数的递归调用
1.用递归函数计算n的阶乘
#include<stdio.h>
int main()
{
long fac(int n);
int n;
long y;
scanf("%d",&n);
y=fac(n);
printf("%d!=%ld\n",n,y);
return 0;
}
long fac(int n)
{
long f;
if(n==0||n==1)
f=1;
else
f=n*fac(n-1);
return (f);}
long f;
if(n==0||n==1)
f=1;
else
f=n*fac(n-1); 以(n-1)为参数调用fac函数
四、局部变量和全局变量
1.有10个成绩,编写一个函数,计算最高分、最低分、平均分
#include<stdio.h>
int max,min;
float ave(int a[],int n)
{
int i;
float sum;
max=min=a[0];
sum=0;
for(i=0;i<n;i++)
{
if(a[i]>max)
max=a[i];
else if(a[i]<min)
min=a[i];
sum=a[i]+sum;
}
return sum/n;
}
int main()
{
int a[10],i;
float y;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
y=ave(a,10);
printf("%d,%d,%.1f",max,min,y);
return 0;}
运用全局变量,返回2个值