实验7和实验8今天完成,主要是验证性实验,下次实验开始做考试系统
实验7 函数实验
完成实验1、2、3、5、6、8、9、11、12,其余选作
实验目的
(1) 理解函数定义的方法(2) 掌握函数实参与形参的对应关系,以及”参数传递”的方式掌握函数的嵌套调用和递归调用的方法;
掌握全局变量和局部变量、动态变量、静态变量的概念和使用方法。
1.基本内容
【题目1】以下程序是求3个数中的最大值#include
void main()
{
int a,b,c,m;
int max(int x,int y); /* 函数声明*/
printf("input a,b,c=");
scanf("%d,%d,%d",&a,&b,&c);
m=max(max(a,b),c);
printf("最大值是:%d\n",m);
}
int max(int x,int y) /*函数定义*/
{
int z;
z=(x>y)?x:y;
return z;
}
【题目2】子函数素数,主函数输入,。
#include
void main()
{
int number;
int prime(int number);
printf("请输入一个正整数:\n");
scanf("%d",&number);
if ( prime(number) )
printf("\n %d是素数:",number);
else
printf("\n %d不是素数:",number);
}
int prime(int number) /*请注意区别main函数和prime函数中的number变量*/
{
int flag=1,n;
for (n=2; flag==1 && n<=number/2;n++)
if ( number%n==0 )
flag=0;
return (flag);
}
【题目3】读程序#include
void main()
{
int i=2,p;
int f(int a, int b);
p=f(i,i+=1);
printf("%d\n",p);
}
int f(int a, int b)
{
int c;
if(a>b)
c=1;
else if(a==b)
c=0;
else
c=-1;
return(c);
}
①将程序中第4行p=f(i,i+=1); 改为:
p=f(i,i);
②实践说明,函数的参数求值顺序是:【题目4】在主函数中输入和输出字符串子函数实现一个字符串按反序存放。【题目5】用子函数计算名学生的平均分。错误,请改正#include
#define N 4
float average(float array[]) /* 注意数据类型的一致 */
{
int i; float aver,sum=0;
for (i=0;i
sum+=array[i];
aver=sum/N;
return (aver);
}
void main()
{
float score[N],aver;
int i;
printf("\n input %d scores:\n",N);
for (i=0;i
scanf("%f",&score[i]);
aver=average(score); /* error */
printf("\n average score is %5.2f\n",aver);
}
【题目6】错误,#include
void main()
{
int a[][3]={0,2,4,6,8,10,12,14,16},sum;
int func(int a[][3]); /*函数声明*/
sum=func(a); /*error*/
printf("\n sum=%d\n",sum);
}
int func(int a[][3]) /*error*/
{
int i,j,sum=0;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
if(i==j)
sum+=a[i][j];
return sum;
}
【题目7】在主函数中定义数组A[3][4]、B[4],用子函数对数组A每一行求和,其值放在数组B中,在主函数中输出值。【题目8】输入两个正整数,求其中最大公约数和最小公倍数#include
int fun1(int x, int y)
{
int temp;
if (x