9.
#include “stdio.h”
func(int b[ ])
{ int j;
for(j=0;j<4;j++)
b[j]=j;
}
main( )
{ int a[4], i;
func(a);
for(i=0; i<4; i++)
printf(“%2d”,a[i]);
}
运行结果为:
0 1 2 3
详见教材P194
定义函数func
函数头:未定义函数的类型,则系统默认为int型。函数func的形参为整型数组名,即只接收整型数组地址。
函数体:定义整型变量j
循环变量初值(表达式1)j=0, 使得循环条件(表达式2)j<4成立,执行循环体
第1次循环
执行b[j]=j; 即b[0]=0;
执行循环变量自增(及表达式3) j++,j为1,使得j<4成立,继续执行循环体
第2次循环
b[1]=1;
j++,j为2,使得j<4成立,继续执行循环体
第3次循环
b[2]=2;
j++,j为3,使得j<4成立,继续执行循环体
第4次循环
b[3]=3;
j++,j为4,使得j<4不成立,结束循环
main函数:
定义整型变量i和数组a,其长度为4,
func(a);表示调用函数func,并以数组名a作为调用的实参(数组名在C语言中表示数组所在内存空间的首地址,在以数组名作为实参时,形参与实参公用存储空间,因此对数组b的操作,即对数组a的操作。)
10.
#include <stdio.h>
main()
{float fun(float x[]);
float ave,a[3]={4.5,2,4};
ave=fun(a);
printf(“ave=%7.2f”,ave);
}
float fun(float x[])
{int j;
float aver=1;
for (j=0;j<3;j++)
aver=x[j]*aver;
return(aver);
}
运行结果为:
ave= 36.00
11.
#include <stdio.h>
main()
{int a[2][3]={{1,2,3},{4,5,6}};
int b[3][2],i,j;
for(i=0;i<=1;i++)
{for(j=0;j<=2;j++)
b[j][i]=a[i][j];
}
for(i=0;i<=2;i++)
{for(j=0;j<=1;j++)
printf("%5d",b[i][j]);
}
}
运行结果为:
1 4 2 5 3 6
12.
#include <stdio.h>
f(int b[],int n)
{int i,r;
r=1;
for (i=0;i<=n;i++)
r=r*b[i];
return (r);
}
main()
{int x,a[]={1,2,3,4,5,6,7,8,9};
x=f(a,3);
printf(“%d\n”,x);
}
运行结果为:
24
13.
#include"stdio.h"
main()
{int j,k;
static int x[4][4],y[4][4];
for(j=0;j<4;j++)
for(k=j;k<4;k++)
x[j][k]=j+k;
for(j=0;j<4;j++)
for(k=j;k<4;k++)
y[k][j]=x[j][k];
for(j=0;j<4;j++)
for(k=0;k<4;k++)
printf("%d,",y[j][k]);
}
运行结果为:
0,0,0,0,1,2,0,0,2,3,4,0,3,4,5,6
函数
1.
#include <stdio.h>
int Sub(int a, int b)
{return (a- b);}
main()
{int x, y, result = 0;
scanf("%d,%d", &x,&y );
result = Sub(x,y ) ;
printf("result = %d\n",result);
}
当从键盘输入:6,3运行结果为:
result =3
2.
#include <stdio.h>
int min( int x, int y )
{ int m;
if ( x> y ) m = x;
else m = y;
return(m);
}
main() {
int a=3,b=5,abmin ;
abmin = min(a,b);
printf(“min is %d”, abmin);
}
运行结果为:
min is 5
3.
#include<stdio.h>
func(int x) {
x=10;
printf(“%d, ”,x);
}
main( )
{ int x=20;
func(x);
printf(“%d”, x);
}
运行结果为:
10, 20
4.
#include <stdio.h>
int m=4;
int func(int x,int y)
{ int m=1;
return(x*y-m);
}
main()
{int a=2,b=3;
printf("%d\n",m);
printf("%d\n",func(a,b)/m);
}
运行结果为:
4
1
整型变量m在函数外定义,因此m为全局变量,其作用于范围为其定义位置开始,一直到整个程序结束。因此func与main函数都可以访问m
程序首先执行main函数
执行printf("%d\n",m); 即输出m中的值4,并换行。
执行printf("%d\n",func(a,b)/m);即输出表达式func(a,b)/m的值,为了计算该表达式,
需要调用函数func。此时main将a,b中的2和3值作为实参传递给func的x和y
程序开始转向执行func函数,此时func中的x为2,y为3
执行int m=1; 此句定义了一个局部变量m并赋值为1 。m的作用域为其所在的复合
语句,即func的函数体,因此在func的函数体重,有限访问局部变量m。
执行return(x*y-m); 即return(2*3-1) ;返回的是整数5.
func函数返回至main函数中的被调用处
main函数中func(a,b)的值为5,func(a,b)/m=5/4=1,注意,在main函数中访问的m为全局变量m,此时main函数无法访问func中的m,因为不在func中m的作用域。
5.
#include <stdio.h>
int fun(int a, int b)
{ if(a>b) return(a);
else return(b);
}
main()
{ int x=15, y=8, r;
r= fun(x,y);
printf("r=%d\n", r);
}
运行结果为:r=15
程序首先执行main函数
执行r= fun(x,y);即将func(x,y)的值赋给r,为了计算该表达式,需要调用函数func。此时main将x,y中的15和8值作为实参传递给func的a和b
程序开始转向执行func函数,此时func中的a为15,b为8
执行if语句;判断if后面的表达式,a>b成立,因此执行相应的操作return(a);即返回
a的值 。
func函数返回至main函数中的被调用处
main函数中func(x,y)的值为15,即将15赋给r。
执行printf("r=%d\n", r); 即输出r=15
6.
#include <stdio.h>
int fac(int n)
{ int f=1,i;
for(i=1;i<=n;i++)
f=f * i;
return(f);
}
main()
{ int j,s;
scanf(“%d”,&j);
s=fac(j);
printf("%d!=%d\n",j,s);
}
如果从键盘输入3, 运行结果为: 3!=6
程序首先执行main函数
执行r= fun(x,y);即将func(x,y)的值赋给r,为了计算该表达式,需要调用函数func。此时main将x,y中的15和8值作为实参传递给func的a和b
程序开始转向执行func函数,此时func中的a为15,b为8
执行if语句;判断if后面的表达式,a>b成立,因此执行相应的操作return(a);即返回
a的值 。
func函数返回至main函数中的被调用处
main函数中func(x,y)的值为15,即将15赋给r。
执行printf("r=%d\n", r); 即输出r=15
标签:return,函数,int,必练,C语言,part,func,printf,main From: https://blog.csdn.net/2303_81838541/article/details/143643408