break 语句的用法:跳出switch语句块,也可以来跳出循环体。
continue语句的用法:终止当前循环后又回到循环体的开头执行下一次循环
素数的算法:
for(i=3;i<=sqrt(n);i+2)
{
if(prime[i])
for(j=i+1;j<=n;i+=i)prime[j]=false;
}
数组下表的方式:
count【o】=7;
count【1】=count【0】*2;
++count【2】;
这种表示方式,不仅可以表示存储单元的值,同时,也可以表示存储单元自身,也就是说可以作为左值。
不能用数组对数组进行赋值或者初始化,同时,也不能用数组类型作为函数的参数或返回值。
当数组类型做右值使用时,自动转换成指向数组元素首元素的指针。所以在传递数组时,是传递的是一个指针。(是指针类型,而不是数组类型)
#include
20 #include
21
#include
22 int main(int argc, char **argv)
23
{
24 char gesture[3][10] = { "scissor", "stone", "cloth" };
25
int man, computer, result, ret;
26 srand(time(NULL));
//设置随机数种子
27 while (1) {
28 computer = rand() % 3;
29
printf("/ninpute you gesturre");
30 printf("(0-scissor 1-stone
2-cloth):/n");
31 ret = scanf("%d", &man);
32 if (ret != 1
|| man < 0 || man > 2)
33 printf("invalid
input/n");
34 return 1;
35 printf("you:%s/t computer:%s/n",
gesture[man], gesture[computer]);
36 result = (man - computer + 4) % 3 -
1;
37 if (result > 0)
38 printf("you win!/n");
39
else if (result == 0)
40 printf("draw!/n");
41
else
42 printf("you lose!/n");
}
44 return 0;
}
gdb的基本命令:
bt(backtrace) 查看各级函数调用及参数
finish 连续运行到当前函数返回为止,然后停下来等待命令
f(fram) 选择栈帧
info(i) locals 查看当前栈帧局部变量的值
l 列出源代码,每次10行
list 行号 列出从第几行开始的源代码
list 函数名 列出某个函数的源代码
next 执行下一条语句
print 打印值p
quit 退出gdb
set var 修改变量的值
start 开始执行语句,停在main函数第一行语句前面等待命令
run (r) 运行程序到结束
step (s) 执行下一条语句,如果有函数则进入函数的内部
break(b) 在某一行设置断点
break 函数名 在某个函数开头设置断点
break if 设置条件断点
continue (c) 从当前位置开始连续运行程序
delete breakpoints /断点号 删除断点
display 变量名 跟踪查看某个断点,每次停下来都显示它的值
undisplay 跟踪显示号 取消跟踪显示
info(i) breakpoints(b) 显示断点信息
disable breakpoints 断点号 禁用断点
x 命令打印存储单元的内容,例如 x/7b b表示每个字节的一组,7 表示打印7组。
watch 设置观察点
info(i)watchpoints 查看当前设置了那些观察点