C语言函数实验#includestdlib.h
#includestdio.h
#define N 4
int zhi(int a[][N])
{ int i,j,sum=0;
for(i=0;iN;i)
{printf("\n");
for(j=0;jN;j)
{
if((i j)==(N-1)||i==j)
{a[i][j]=1;}
else
{sum =a[i][j];}
printf("M",a[i][j]);
}
}
printf("\n");
return sum;
}
int main()
{
int i,j,a[N][N],sum=0;
for(i=0;iN;i)
{
for(j=0;jN;j)
{
scanf("%d",a[i][j]);
}
}
printf("%d\n",zhi(a));
return 0;
}//qq:470615109
什么是C语言函数(9)extern int x,y;说明x,y为外部整型变量
下面分别介绍以上四种存储类型:
一、自动变量的类型说明符为auto 。
这种存储类型是C语言程序中使用最广泛的一种类型 。C语言规定,函数内凡未加存储类型说明的变量均视为自动变量, 也就是说自动变量可省去说明符auto 。在前面各章的程序中所定义的变量凡未加存储类型说明符的都是自动变量 。例如:
{ int i,j,k;
char c;
……
}等价于: { auto int i,j,k;
auto char c;
……
}
自动变量具有以下特点:
1. 自动变量的作用域仅限于定义该变量的个体内 。在函数中定义的自动变量,只在该函数内有效 。在复合语句中定义的自动变量只在该复合语句中有效 。例如:
int kv(int a)
{
auto int x,y;
{ auto char c;
} /*c的作用域*/
……
} /*a,x,y的作用域*/
2. 自动变量属于动态存储方式,只有在使用它,即定义该变量的函数被调用时才给它分配存储单元,开始它的生存期 。函数调用结束,释放存储单元 , 结束生存期 。因此函数调用结束之后 , 自动变量的值不能保留 。在复合语句中定义的自动变量,在退出复合语句后也不能再使用 , 否则将引起错误 。例如以下程序:
main()
{ auto int a,s,p;
printf("\ninput a number:\n");
scanf("%d",a);
if(a0){
s=a a;
p=a*a;
}
printf("s=%d p=%d\n",s,p);
}
{ auto int a;
printf("\ninput a number:\n");
scanf("%d",a);
if(a0){
auto int s,p;
s=a a;
p=a*a;
}
printf("s=%d p=%d\n",s,p);
}
s,p是在复合语句内定义的自动变量,只能在该复合语句内有效 。而程序的第9行却是退出复合语句之后用printf语句输出s,p的值 , 这显然会引起错误 。
3. 由于自动变量的作用域和生存期都局限于定义它的个体内( 函数或复合语句内),因此不同的个体中允许使用同名的变量而不会混淆 。即使在函数内定义的自动变量也可与该函数内部的复合语句中定义的自动变量同名 。例5.14表明了这种情况 。
[例5.14]
main()
{
auto int a,s=100,p=100;
printf("\ninput a number:\n");
scanf("%d",a);
if(a0)
{
auto int s,p;
s=a a;
p=a*a;
printf("s=%d p=%d\n",s,p);
}
printf("s=%d p=%d\n",s,p);
}
本程序在main函数中和复合语句内两次定义了变量s,p为自动变量 。按照C语言的规定,在复合语句内 , 应由复合语句中定义的s,p起作用,故s的值应为aa,p的值为a*a 。退出复合语句后的s,p 应为main所定义的s,p , 其值在初始化时给定,均为100 。从输出结果可以分析出两个s和两个p虽变量名相同,但却是两个不同的变量 。
4. 对构造类型的自动变量如数组等,不可作初始化赋值 。
二、外部变量外部变量的类型说明符为extern 。
在前面介绍全局变量时已介绍过外部变量 。这里再补充说明外部变量的几个特点:
1. 外部变量和全局变量是对同一类变量的两种不同角度的提法 。全局变是是从它的作用域提出的,外部变量从它的存储方式提出的 , 表示了它的生存期 。
2. 当一个源程序由若干个源文件组成时,在一个源文件中定义的外部变量在其它的源文件中也有效 。例如有一个源程序由源文件F1.C和F2.C组成: F1.C
int a,b; /*外部变量定义*/
char c; /*外部变量定义*/
main()
{
……
}
F2.C
extern int a,b; /*外部变量说明*/
extern char c; /*外部变量说明*/
func (int x,y)
{
……
}
在F1.C和F2.C两个文件中都要使用a,b,c三个变量 。在F1.C文件中把a,b,c都定义为外部变量 。在F2.C文件中用extern把三个变量说明为外部变量,表示这些变量已在其它文件中定义,并把这些变量的类型和变量名,编译系统不再为它们分配内存空间 。对构造类型的外部变量 , 如数组等可以在说明时作初始化赋值 , 若不赋初值,则系统自动定义它们的初值为0 。
三、静态变量
静态变量的类型说明符是static 。静态变量当然是属于静态存储方式,但是属于静态存储方式的量不一定就是静态变量,例如外部变量虽属于静态存储方式,但不一定是静态变量,必须由 static加以定义后才能成为静态外部变量,或称静态全局变量 。对于自动变量 , 前面已经介绍它属于动态存储方式 。但是也可以用static定义它为静态自动变量,或称静态局部变量,从而成为静态存储方式 。
由此看来 , 一个变量可由static进行再说明,并改变其原有的存储方式 。
1. 静态局部变量
在局部变量的说明前再加上static说明符就构成静态局部变量 。
例如:
static int a,b;
static float array[5]={1,2,3,4,5};
静态局部变量属于静态存储方式,它具有以下特点:
(1)静态局部变量在函数内定义,但不象自动变量那样,当调用时就存在 , 退出函数时就消失 。静态局部变量始终存在着,也就是说它的生存期为整个源程序 。
c语言函数实验报告#includestdio.h
int main()
{
int sum(int);
int factorial(int);
int n,s;
long int p;
printf("请输入n值:\n");
scanf("%d",n);
s=sum(n);
p=factorial(n);
printf("1 2 3 ... n=%d\n",s);
printf("n!=%ld\n",p);
return 0;
}
int sum(int x)
{
int a=0;
for(int i=0;i=x;i)
a=a i;
return a;
}
int factorial(int y)
{
int b=1;
for(int i=1;i=y;i)
b=b*i;
return b;
}
因为阶乘会得到很大的结果,会超出p的范围,所以n值不能太大,否则阶乘没有结果(或不对),只有加法的结果;
C语言实验 函数#includestdio.h
int computNum(int num)
{
int sum=0;
int n;
while(num)
{
n=num;//取数的一位数
sum=sum n;//累加这个数
num=num/10;//把num去掉一位数
}
return sum;
}
void main()
{
int number;
printf("请输入一个整数:");
scanf("%d",number);
printf("各个数的和是%d",computNum(number));
}
【c语言实验九函数 c语言实验5函数】关于c语言实验九函数和c语言实验5函数的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。
推荐阅读
- redis存类,怎么在redis中存储对象
- 关于buttons.html5.js的信息
- python爬虫主函数设计实现,python爬虫详细设计说明书
- ubuntupostgresql指令,ubuntu postman
- java多表联查代码 javaweb多表查询
- C语言怎样先打印在输入,c语言怎样先打印在输入数据
- 视频号能分享到朋友圈吗,微信视频号能分享到朋友圈吗
- 贵族益智游戏,贵族游戏是什么意思
- java代码整洁 一段完整的java代码