数组
简单选择排序法
#include <stdio.h>
int main(){
int i,j;
int temp;
int array[]={5,36,4,63};
int size;
size=sizeof(array)/sizeof(array[0]);
for(i=0;i<size-1;i++){ //四个数就有三轮,i的值等于数组的长度减1
for(j=i+1;j<size;j++){//j的值每次都能访问到最后一位,所以是 j < size
if(array[i]<array[j]){
temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
}
for(i=0;i<size;i++){
printf("%d ",array[i]);
}
printf("%d",size);
return 0;
}
二维数组
常称为矩阵,把二维数组写成行和列的排列形式,可以有助于形象化的了解二维数组的逻辑
二维数组定义的一般形式为
类型说明符 数组名【常量表达式】【常量表达式】
int a[3][4],b[5][10]
定义a为三行四列数组,b为五行十列数组
可以将a看作一维数组,数组中的每个元素,又相当于一个数组又包含了4个元素
二维数组同时也是一个特殊的一维数组
二维数组初始化
1.分行给二维数组赋初值,如
int [3][4]={ {1,2,3,4},{1,2,3,4},{1,2,3,4} };这种赋值方法比较直观,第一个花括号内的元素赋值给第一个元素....按行赋初值
2.可以将所有数据依次写在一个花括号内,按数组元素在内存中的排列顺序对各元素赋初值
例如:int a[3][4]={1,2,3,4,5,6,7,8,9,0,1,2};效果与之前的相同,但是第一种方法更好,此方法容易遗漏也不容易检查。
3.如int [3] [4]={{1},{2},{3}},只对每一行的第一列赋值,其余元素值自动为零
也可对某一元素赋值如
int [3] [4]={{1},{0,2},{0,0,3}};
可以有如下样式int a[ ] [10]
可以不写行,但是不能不写列
打印二维数组
eg:
#include <stdio.h>
int main(){
int array[3][4]={{1,2,3,4},{5,6,7,8}};
int i ,j;
for(i=0;i<3;i++){
for(j=0;j<4;j++){
printf("%d \n",array[i][j]);
}
puts("");
}
return 0;
}
puts("");正确 putchar('a');正确
puts();错误 putchar("a")错误 putchar('');错误
打印数组中的最大数
#include <stdio.h>
int main(){
int i,j;
int temp;
int a[3][4]={12,32,52,23,45,123,53,2};
//int max = a[0][0];错误示范
int max;
int l;
int hang,lie;
max = a[0][0];
for(i=0;i<3;i++){
for(j=0;j<4;j++){
printf("%d\t",a[i][j]);
}
printf("\n");
}
for(i=0;i<3;i++){
for(j=0;j<4;j++){
if(max<a[i][j]){
//错误示范:if(max [0][0]<a[i][j]){
//错误示范:if(a [0][0]<a[i][j]){
max = a[i][j];
hang = i;
lie = j;
}
}
}
printf("最大的数是:%d 在第%d行%d列 \n",max,hang+1,lie+1);
return 0;
}
函数
1.为什么需要用函数
①避免代码冗长
②模块化的设计思路
③按照功能划分,每个函数代表一个功能,而函数的名字要体现函数的功能含义,类似变量标识符y=f(x)
形式参数需要包含变量名(非必须)和变量的类型
#include <stdio.h>
void welcomeUser(){ //封装函数 无参无返
printf("==============\n");
printf("hi\n");
printf("==============\n");
}
//有一个参数一个返回值
//这里关心的是数据和值,而和这些定义的变量名无关
int numberUser (int data){ //这里的data可以是任意变量名
int data1; //定义一个临时变量
data1 = data-1; //他的值等于传过来的值减一
return data1; //把最后变量的值拿出来返回给numberUser(赋值)
}
/*函数调用实际上是把从键盘上输入的值存放在变量x当中,x只是把这个值传递给上面函数
的形式参数data(任何随意定义的形式参数),他们的地址和内存空间是不同的
虽然不同,但是在这里需要的是数据,数据一样即可*/
int main(){
int x;
int y;
welcomeUser();
puts("请输入一个x的值:\n");
scanf("%d",&x);
y = numberUser(x);
printf("x=%d y=%d",x,y);
return 0;
}