自学电脑c语言,C语言自学课程

52c2e26b7826e6b41a622bfc587dc0b1.png

在C语言中,数据类型可以分为:

四种基本数据类型,结构数据类型,指针类型,空类型

e45c92547e7143528e8bb560f1fc77e0.png

最常用的整数,实数和字符类型(char,int,float,double):

05fc5774f60ae3ee66dc0fc813f04cf7.png

整数数据是指不带小数的数字(int,short int,long int,unsigned int,unsigned short int,unsigned long int):

f453a1e56c1580fef3610d5784f2cdd3.png

注意:

浮点数据是指带小数的数字.

生活中有很多信息适合浮点数据使用,例如: 体重(单位: 千克),商品价格,价格指数等.

由于精度上的差异,它分为3种类型(浮动,双精度,长双精度):

c95178bb45939437c8703e738235f6f3.png

注意: C语言中没有字符串变量,并且该字符串只能存储在字符数组中. 稍后将对此进行讨论.

格式化的输出语句也可以称为占位符输出,它根据格式化的类型和指定的位置显示来自计算机的各种类型的数据.

格式为: printf(“输出格式字符”,输出项目);

67b158d3ce38efb7fe0efb671a2604f0.png

当输出语句包含普通字符时,可以使用以下格式:

printf("普通字符输出格式符", 输出项);

b0378d20d3a98b890497277c5f3512c3.png

注意: 格式字符的数量应与变量,常量或表达式对应.

在程序执行期间,其值不变的数量称为常量.

mtianyan: C语言常量可以分为直接常量和符号常量.

6267fadbeb58370c70ee4bb34f6110ef.png

在C语言中,标识符可用于表示常量,称为符号常量. 符号常量必须在使用前定义,其一般形式为:

#define 标识符 常量值

#include

#define POCKETMONEY 10 //定义常量及常量值

int main()

{

// POCKETMONEY = 12; //小明私自增加零花钱对吗?

printf("小明今天又得到%d元零花钱\n", POCKETMONEY);

return 0;

}

符号常量不能更改.

可以自动转换数据类型.

自动转换在不同数据类型的操作期间发生,并在编译期间自动完成.

13bbd872d84d08dcf1eae4963ab96871.png

Char类型数据根据ASCII代码中的相应值转换为int类型数据.

注意:

小字节可以自动转换为大字节,但是大字节不能自动转换为小字节

char可以转换为int,int可以转换为double,char可以转换为double. 但这不能逆转.

通过定义类型转换操作来实现强制类型转换. 其一般形式为:

(数据类型) (表达式)

其功能是将表达式的结果强制转换为类型说明符所表示的类型

使用强制转换时,请注意以下问题:

两个数据类型和表达式都必须加括号. 例如,如果将(int)(x / 2 + y)编写为(int)x / 2 + y,它将转换为int,然后除以2,然后与y相加. 转换后,原始数据的类型和变量值将不会更改,只能在此操作中临时转换. 强制转换的结果不符合四舍五入原则.

使用C语言的操作员:

※ 算术运算符

※ 赋值运算符

※ 关系运算符

※ 逻辑运算符

※ 三目运算符

C语言的基本运算符:

7aec439ea69216e17431384f9d107dbe.png

除法操作中的注意事项:

cf26bb31496d7e7a31479d0bcd538214.png

如果要除的两个数字均为整数,则结果也是整数,并且省略小数部分,例如8/3 = 2;

如果两个数字之一为小数,则结果为小数,例如: 9.0 / 2 = 4.500000.

mtianyan: 在余下的操作中注意:

此运算仅适用于两个整数的余数运算,例如: 10%3 = 1;

mtianyan: 注意: 10.0%3是错误的;运算后的符号取决于模数的符号,例如(-10)%3 = -1;并且10%(-3)= 1; <

mtianyan: %%表示这是一个%符号.

注意: C语言中没有幂运算符,并且不能使用×和÷等算术符号.

它们通常在循环中使用. 递增和递减运算符具有以下形式:

1240

C语言中的赋值运算符分为简单赋值运算符和复合赋值运算符

简单赋值运算符=符号,让我们谈谈复合赋值运算符:

复合赋值运算符是通过在简单赋值运算符=之前添加其他运算符而形成的.

例如+ =,-=,* =,/ =,%=

