数组 选择排序 putchar gets
数组初始化:
定义一个数组,不完全初始化,那么未初始化的值都为0
定义一个数组,不初始化,里面全都是垃圾值
让数组全部初始化0 可以 int a[500] = {0};
数组初始化错误:
int a[5] ;
b = {1,2,3,4,5}//这样严重不可以,因为b是一个地址
int b[5]= {1 , , 2};//这样也不可以,不能中途出现未初始化的
地址+1:
int a[10];
printf("%p %p %p", &a[0] , a , &a) //这三个值一样
printf("%p %p %p", &a[0]+1, a +1, &a+1) //不一样
a+1 代表第一个元素地址+1 相当于加了1个类型长度的字节 --------> 所以才有了a[1]
&a代表整个数组,+1 相当于加了10个类型长度的字节
可变长数组:
c89不支持可变数组,c99支持可变数组
c89不支持for(int i=0;i<10;i++) c99支持这样写
定义数组的时候,必须要知道数组的长度 int a[] ;//严重错误
定义数组长度的时候,最好使用宏
#define N 5
int a[N];
获取数组的长度:
int a[] = {2 , 3 , 6 , 7 , 9 , 8 , 1 , 4 ,10 };
int len = sizeof(a)/sizeof(int); // 或者sizeof(a)/sizeof(a[0]);
printf("%d\n",len);
数组间的赋值:
int a[5] = {1,2,3,4,5};
int b[5];
b = a;//严重错误,这是地址间的赋值,两个数组直接的赋值应该for,
随机数:
srand(1);//生成随机数种子
rand();//根据种子来产生随机数
在 stdlib.h
选择排序:
void select_sort(int a[], int n)
{
int i, j, min, temp;
for (i = 0; i < n; i++)
{
min = i; //min表示的意思是最小值的下标
for (j = i + 1; j < n; j++)
{
if (a[min] > a[j]) //每次都把最小的那个值 和 第一位的值 替换顺序
{
min = j;
}
temp = a[i];
a[i] = a[min];
a[min] = temp;
}
}
}
维基百科的选择排序
void selection_sort(int *a, int len)
{
int i, j, min, t;
for (i = 0; i < len - 1; i++)
{
min = i;
//查找最小值
for (j = i + 1; j < len; j++)
if (a[min] > a[j])
min = j;
//交换
if (min != i)
{
t = a[min];
a[min] = a[i];
a[i] = t;
}
}
}
}
冒泡排序:
int main()
{
int a[5] = {9,8,3,5,2};int i;printf("冒泡排序前:\n");for (i = 0; i < 5;i++){printf("%d ", a[i]);}
printf("\n");
int m, n,temp;for (m = 0; m < 5 - 1;m++){for (n = 0; n < 5 - 1 - m; n++){if (a[n] > a[n + 1]){
temp = a[n];a[n] = a[n + 1];a[n + 1] = temp;
}}}
printf("冒泡排序后:\n");for (i = 0; i < 5; i++){printf("%d ", a[i]);}printf("\n");return 0;
}
putchar :
putchar('\n');//这里是单引号,如果用双引号,错误 含义是一次打出一个字符
printf("\n"); //这里是双引号,如果用单引号,错误
getchar:
//getchar 只能接收一个字符
char ch;
char tmp;
while (1)
{
ch = getchar();tmp = getchar(); //过滤回车if (ch >= '0' && ch <= '9'){printf("你输入的是一个数字\n");}else if (ch >= 'a' && ch <= 'z'){printf("你输入的是一个小写字母\n");}else if (ch >= 'A' && ch <= 'Z'){printf("你输入的是一个大写字母\n");}else{printf("你输入的是其他字符\n");}
}
gets :
gets(a) //a要是个指针 空格也能接收
puts:
int main()
{
char ch[10];
puts("please input your name:\n"); //注意,这里会有两个换行,因为puts会自动在后面增加一个\n
gets(ch);
puts(ch);
}