1.冒泡排序
int arr[5]= {11,45,2,66,34};
参加数据个数 比较次数
5 4 ------arr[4]
第一次比较
arr[0] arr[1]----->arr[1]
arr[1] arr[2]----->arr[2]
arr[2] arr[3]----->arr[3]
arr[3] arr[4]----->arr[4]
第二次比较
4 3-------arr[3]
arr[0] arr[1]----->arr[1]
arr[1] arr[2]----->arr[2]
arr[2] arr[3]----->arr[3]
第三次比较
3 2------arr[2]
arr[0] arr[1]----->arr[1]
arr[1] arr[2]----->arr[2]
第四次比较
2 1------arr[1]
arr[0] arr[1]----->arr[1]
例如:
#include<stdio.h>
int main()
{
int arr[5]= {11,45,2,66,34};
int i = 0;
int j = 0;
printf("排序前:\n");
for(i=0; i<5; i++)
printf("%4d",arr[i]);
printf("\n");
for(i=0; i<4; i++)//控制比较的轮数
{
for(j=0; j<4-i; j++)//控制藏与比较的元素个数
{
if(arr[j]>arr[j+1])
{
//数据交换
int temp =arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
//输出
printf("排序后:\n");
for(i=0; i<5; i++)
printf("%4d",arr[i]);
printf("\n");
return 0;
}
//获取0~100之间的随机数
//srand(time(0));
sranf(time(NULL))//此语句不能放在循环中,否则产生的随机数相同
int num =rand()%100
3.字符串
(1)字符串常量
字符串是有双引号阔起来的字符序列集合
"a" "hhh" "097fslkj" "3$@fs"
字符串的结束标志:\0
(2)C中没有字符所对应的数据类型,通常使用数组字符保存
字符串:
char arr[32] = {"hello,uuhhio"};
char arr[32] = "fdsjhkgadsaghgkjhdj"
char af[32]={'a','a','r','d'};
char bf[32]='"dfsf"
注意:字符数组保存字符和保存字符串的区别:
字符串有'\0'
(3)字符串的输入和输出
scanf()/printf--------->占位符:%s
//scanf()不能接收字符串的中的空格
//但是能接收单个字符中的空格
//getchar();吸收多余的回车符。
(4)gets()/buts
gets():从键盘输入
可以接收空格;
此函数有bug,不建议使用,
puts():输出字符串
自动换行,无需换行符,
(5)fgets()/fputs()
fgets(arr,32,stdin):获得收据
arr:数组名,即一个地址
sizeof(arr):读取数据的大小,也可以直接用数字代替
stdin:标准输入
fputs():输出数据
arr:要输出的字符串
stdout:标准输出
注:此处无bug,可以放心食用!!!!
(6)指针和字符串
(7)字符串相关函数
头文件:#include<string.h>
strlen():计算字符串长度
\0不计入字符串长度
注意区分和seziof的区别
strcpy():字符串拷白
strcpy(buf,arr)将arr的内容拷白到buf中
strcmp():字符串的比较(hao7.c)
int ret = strcmp(arr,buf):
若ret=0;则两字符串相等
若ret>0;则arr大于buf
若ret<0; 则arr小于buf
strcat():字符串的拼接
strcat(arr,buf);
将buf的内容拼接到arr中,一定要保证
arr的空间大!!!否则会出现数组越界问题