分析: 定义整数变量a并将其分配给3,a == 5;该公式等于a = a + 5;添加变量a和5并将其分配给a

注意: 运算符和复合运算符中的等号之间没有空格.

C语言中的关系运算符:

3fe69b47f6636ae101eb390db17a83f7.png

关系表达式的值是true和false,在C程序中用整数1和0表示.

注意: > =,

C语言中的逻辑运算符:

8354ff1e59675f5ed1dca3ee2cf7f4b1.png

还有两种逻辑运算值,即true和false. 在C语言中,它们用整数1和0表示. 评估规则如下:

当该操作涉及的两个变量都为true时,结果为true,否则为false. 例如: 5> = 5 && 7> 5,运算结果为true;

只要该操作涉及的两个变量之一为true,则结果为true. 当两个数量均为假时,结果为假. 例如: 5> = 5 || 5> 8,运算结果为true;

当操作中涉及的变量为true时,结果为false;当操作涉及的金额为假时,结果为真. 例如: ! (5> 8),运算结果为true.

C语言三元运算符: ?: ,其格式为:

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

执行过程为:

首先判断表达式1的值是否为真,如果为真,则执行表达式2;如果为假,则执行表达式3.

#include

int main()

{

//定义小编兜里的钱

double money =12.0 ;

//定义打车回家的费用

double cost =11.5 ;

printf("小编能不能打车回家呢:");

//输出y小编就打车回家了,输出n小编就不能打车回家

printf("%c\n",money>=cost?'y':'n' );

return 0;

}

各种操作符号的顺序:

16fc9fffc6317d83fe9ad2731b640ea3.png

优先级1的优先级最高,优先级10的优先级最低.

如果条件语句是C语言的分支结构语句.

简单的if语句的基本结构如下:

if(表达式)

{

执行代码块;

}

语义是: 如果表达式的值为true,则将执行以下语句,否则将不执行该语句.

注意: if()之后没有分号,只需写{}

简单的if-else语句的基本结构:

7829e11a6394133de4b913705cea6820.png

语义是: 如果表达式的值为true,则执行代码块1,否则执行代码块2.

注意:

if()之后没有分号,只写{},其他之后没有分号,只写{}

用C语言编写的多个if-else语句的结构如下:

5512995bae0cdf2230b9bdf636f68fa7.jpg

1b4a37844767c82e906a22f23eb341c1.png

语义是: 依次确定表达式的值,当某个值为true时,执行相应的代码块,否则执行代码块n.

注意: 当某个条件为true时,分支结构中的其他语句将不会向下执行.

以C语言嵌套的if-else语句. 嵌套的if-else语句的含义是在if-else语句中写入if-else语句. 其一般形式为:

cbfa040c748e42bb96089c9bd3856ac1.png

重复执行某种动作是嘎嘎声的循环.

C语言中有三种循环结构,让我们看一下循环优先时C语言的结构

2f7f8476510487e11b96fb6dc5d09ab4.png

表达式代表循环条件,执行代码块是循环体.

while语句的语义是: 计算表达式的值,当该值为true(非0)时,将执行循环体代码块.

while语句中的表达式通常是关系表达式或逻辑表达式. 如果表达式的值为false,则不执行循环主体,否则,始终执行循环主体.

请务必记住要在循环主体中更改循环变量的值,否则将出现无限循环(无限执行).

如果循环主体包含多个语句,则必须将其括在{}中以形成复合语句.

C语言中的do-while循环,一般形式如下:

f53745b4a77cd8063dd4d6c4300ccd82.png

do-while循环语句的语义是:

首先在循环中执行执行代码块,然后判断while表达式是否为真,如果为真,则继续循环;如果为假,则终止循环. 因此,do-while循环必须至少执行一次循环语句.

注意: mtianyan: 使用do-while结构语句时,while括号后必须有一个分号.

用c语言编写的for循环的一般形式:

3358d08f797a55a12679ca305ba76708.png

其执行过程如下:

执行表达式1初始化循环变量;判断表达式2,如果其值为真(不为0),则执行for循环体中的代码块,然后向下执行;如果其值为false(0),则循环结束;否则,循环结束. 执行表达式3,(i ++)和其他对循环变量进行操作的语句;在for循环中执行代码块后,执行第二步;第一步初始化将只执行一次. 循环结束,程序继续向下执行.

注意: 必须编写for循环中的两个分号

在for循环中:

