数组
数组具有同质性,有序性,其空间分配连续且具有顺序性。
[]数组运算符
格式:类型名 数组名[下标1]…[下标n]
方括号下标个数表示当前数组维数,比如:
int num[3][4] 表示一个整形的,名为num的二维数组,数组有3行4 列。
在程序中,数组的[]内也可以是整形的表达式,比如在for循环中常用的
for(i = 0 ; i < 10 ; i++)
{
a[i] = i;
printf("%2d",a[i]);
}
其中的i就是整形表达式(上面这个当然还有定义语句,我缺省了)。
!需要注意:c语言是强类型语言,必须先定义再使用,所以上例如果需要正常运行,必须定义变量。
既然说到变量,那么顺便说一下变量名的命名规则:
1)变量名必须以数字,字母,下划线构成;(在linux中,文件命名不能以数字开头)
2)同样,编程中不用数字kait;
3)区分大小写,比如
int Fun_Maxdiv(int *a ,int b)
和
int fun_maxdiv(int *a ,int *b)
不是同一个函数名;
4)一般长度不超过32位;
5)不能使用保留字(当然你可以自己定义一些函数名,但你不能使用 int char 这样的名字为你的变量命名)。
随机数发生
用这个可以避免在测试时的一些重复劳动,比如给数组赋值:
#include<stdio.h>
#include<time .h> //如果你想用系统时间对应的值作为初始化值的话 请务必包含这个头文件
int main()
{
int a[5][5];
srand(time(NULL))//time函数取系统当前时间,对srand函数初始化。
int i , j;
for(i = 0; i < 5; i++)
{
for(j = 0; j < 5; j++)
{
a[i][j] = rand()/100;//这里我需要两位整数,因此对100做除数。
printf("%4d",a[i][j] );
}
printf("\n");//换行
}
return 0 ;
}
矩阵转置
#include<time .h>
#include<stdio.h>
int main()
{
int i,j,t;
int n = 5;
int k = 0;
int a[5][5] ;
srand(time(NULL))//time函数取系统当前时间,对srand函数初始化。
int i , j;
for(i = 0; i < 5; i++)
{
for(j = 0; j < 5; j++)
{
a[i][j] = rand()/100;//这里我需要两位整数,因此对100做除数。
printf("%4d",a[i][j] );
}
printf("\n");//换行
}
for(i=0;i<n-1;i++)
{
for(j=i;j<n;j++) //行列交换
{
t = a[i][j];
a[i][j] = a[j][i];
a[j][i] = t;
}
}
for(i = 0 ; < n ; i++)
{
for(j = 0 ; j < n ; j++)
{
printf("%4d",a[i][j]);
k++;//其实这里没必要这样输出,像输入那样写就行
if(k == n)
{
k = 0;
printf("\n");
}
}
}
return 0;
}
杨辉三角
#include <stdio.h>
int main()
{
int i , j;
int a[10][10] = {0};
for(i = 0; i < 10; i++)
{
a[i][0] = 1 ;
a[i][i] = 1 ;
}
for(i = 2 ; i < 10 ; i++)
{
for(j = 1 ; j <= i-1; j++)
{
a[i][j] = a[i-1][j-1] + a[i-1][j];//这个公式是怎么来的,可以参考我下面贴的图
}
}
for(i = 0; i < 10;i++)
{
for(j = 0;j <= i ;j++)
{
printf("%4d",a[i][j]);
}
printf("\n");
}
return 0;
}
- 注释图