1.冒泡排序
2.选择排序
以上这两个程序考的可能性很大
3.斐波拉比数列,前n项
- 3.1之前用递归写过
这次用数组来写
//fibonacci序列的前n项 放入 数组
void Fib(int a[],int n)
{
int i;
a[0]=a[1]=1;
for(i=2;i<n;i++)
a[i] = a[i-2] +a[i-1];
}
int main()
{
int a[100];
int i;
Fib(a,10); //fib数列的前10向
for(i=0;i<10;i++)
printf("%5d",a[i]);
}
==============================================
字符串
1.字符在程序中用数组来存储----字符数组
2.ASCII码值为零: '\0' ; 不是 '0';
3.已'\0'作为结束标记的字符数组,就不需要知道数组有多长
int main()
{
char s1[100] = {'a','b','c','\0'};
s[0] = 'p';
puts(s1); //输出的pbc
//使用字符串常量对字符数组初始化
char s2[100] = "abc";
sizeof(s2) //字符串占多少字节和字符串长度不同
//不能这样赋值:
//char s[100];
//s = {...}
char s[100]; //定义了字符数组s
s[0] = 'a';
s[1] = 'b';
s[2] = 'c';
s[3] = '\0'; //放入结束标记
s[3] = 0; //放入整型的0,也可以
//puts 库函数,只需要传入数组名,不需要传入长度了
puts(s); //非接触结束标记的长度,即为3
return 0;
}
判断字符串长度
char s[]="abc";
sizeof(s) //字符串长度为4,因为有结束标记
strlen(s); //3,不包含结束标记
//改变s[1] = '\0';
char s[]="abc";
s[1] = '\0';
sizeof(s) ; //4,长度不变
strlen(s); //1,到结束标记之前有多长,a \0 c,到第二个结束
puts(s); //输出a
字符串比较
1.字符串不属于基本数据类型
2.不能用关系运算符比较字符串
- 不能 :if(str1>str2) ❌
3.使用strcmp(str1,str2)比较
返回值 --该函数返回值如下:
- 如果返回值小于 0,则表示 str1 小于 str2。
- 如果返回值大于 0,则表示 str1 大于 str2。
- 如果返回值等于 0,则表示 str1 等于 str2。
4.不能用 = 运算符 赋值
- s2 = s1; ❌
应该使用strcpy()函数
5.需要掌握的库函数
puts
gets
strlen
strcmp
strcpy
int main()
{
//输入n个字符串,以长度为0的结束(直接按回车)
//输出其中最大的
char max[100]=""; //存储max字符串
char s[100];
gets(s);
while(strlen(s)>0)
{
if( strcmp(s,max)>0 )
strcpy(max,s);
gets(s);
}
puts(max);
}
//比较字符串,输出最大值字符串
void maxString(int n)
{
int i;
char max[1000]="",s[1000];
for(i=0;i<n;i++)
{
gets(s);
if(strcmp(s,max)>0)
strcpy(max,s);
}
puts(max);
}
//strcpy函数使用
int main()
{
char d[100]="abcdef";
strcpy(d,"hellow");
puts(d);
}