使用for语句时应引起注意:

for循环中的“表达式1、2、3”不能写为空,但不能默认两个分号(;;). 省略“表达式1(将初始值分配给循环变量)”递归 2次调用,这表示未将初始值分配给循环变量. 省略“表达式2(循环条件)”,不做其他处理,循环总是执行(无限循环). 省略“表达式3(循环变量的增加和减少)”,不执行其他任何处理,并且始终执行循环(无限循环). 表达式1可以是用于设置循环变量的初始值的赋值表达式,也可以是其他表达式. 表达式1和表达式3可以是一个简单表达式,也可以是多个逗号分隔的表达式.

162c8741dcdc886327e616451baa7fd6.png

表达式2通常是关系表达式或逻辑表达式,但也可以是数字表达式或字符表达式. 只要其值不为零,就执行循环体. 每个表达式中的变量必须在for循环之前定义.

while,do-while和for的三个循环在特定的使用情况下是不同的,如下所示:

当您知道循环数时,更适合用于循环;当您不知道循环数时,适合使用while或do-while循环:

但是从本质上讲,while,do-while和for循环是可以互换的.

多个循环意味着循环结构出现在循环结构的循环主体中.

通常,在实际开发中最多使用三层再循环.

由于循环层越多,运行时间越长,程序越复杂,通常使用2-3个多层循环就足够了. 此外,还可以嵌套不同的循环.

在执行多个循环期间,外部循环是父循环,内部循环是子循环.

父循环是一次,子循环需要执行,直到脱离循环为止. 下一次进入父循环,子循环继续执行...

a219d278362ad599866a6a3fd3dddb1c.png

mtianyan: 打印三角形星堆

#include

int main()

{

int i, j, k;

for(i=1; i<5; i++)

{

/* 观察每行的空格数量,补全循环条件 */

for(j=i; j<5; j++)

{

printf(" "); //输出空格

}

/* 观察每行*号的数量,补全循环条件 */

for( k=0;k<2*i-1;k++)

{

printf("*"); //每行输出的*号

}

printf("\n"); //每次循环换行

}

return 0;

}

#include

int main()

{

// 定义相乘数字i,j以及结果result

int i, j, result;

for(i=9;i>=1;i--)

{

for(j=1;j<=i;j++)

{

printf("%d*%d=%d ",i,j,result=i*j);

}

printf("\n");

}

return 0;

}

然后,当循环5次时,您需要停止训练而不继续. 在C语言中,您可以使用break语句执行此操作.

使用break语句时请注意以下几点:

没有循环结构,break不能在单独的if-else语句中使用. 在多级循环中,break语句仅跳出当前循环.

然后,当循环5次时,您需要中断并继续训练. 在C语言中,您可以使用continue语句执行此操作

512ee98fba52ea027f242af750be36fd.png

continue语句的功能是结束此循环并开始执行下一个循环.

break语句和Continue语句之间的区别是:

中断是跳出当前的整个循环,继续是结束该循环并开始下一个循环.

switch语句的结构如下:

ccc5e4486d2770d1d010e4da3e718f01.png

mtianyan: 切换语句时,您还应注意以下几点:

大小写之后的每个常量表达式的值不能相同,否则会发生错误. 如果case子句后没有中断;它将继续执行直到遇到中断为止;在跳出switch语句之前. switch之后的expression语句只能是整数或字符类型. 在这种情况下,允许使用多个语句,可以将其括在{}中. 可以更改case和default子句的顺序,而不会影响程序执行结果. 默认子句可以省略.

#include

int main()

{

/* 定义需要计算的日期 */

int date = 0;

int year = 2008;

int month = 8;

int day = 8;

switch(month)

{

case 12:date+=30;

case 11:date+=31;

case 10:date+=30;

case 9:date+=31;

case 8:date+=31;

case 7:date+=30;

case 6:date+=31;

case 5:date+=30;

case 4:date+=31;

case 3:

if((year%4==0&&year%100!=0)||year%400==0)

{

date+=29;

}

else

{

date+=28;

}

case 2:

date+=31;

case 1:

date+=day;

printf("%d年%d月%d日是该年的第%d天",year,month,day,date);

break;

default:

printf("error");

break;

}

return 0;

}

本文来自电脑杂谈,转载请注明本文网址:

http://www.pc-fly.com/a/jisuanjixue/article-287848-1.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值