今天主要学习了将数组传递给函数,全局变量和局部变量。今天学的小知识点比较多,也比较的简单。
#include <stdio.h> //<>所表示的头文件属于系统包含
#include "math.h" //""所表示的头文件,属于用户自己定义
int a=10; //如果放在主函数前面,就是全局变量,也就是说从定义开始到文件结束
//,所包含的函数都能用,例如
#include <stdio.h>
int a=10; //全局变量
int main(){
int b=4; //局部变量
printf("main a = %d\nb=%d\n",a,b);
fun(); //函数调用
return 0;
}
int fun(){ //子函数
printf("fun a = %d\n",a);
}
//main函数里面能把a,b的值都输出出来,a=10,b=4,而b就相当于一个局部变量,子函数里面不定义a,但a可以在子函数里面被调用出来,b则不能,这就相当于全局变量和局部变量
静态局部变量
并不会随着函数的结束而销毁,静态变量会保留上次运行的值继续执行下一次执行
#include <stdio.h>
int a=10;
int main(){
printf("main a =%d\n",a);
fun(); //第一次调用
fun(); //第二次调用
fun(); //第三次调用
return 0;
}
int fun(){
static int a =100; //静态变量a=100
a+=1; //a+1
printf("fun a = %d\n",a);
}
实例
输入0-511之间任意地一个数,让他以二进制形式输出出来,H代表0,T代表1
#include <stdio.h>
void change(int b[][3],int n);
int main(){
int num;
int i,j;
int a[3][3]={0};
// int b;
printf("请输入一个0-511之间的数:\n");
scanf("%d",&num);
// printf("%d",num);
for(i=0;i<3;i++){
for(j=0;j<3;j++){
a[i][j]=num%2;
num/=2;
printf("%d ",a[i][j]);
}
printf("\n");
}
printf("\n");
change(a,3);
//新增
for(i=0;i<3;i++){
for(j=0;j<3;j++){
if(a[i][j]==0)
printf("H ");
else
printf("T ");
}
printf("\n");
}
return 0;
}
void change(int b[][3],int n){
int i,j;
int c; //定义一个变量用来作为媒介
for(i=0;i<n;i++){
for(j=0;j<n;j++){
if(i==1&&j==1){ //因为是三行三列的数组,所以转换时候中间的值是不用再次进行转换的所以遍历到中间数时就会返回
return ;
}
else{
c=b[2-i][2-j]; //将最后一个元素赋给空置
b[2-i][2-j]=b[i][j];//将第一个元素的值赋给最后一个元素
b[i][j]=c; // 将空值里面的值赋给第一个元素
//以此类推
// printf("%d ",a[i][j]);
}
}printf("\n");
}
}