C语言笔记

发布 2021-05-12 01:05:28 阅读 8611

一、1.关于switch语句:如下面这个例子,只要符合了某个case分支的条件,则它会执行这个case之后所有的语句,包括这个case后面的其他case分支里面的语句(不再判断其他分支得case)。

case后面的语句不需要用括起来,反正只要满足了它都会执行的。

所以需要加入break语句;如下图所示。

这样才是对的。

上面这个例子,输入100,结果如下图:(仔细思考)

switch有时候可以完美地替代if...else if..语句。

二、表达式:

表达式1?表达式2:表达式3

如果表达式1成立,则表达式2;否则,表达式3)

故使得下面程序等价:

三、许多程序需要变量能存贮真或假的布尔值。所以常用以下方法:

#include<>

#include<>

main()

bool i;

i=false;

printf("%d",i);

return 0;

结果输出0,如果i=true;则结果输出1

四、当使用=代替==时,编译器不会报错,有什么办法可以使其报错?

答:在编程中用if(i==0)写成if(0==i),因为if(0=1)会报错的。

5、scanf函数。

例:this program sums a series of integers

enter integers(0 to terminate): 8 23 71 5 0

this sum is :107

程序如下:以下程序是不对的(虽然我也不知道为什么)

但是scanf(%c,&a);在读取字符串时输入空格(回车)和不输入空格(回车)是不一样的,要注意。

6、do...while(表达式); 循环千万别忘了“;”

当表达式为非零时,执行循环;表达式为0时,跳出循环。

7、for(int i=0;;)里面的i只能在循环中被访问,在循环外不可见,有时候这种操作很方便的。以下程序也是可以的:、

for(sum=0,i=1;i<=n;i++)

8、break语句(跳出本层循环)

continue语句:结束本次循环,转入下一次循环迭代。但不会跳出本层循环。

9、关于goto语句。

goto语句可以产生break语句不会产生的效果,goto语句可以用来跳出循环中的switch语句。

例如:while()

loop_done://注意这里是冒号。

跳出while循环,在这里用break无法跳出while中的switch循环。

但可以用return语句来代替goto语句的操作,如下面的例子。

10、仔细体会下面的程序。

以下程序是基于菜单的简单交互式程序的核心循环:在循环内执行操作,基本框架如下:

for(;;

提示用户输入指令;

读入指令;执行指令;

例题:/*账户程序:程序为用户提供菜单:

输入0表示账户清空,1表示往账户存钱,2表示从账户取钱,3表示显示余额,4表示退出程序*/

#include<>

main()

printf("welcome to atm");

printf("0=clear1=input money2=output money");

printf("3=show credit4=exist");

int cmd;

float credit=0.0,input;

for(int i=0;;i++)此段为交互式界面的核心循环。

11、带有空语句的循环体可以使得程序看起来更简洁。

例如寻找素数的循环可以由。

for(a=2;d if(n%d==0)

break;

改写为。for(d=2;d;//空的循环体。

可使得循环更简洁。

12、编程时有时需要考虑数据太大,整数溢出问题。

13、字符和数有相同的属性,故可以在循环中遍历所有的字母。

for(ch=’a’;ch<=’z’;ch++)

14、数据类型的强制转换,例如(int)a;

15、类型定义(比宏定义强大,数组和指针不能定义为宏)

例如前面用宏来定义布尔型数据#define bool int用类型定义可改写为typedef int bool;更好。为什么要用类型定义?可以使得某些量更好理解。

例如:typedef float dollars;//定义dollars为float类型的数据。

dollars cash_in,cash_out;//将cash_in,cash_out定义为dollars类型的数据。

这将使得在编程关于钱有关的程序时更好理解变量。

类型定义比宏定义强大,数组和指针不能定义为宏。假设试图宏定义一个“指向整数的指针”类型,#define pro_to_int int*

声明pro_to_int p,q,r;

在处理后会变成int* p,q,r;

就会变成只有p是指针,q和r只是普通的整型变量,而类型定义不会有这样的问题。

typedef定义的对象和变量有相同的作用域,定义在函数内的typedef名字在函数外无法识别。

16、sizeof运算符,用来计算储存类型值的空间大小。

17、一维数组(下标从0开始)

定义数组的最佳方法如下:

#define n 10

int a[n];

方便日后修改。

数组的储存是一片连续的空间,尽量不要在数组的下标中采用表达式,例如b[i]=a[i++]这种,有时会有***。

1.数组初始化int a[n]=,这样的做法实际上只是赋值a[0]=0,但系统会默认剩下的值为0,如果想要达到a[i]=10的效果,必须采用循环逐一赋值才行;若int a[4]=;则a[4]=;也可以int a=自动定义数组长度。

2.数组的指定初始化式。

例如int a[15]=(有很多0的情况)

采用指定初始化式int a[15]=;这样对于大数组不会容易出错,记住这种方法。

3.对数组进行sizeof运算。

利用sizeof(a)可以计算数组a的大小,而sizeof(a[0])可以计算数组元素的大小,所以可以用(int)(sizeof(a)/sizeof(a[0]))来可计算数组的长度。

故数组清零可以写成。

for(i=0;i<(int)(sizeof(a)/sizeof(a[0]))i++)

a[i]=0;

例子:下面程序显示一个**,要求显示100元投资在不同利率下的价值。用户输入利率和投资年数。

投资总价值每年计算一次,**显示出在输入利率和紧随其后的4个更高利率下的投资总价值:(只用一维数组即可)

C语言笔记

第一课时。c语言标准格式。include vidomain 以 开头的语句称为预处理指令。include语句不是必须的,但是如果一旦有该语句就必须把它放在文件开始处是standared input output header的缩写standared 标准input 输入output 输出header...

C语言笔记

c语言算法和数据类型。整型。基本类型 字符型注释 基本类型的特点是其不可实型 单精度型以再分解为其他类型双精度型数组型。数据结构 构造型 结构体型共用体型指针型空类型。一 常量。define 语句不以分号结尾,它可以放在源 的任何位置。不过在定义常量时,只有在它定义后的源 中才有效。是一个修饰符,在...

c语言笔记

1.if中别忘了 而不是 2.写完程序别忘了检查前后大括号 小括号是否完全照应。3.遇到几分之几的分数可以方程两边同时乘以一个数来消去分母。4.写指针题时看准指针对应的是行还是列。例 int a 4 3 int p a 0 列指针。int ptr 3 a 行指针。5.考虑好哪些量会随着循环不断改变。...