1. 有目标
2. 有标准
? ? ? ? 1)思路
? ? ? ? 2)能转换成代码流程
? ? ? ? 3)代码能不能写出来
? ? ? ? 4)写出来之后,正确性
3. 有行动
4. 想法——现实:多练
--------------------------------------------------------
哪个排序好?
评判标准:算法稳定性 和 效率
? ? ? ?时间:时间复杂度---CPU执行代码(指令)的数量 = 消耗的时间(不是一种具体时间,而是一种趋势)O(n) // 大O计法
思想:(在有序的序列中)找一个合适的位置,插入
二分查找(折半查找)
前提:数据必须有序
字符数据:
unsigned char s[10] ;
unsigned char s[10] = {'h','e','l','l','o'}; // 数组角度看
" hello "? // 字符串常量,本质是存储的时候,是按照字符数组的形式存储
------->? unsigned char s[10] = {'h','e','l','l','o','\0'}; // 数组角度看
'\0' 对字符串来说叫做结束标志,字符串要求必须以\0作为结束标志
最主要的作用:想处理字符串数据
注意:
? ? ? ? 1、字符串——更关注的是字符串整体,而不是单个字符
? ? ? ? 2、字符串的结束标志比较重要,表示字符串结束
? ? ? ? 3、处理字符串时,常常使用结束标志进行判断(while(s[i] != o)putchar(s[i]))
puts() :输出字符串
gets() :输入字符串
s2 = s1; // c语言中不能整体赋值
字符串拷贝:
? ? ? ? strcpy ( 目标字符串,原字符串) 把原字符串拷贝到目标字符串
1. 字符串拼接
流程图:
#include <stdio.h>
int main()
{
char s1[20] = "hello";
char s2[20] = "world";
int i;
int j = 0;
while (s2[j] != '\0')
++j;
// printf("j = %d",j);
for (i = 5; i < 6+j; ++i)
{
s1[i] = s2[i-5];
}
puts(s1);
return 0;
}
2、从终端输入一个n 将数组 int a[9] = {1, 2, 3, 4, 5, 6, 7, 8, 9} 完成如下变化,并打印,
操作方
n:1 9 1 2 3 4 5 6 7 8
n:2 8 9 1 2 3 4 5 6 7
n:3 7 8 9 1 2 3 4 5 6
流程图:
#include <stdio.h>
int main()
{
int a[9] = {1,2,3,4,5,6,7,8,9};
int n,t,j,i;
scanf("%d",&n);
printf("n:%d ",n);
for (j = 0; j < n; ++j)
{
i = 8;
int t = a[i];
for (i = 8; i > 0; --i)
{
a[i] = a[i-1];
}
a[0] = t;
}
for (i = 0; i < 9; ++i)
{
printf("%d ",a[i]);
}
putchar('\n');
return 0;
}
?