C语言笔记3
第四课 class 4
guess number:
when the number is between 1 to 100, we need to guess for 7 times maximum.
read more: https://arya-1017.github.io/2020/07/12/《算法图解》读书笔记1/
1 |
|
guess a number from 0 to 100.
50
It is too large!
25
It is too small!
37
It is too large!
30
It is too large!
27
You are right! You used 5 times.
antitone and positive sequence:
1 | //antitone |
for循环嵌套
输入一个小于6的正整数,输出从它开始的4个数的所有排序方法组成的3位数
1 |
|
念数字read the numbers
1 | int number,i,n,result,num; |
第五课 class 5
一维数组
类型说明符 数组名[常量表达式] //常量表达式为个数(连续的),正整数。
数组只包含一种类型
int a[10];
引用:a[0], a[1], … …, a[9] //不能一次引用全部的数组
下标在上下界之内
打印数组名打印出的为存放数组首个元素的地址
初始化:在赋值时:int a[8]={0,1,2,3,4,5,6,7}, 若数组大小小于元素数,编译错误
若部分赋值,则其余补零(不可只定义空的大括号)
初始化时可以不填写常量表达式而给元素赋值
若没有赋值,元素为随机值
常量表达式可以用已定义的变量(或其计算)代替,但此时不可赋值
用下标越界可访问数组前后地址的值
冒泡法:(排序)
1 | int main(int argc, char *argv[]) { |
二维数组
类型说明符 数组名[常量表达式] [常量表达式]
int a[4][2] //行可以不写(前),列一定要限定
a[0][0] a[0][1] a[0][2] a[0][3]
a[1][0] a[1][1] a[1][2] a[1][3]
e.g.将每行最大值放在开头
1 | int main(int argc, char *argv[]) { |
第六课 class 6
字符数组
char 数组名[常量表达式]
char 数组名[常量表达式1][常量表达式2]
int a[6]; 合法但浪费内存
char c[3]={‘c’,’h’,76} //数字为ascii码
若字符个数<数组长度,则剩下的用空字符代替(’\0’)
char a[10]={“china”}; or char a[]=”china”;
*单引号为字符,双引号为字符串
char str[3][6]={“zhang”,”wang”,”li”}; //三行,每行最多6个
printf(“%s%c”,str[0],str[1][3]);
gets(字符数组名):输入字符串(可输入空格),遇到第一个回车结束
puts():输出字符串:puts(字符数组名)、puts(字符串)//字符串加双引号,输出后直接换行
一般字符个数比字符串多一个(即\0),printf遇到空字符时结束
scanf 遇到空格、回车、tab结束输入
如:
1 | char c1[6],c2[6]; |
将字符串赋给字符,赋的值为首位字符地址,加一即为下一位
1 | char str[6]="china"; |
字符串处理
#include “string.h”
strcat(字符数组1,字符数组2)
字符数组1空间要能容纳字符数组2
strcopy(字符数组1,字符数串2)
覆盖字符数组1,复制到第一个’\0’前
strlen(字符串)
包括有效字符(包括空格和tab),不包括‘\0’
代替:for(i=0;str[i]!=’\0’;i++);
strcmp(字符串1,字符串2);
比较:从左往右比较ascii码:第一个大则返回1,小则返回-1,相同往后移一位直到结束
strlwr():变小写
strupr():变大写