全局变量&局部变量
#include <stdio.h> //<>所表示的头文件,属于系统包含 #include "max.h" //""所表示的头文件,属于用户自己定义
#include <stdio.h> //<>所表示的头文件,属于系统包含 //#include "max.h" //""所表示的头文件,属于用户自己定义
int g_a=1000; //全局变量,从定义的地方开始,到文件结束 ,所包含的函数都可以调用
int main() //有且仅有一个,也成为入口函数
{ int m=100; //局部变量
prit(m); printf("%d\n",m);
printf("g_a=%d\n",g_a);
g_a +=100;
printf("g_a=%d\n",g_a);
return 0;
}
void prit(int a) //局部变量,当函数调用时,才开始定义变量
{
int n=10; //局部变量,当函数调用时,才开始定义变量
printf("prit_a%d\n",a);
printf("prit_n%d\n",n);
g_a += 200;
printf("g_a=%d\n",g_a);
}
声明变量:
声名变量,不开辟空间,声明可以改变作用域
习题展示
#include <stdio.h>
#include <stdlib.h>
/*
编写一个程序,在一个4*4的矩阵中随机填入0和1;打印该矩阵,找到具有
最多 1 的行和列。
程序解析;需要去判断那一行的相同数字最多,所以需要在循环中去进行判断,还有就是输出数组的下标
*/
int main()
{
int arr[4][4]={0};
int i,j,column,row;
for(i=0;i<4;i++)
for(j=0;j<4;j++)
{
arr[i][j]=rand()%2;//输入0~1的随机数
}
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
{
printf("%d ",arr[i][j]);
}
printf("\n");
}
int max=0;
for(i=0;i<4;i++)
{
int con=0;
for(j=0;j<4;j++)
{
if(arr[i][j]==1) //这个for循环是判断哪一行里面的1最多,然后输出行的下标
con++;
if(con>max)
{
max=con;
column=i;
}
}
}
int max1=0;
for(j=0;j<4;j++)
{
int con=0;
for(i=0;i<4;i++)
{
if(arr[i][j]==1)//同理,这里我们把原本的列(j)变成了行,然后判断1,输出下标
con++;
if(con>max1)
{
max1=con;
row=j;
}
}
}
printf("column=%d\nrow=%d\n",column,row);
return 0;
}
代码原图及运行结果如下图所示:
因为而二维数组在定义时不能使用变量去定义,所以我定义初始是4行4列来运行的。