c语言time函数怎么用_C语言学习 用函数设计程序(2)

在上一节的学习中,在例5中有个错误,不知道你们发现了没有:

bbcb128dda8495d91da69e794fa92770.png

在第七行中不能用三目运算符来进行运算,现只能用if语句来进行改写:

if(array[i][j]>max)

max=array[i][j];

例1 若外部变量与局部变量同名,分析结果

#include<stdio.h>

int a=3,b=5; //定义全局变量

int main()

{

int max(int a,int b);

int a=8; //定义局部变量

printf("max=%dn",max(a,b));

return 0;

}

int max(int a,int b)

{ int c;

c=a>b?a:b;

return c;

}

答:由于全局变量和局部变量中都含有a,故两者发生冲突,局部变量从而将全局变量所覆盖,故max(a,b)=5,而不是8

例2 考察静态局部变量的值

#include<stdio.h>

int main()

{int f(int);

int a=2,i;

for(i=0;i<3;i++)

printf("%dn",f(a));

return 0;

}

int f(int a)

{auto int b=0;

static int c=3; //注意此处的static

b+=1;

c+=1;

return(a+b-c);

}

解析:这程序输出的结果为-1;-2;-3

但如果将static给删去,即变成int c=3,结果就变成了-1;-1;-1

两者出现不同的原因:static保证了在函数调用后c并未恢复初始值3,而是仍保留4,而将static删去后,int就变成了自动局部变量,就无法保证这一点了。

例3 写一个函数,使给定的一个3✖️3的二维数组转制,即行列互换

#include <stdio.h>

#define N 3 //使N=3(全局变量)

int array[][3]; //定义全局变量array[][3]

int main()

{void convert(int array[][3]); //函数声明

int i,j;

for(i=0;i<3;i++)

for(j=0;j<3;j++)

scanf("%d",&array:n");

printf("array :n"):

for(i=0;i<3;i++)

{for(j=o;j<3;j++)

printf("%d",array[i][j]);

printf("n");

}

return 0;

}

void convert(int array[][3]) //定义函数

{int i,j,t;

for(i=0;i<N;j++)

{t=array[i][j];

array[i][j]=array[j][i];

array[j][i]=t;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值