文章目录

  • P1 我对自学的一些看法
  • P2 我为什么要出视频
  • P3 本讲内容概述
  • p4 HelloWorld程序举例
  • p5 C语言的起源与发展
  • p6 C的特点
  • p7 C的应用领域
  • p8 C的重要性
  • p9 怎样学C语言
  • p10 学习的目标
  • p11 常见问题答疑
  • p12 C语言课程总纲要
  • p13 一元二次方程详解
  • p14 VC++6.0软件使用讲解
  • p15 回顾本讲内容
  • p16 C编程预备计算机专业知识
  • P17 CPU 内存条 硬盘 显卡 主板 显示器 之间的关系
  • P18 HelloWorld程序如何运行起来的
  • P19 数据类型
  • P20 什么是变量
  • P21 CPU 内存条 VC++6.0 操作系统之间的关系
  • P22 变量为什么必须初始化(重点)
  • P23 如何定义变量
  • P24 什么叫进制
  • P25 常量在C语言中是如何表示的
  • P26 常量以什么样的二进制代码存储在计算机中
  • P27 本讲知识回顾
  • P28 代码的规范化(重点)
  • P29 什么是字节
  • P30 不同类型数据之间相互赋值的问题
  • P31 什么是ASCII?
  • P32 什么是ASCII+|字符本质上和整数的存储方式相同
  • P33 printf和scanf简介
  • P34 初学者的一些建议
  • P35 printf的用法详解 1(重点)
  • P36 如何编写出更有保存价值的和更有学习价值的程序
  • P37 printf的用法详解 2(重点)
  • P38 printf为什么需要输出控制符
  • P39 复习上节课的内容
  • P40 scanf用法1 不含输入控制符的用法
  • P41 scanf用法1 含非输入控制符
  • P42 scanf用法3一次给多个变量键盘赋值
  • P43 scanf用法4 如何用scanf编写出高质量代码
  • P44 运算符的分类和简单介绍
  • P45 除法与取余运算符
  • P46 逻辑运算符
  • P47 对初学运算符的一些建议
  • P48 scanf复习
  • P49 流程控制1 什么是流程控制
  • P50 流程控制2 流程控制的分类
  • P51 流程控制3 复习上节课的内容
  • P52 流程控制4 流程控制为什么非常重要(学习C语言的第一个重点)
  • P53 选择1 if概述
  • P54 选择2 if最简单的用法
  • P55 选择3 if的范围问题【重点】
  • P56 选择4 if...else..的用法
  • P57 选择5 if...elseif...else..的用法
  • P58 选择6 C语言对真假的处理
  • P59 选择7 举例--求分数的等级
  • P60 if例子1 互换两个数字
  • P61 if例子2 对任意三个数字进行排序
  • P62 学习C语言常见误区
  • P63 复习上机课知识
  • P64 空预语句的问题
  • P65 if常见问题解析【重点】
  • P66 switch后面再讲
  • P67 循环的定义
  • P68 循环的分类
  • P69 为什么需要for循环
  • P70 for循环的最简单用法
  • P71 for和if的嵌套
  • P72 复习上节课知识
  • P73 强制类型转换

P1 我对自学的一些看法

P2 我为什么要出视频

P3 本讲内容概述

1.为什么学习C语言?
(1)C的起源与发展
(2)C的特点
优点:(1)代码量小 (2)速度快 (3)功能强大
缺点:(1)危险性高 (2)开发周期强 (3)可以移植性不强
(3)C的应用领域
(4)C的重要性
2.怎样学习C语言?
3.学习的目标
4.常见问题答疑
(1)学习java为什么建议先学C语言
(2)没学过计算机专业课程能够学懂C语言
(3)英语和数学不好能学好C么
5.课程计划
6.举例子:一元二次方程

p4 HelloWorld程序举例

首先安装VC++6.0,安装过程可以参考:VC++6.0.
下面是第一个Hello world程序:

# include <stdio.h>int main(void)
{printf("欢迎大家学习C语言!\n");return 0;
}

p5 C语言的起源与发展


机器语言就是一些0和1的代码,不容易记住;为了方便理解与机翼,就出现了汇编语言,把0和1的代码翻译成英文单词;之后出现了第三代的高级语言,结构化语言有缺陷,最重要的是C,因此又出现了面向对象的语言,其中C++是一门最复杂的语言。

C语言产生和发展过程,到1994年就已经很成熟了:

p6 C的特点

p7 C的应用领域

  • 系统软件开发

    • 操作系统:Windows、Linux、Unix
    • 驱动程序:主板驱动、显卡驱动、摄像头驱动
    • 数据库:DB2、Oracle、Sql Server
  • 应用软件开发
    • 办公软件:Wps
    • 图形图像多媒体:ACDSee Photoshop MediaPlayer
    • 嵌入式·软件开发:智能手机、掌上电脑
    • 游戏开发:2D、3D游戏

p8 C的重要性

  • 有史以来最重要语言
  • 所有大学工科和理科学生必修课程
  • 最重要系统软件:windows、linux、unix均使用c开发
  • 一名合格黑客必须掌握的语言
  • 任何一个想终身从事程序设计和开发人员必须熟练掌握的语言
  • 大企业、外企招聘程序员必考的语言
  • 为学习数据结构、C++、Java、C#奠定基础

p9 怎样学C语言

参考资料
(1)谭浩强《C语言程序设计》清华
(2)《The C programming language》机械(3)《C Primer Plus》 人名邮电
(4)《C和指针》人名邮电
(5)《C专家编程》绝版
(6)《C陷阱与缺陷》人名邮电
(7)《C科学与艺术》机械工业

p10 学习的目标

p11 常见问题答疑

1 学习Java为什么还要学习C?
(1)学C就是学Java,因为C语言至少80%的语法支时都被Java继承过来了
(2)C语言是面向过程语言的代表,学习C有助于学习Java中面向对象的思想
(3)学好C中的指针就是理解Java中引用的基础!如果不懂指针就不可能对Java中的引用有深刻的理解,而引用Java中一个最基本但又十分重要的概念
2 没学过计算机专业课程能够学懂C语言?
3 英语和数学不好能学C么?
C语言组成关键字: auto(自动)、break(终止)、case(按键)、char、const(常数)、continue(继续)、default(默认)、do(做)、double(双倍)、else(否则)、enum()、extern(额外的)、float(浮点)、for、goto(去)、if、int(整型)、long()、register()、return()、short()、signed()、sizeof()、static()、struct()、switch()、typedef()、unsigned()、union(单元、联合 )、void()、volatile()、while(当)

p12 C语言课程总纲要

p13 一元二次方程详解

比如求解ax2+bx+c=0ax^{2}+bx+c=0ax2+bx+c=0的解的思路就是:如果b2−4ac>0b^{2}-4ac>0b2−4ac>0方程有两个解,如果b2−4ac=0b^{2}-4ac=0b2−4ac=0方程有一个解,如果b2−4ac<0b^{2}-4ac<0b2−4ac<0方程无解,最后根据−b±b2−4ac2a\frac{-b\pm \sqrt{b^{2}-4ac}}{2a}2a−b±b2−4ac​​得到最后的解,代码实现如下:

# include<stdio.h>
# include<math.h>
int main(void)
{//把3个系数保存到计算机中int a=1;  //=不表示相等,表示赋值int b=5;int c=6;//接下来求解b*b-4*a*c的值float delta;  //delt存放的是b*b-4*a*c//存放一元二次方程的两个解float x1; float x2;delta=b*b-4*a*c;//判断方程有几个解if (delta>0)  //两个解{x1=(-b+sqrt(delta))/(2*a);x2=(-b-sqrt(delta))/(2*a);printf("该一元二次方程有两个解,x1=%f,x2=%f\n",x1,x2);}else if (delta==0)  //一个解{x1=(-b)/(2*a);x2=x1;  //右边赋给左边printf("该一元二次方程有唯一解,x1=x2=%f\n",x1);}else//无解{printf("无解\n",x1,x2);}return 0;
}

p14 VC++6.0软件使用讲解

新建文件:文件(file)->新建(new)->文件(file)->C/C++ source file
运行完第一个程序后如何运行第二个程序,可以点击Close Workspace来对第一个程序进行关闭,Close关闭不干净,运行第二个程序时会出现问题,,也不能点右上角的×,也关闭不彻底。

编译运行时会产生很多中间文件,最重要的就是.cpp文件,保存它即可。

p15 回顾本讲内容

p16 C编程预备计算机专业知识

1.cpu 内存条 硬盘、显卡、主板、显示器之间的关系
2.HelloWorld程序如何运行起来的
3.什么是数据类型
4.什么是变量
5.cpu 内存条 VC++6.0 操作系统之间的关系
6. 变量为什么必须初始化
7. 如何定义变量
8. 什么是进制
9. 常量在C语言中是如何表示的
10.常量是以什么样的二进制代码存储 在计算机中的

P17 CPU 内存条 硬盘 显卡 主板 显示器 之间的关系

比如播放一个电影,电影是在硬盘上存放的,当用鼠标单击电影的时候,操作系统就会把硬盘上的电影调入内存条(因为CPU不能直接处理硬盘上的数据),CPU再去处理内存条中的电影,处理的结果就是把其中的某些数据变成图像和声音,图像通过显卡显示器显示出来,声音通过声卡显示出来。CPU、内存条、硬盘、显卡都是插在主板上的,因此主板提供了一个中间传输的设备。

P18 HelloWorld程序如何运行起来的

# include <stdio.h>int main(void)
{printf("欢迎来到C世界!\n");return 0
}

通过点编译和链接两个步骤会生成后缀为.exe的可运行文件,再点红色的!的时候,VC++6.0会请求操作系统调用CPU来运行.exe文件,最终通过显示器把结果显示出来。所有的运行都是要靠CPU来执行。

P19 数据类型

编程的第一步,就是数据的存储,因此需要对数据进行一下分类。
数学上对数据的分类:整数、实数、有理数、无理数和字符

C语言数据类型能分为两种:1 基本类型数据:(1)整数:整型–int 4个字节
短整型–short int
长整型–long int 8个字节

(2)浮点数【实数】:单精度浮点数–float
双精度浮点数–double
(3)字符:单个字符–char
字符串–一系列字符
2.复合数据类型
(1)结构体
(2)枚举
(3)共用体

P20 什么是变量

变量就是一个容器,想要把数据保存到计算机里边就要通过容器来保存。利用变量可以很方便的对数据进行存储。

# include <stdio.h>
int main(void)
{int i;  //该句运行完之后,就会请求操作系统在内存条中找到一个空闲的、没有被其他程序占用的一个存储单元,把这个单元的地址和字母i产生关联i=3; //3最终是存放在内存中(i对应的存储单元),程序终止之后3所占的空间被释放掉printf("i=%d\n",i);return 0;}

变量的本质就是内存中的一段空间

P21 CPU 内存条 VC++6.0 操作系统之间的关系

VC++6.0 请求操作系统在内存条中分布一部分空闲空间,空闲空间与字母i产生关联,使用字母i就是使用的字母i所对应的内存条中的存储空间。

# include <stdio.h>
int main(void)
{int i;  //该句运行完之后,就会请求操作系统在内存条中找到一个空闲的、没有被其他程序占用的一个存储单元,把这个单元的地址和字母i产生关联i=3; //3最终是存放在内存中(i对应的存储单元),程序终止之后3所占的空间被释放掉printf("i=%d\n",i);return 0;}

P22 变量为什么必须初始化(重点)

所谓初始化就是赋值也得意思

如果变量没有赋值,里边就会放上添充字,数字很大。

软件与内存的关系(垃圾数据)
内存是在操作系统的统一管理下使用的!
(1)软件在运行钱需要向操作系统申请存储空间,在内存空闲空间足够时,操作系统将分配一段内存空间并将外存中软件拷贝一份存入该内存空间中,并启动该软件运行。
(2)在软件运行期间,该软件所占内存空间不在分配给其他软件
(3)当软件运行完毕后,操作系统将回收该内存空间(注意:操作系统并不清空该内存遗留下来的数据),以便再次分配给其他软件使用

综上所述,一个软件所分配到的空间中极可能存在着以前其他软件使用过后的残留数据,这些数据被称之为垃圾数据。所以通常情况下我们为一个变量、为一个数组,分配好存储空间之后都要对该内存空间初始化!

P23 如何定义变量

定义变量:数据类型 变量名要赋的值;
等价于
数据类型 变量名;
变量名 =要赋的值;
举例子:
int i3;等价于 int i;i=3;

P24 什么叫进制

十进制就是逢十进一
二进制就是逢二进一

1.什么叫进制?
进制就是逢几进一
我们说的N进制实际上就是逢N进一
2.我们计算机只识别二进制
3.为了实际需要,我们又建立了八进制和十六进制
4.C语言规定八进制前要加0(注意是0不是字母o),十六进制前要加0x或0X,十进制前什么都不加!
5.在汇编中:在数字后面加字母B表示二进制数,加字母O 表示八进制数,加字母D表示十进制数,加字母H表示十六进制数。

# include<stdio.h>
int main(void)
{int i=88;printf("i=%x\n",i);/*printf的用法%d表示以十进制输出%x或者%X表示以十六进制输出%o表示以八进制输出*/return 0;
}

P25 常量在C语言中是如何表示的

整数
十进制: 传统的写法
十六进制:前面加0x或者0X
八进制:前面加0
浮点数
传统的写法
科学计数法法
字符
单个字符用单引号括起来
字符串用双引号括起来

P26 常量以什么样的二进制代码存储在计算机中

整数是以补码的形式转化为二进制代码存储在计算机中
实数是以IEEE754标准转化为二进制代码存储在计算机中
字符的本质实际也是与整数的存储方式相同。

P27 本讲知识回顾

P28 代码的规范化(重点)

一般代码注释占代码的1/3。
代码成对的敲

程序一般分为三部分:
(1)定义变量
(2)对变量进行操作
(3)输出值

P29 什么是字节

字节就是存储数据的单位,并且是硬件所能访问的最小单位。
一个字节=8位,内存条中一个小格子代表一位。
1k=1024字节
1M=1024k
1G=1024M

CPU控制的都是字节,不能控制到每一位

P30 不同类型数据之间相互赋值的问题

P31 什么是ASCII?

# include<stdio.h>
int main(void){char ch='A'; //ok  等价char ch;ch='A';// char ch="AB";  //error 因为“AB”是字符串,我们不能把字符串赋给单个字符变量// char ch="A";//error  双引号括字符串,单引号括单个字符// char ch='B'; //error  因为ch变量已经在第4行定义了,这样会导致变量名被重复定义,即ch被重复定义// ch='C';  //ok 因为ch是变量,可以把return 0; }
}

P32 什么是ASCII+|字符本质上和整数的存储方式相同

ASCII不是一个值,而是一种规定,ASCII规定了不同的字符是使用那个整数值去表示,它规定了
‘A’-----65
‘B’-----66
‘a’-----97
‘b’-----98
‘0’-----48

# include<stdio.h>int main(void){char ch='A'; //ok  等价char ch;ch='A';printf("%d\n",ch);return 0; }

字符本质上与整数的存储方式相同

P33 printf和scanf简介

基本的输入和输出函数的用法:
scan():输入函数,把输入的字符转换成数字赋给定义的变量
赋值有两种方式:(1)int i;
i=s;
(2)使用scanf()函数
printf():输出函数

P34 初学者的一些建议

P35 printf的用法详解 1(重点)

printf()–将变量的内容输出到显示器上
四种用法:
1.printf("字符串\n”);
2.printf("输出控制符”,输出参数);
3.printf("输出控制符1,输出控制符2”,输出参数1,输出参数2); 输出控制符合输出参数的个数必须一一对应
4.printf("输出控制符,非输出控制符”,输出参数);
输出控制符包含如下:
%d
%ld
%c
%f
%lf
%x(或者%X或者%#X)
%o

# include<stdio.h>int main(void){char ch='A'; //ok  等价char ch;ch='A';printf("%d\n",ch);return 0; }
# include<stdio.h>int main()
{//printf("哈哈!\n");  //\n表示换行int i=10;printf("%d",i);  //d是十进制return 0;
}

P36 如何编写出更有保存价值的和更有学习价值的程序

  • 注释详细一些
/*2009年10月13日10;25;48目的:测试%x %X %#x  %#X的用法
*/
# include<stdio.h>int main()
{int x=47; //十进制数printf("%x\n",x);  //输出结果时2fprintf("%X\n",x);  //输出结果时2Fprintf("%#x\n",x);  //输出结果时0X2f  printf("%#X\n",x);  //输出结果时0X2F   推荐使用return 0
}
/*在VC++6.0中的输出结果是:-----------------------------2f2F0X2f0X2F-----------------------------总结:总结得到自己所学到的东西*/

P37 printf的用法详解 2(重点)

P38 printf为什么需要输出控制符

(1)0、1组成的代码可以表示数据也可以表示指令
(2)如果0、1组成的代码表示的是数据的话,那么同样的0、1代码组合以不同的输出格式输出就会有不同的输出结果

P39 复习上节课的内容

P40 scanf用法1 不含输入控制符的用法

1.scanf()功能:通过键盘将数据输入到变量中
两种用法:(1)scanf(“输入控制符”,输入参数);功能:将从键盘输入的字符转化为输入控制符所规定格式的数据,然后存入以输入参数的值为地址的变量中 (2)scanf(“非输入控制符 输入控制符”,输入参数);功能:将从键盘输入的字符转化为输入控制符所规定格式的数据,然后存入以输入参数的值为地址的变量中,非输入控制符必须原样输入
2.如何使用scanf编写出高质量的代码:
(1)使用scanf之前最好先使用printf提示用户用什么样的方式来输入
(2)scanf中尽量不要使用非输入控制符,尤其不要用\n
(3)应该编写代码对用户的非法输入做适当的处理

# include<stdio.h>int main()
{  int iscanf("%d",&i)  //键盘输入的都是字符%d把字符转换为十进制数   &i表示i的地址 &的是一个取地址的符printf("i=%d\n",i);  //d是十进制return 0;
}

P41 scanf用法1 含非输入控制符

# include<stdio.h>int main()
{int i;scanf("m%d",&i)  //键盘输入的都是字符%d把字符转换为十进制数   &i表示i的地址 &的是一个取地址的符  此时键盘正确的输入是m123(即,m数字)printf("i=%d\n",i);  //d是十进制return 0;
}

P42 scanf用法3一次给多个变量键盘赋值

# include<stdio.h>int main()
{int i,j;scanf(" %d  %d",&i,&j)  //键盘输入的都是字符%d把字符转换为十进制数   &i表示i的地址 &的是一个取地址的符  此时键盘正确的输入是m123(即,m数字)printf("i=%d\n,j=%d\n",i,j);  //d是十进制return 0;
}
# include<stdio.h>int main()
{int i,j;scanf(" %d ,%d",&i,&j)  //键盘输入的都是字符%d把字符转换为十进制数   &i表示i的地址 &的是一个取地址的符  此时键盘正确的输入是也用该有逗号printf("i=%d\n,j=%d\n",i,j);  //d是十进制return 0;
}

P43 scanf用法4 如何用scanf编写出高质量代码

# include<stdio.h>int main()
{int i,j;printf("请输入三个值,中间以逗号分割:",i,j); scanf(" %d ,%d",&i,&j)  //键盘输入的都是字符%d把字符转换为十进制数   &i表示i的地址 &的是一个取地址的符  此时键盘正确的输入是也用该有逗号printf("i=%d\n,j=%d\n",i,j);  //d是十进制return 0;
}
# include<stdio.h>int main()
{int i;char ch;scanf(" %d ",&i);  //键盘输入的都是字符%d把字符转换为十进制数   &i表示i的地址 &的是一个取地址的符  此时键盘正确的输入是也用该有逗号printf("i=%d\n\n",i);  //d是十进制//把用户所有的非法输入符都给清理掉了while((ch=getchar())!='\n')continue;int j;scanf(" %d ",&j);  printf("i=%d\n\n",j);  //d是十进制return 0;
}

P44 运算符的分类和简单介绍

算术运算符:+ - * / (除法)%(取余)
关系运算符: > >= < <= != ==
逻辑运算符:!(非) &&(并且) ||(或)
赋值运算符:= += *= /= -/

优先级别:算术>关系>逻辑>赋值

P45 除法与取余运算符

1.除法/的运算结果和运算对象和数据类型有关,两个数都是int,则商就是int,若商是小数,则截取小数部分;被除数和除数中只要有一个或两个都是浮点型数据,则商也是浮点型,不截取小数部分。
2.取余%的运算对象必须是整数,结果是整除后的余数,其余数的符号与被除数相同。

P46 逻辑运算符

逻辑运算符
!(非) &&(并且) ||(或)
!真 假
!假 真
真&&真 真
真&&假 假
假&&真 假
假&&假 假

真||真 真
真||假 真
假||真 真
假||假 假

C语言对真假的处理
非零就是真,零是假
真用1表示,假用0表示

&&左边的表达式为假 右边的表达式肯定不会执行
||左边的表达式为真 右边的表达式肯定不会执行

P47 对初学运算符的一些建议

P48 scanf复习

P49 流程控制1 什么是流程控制

流程控制:程序代码执行的顺序

P50 流程控制2 流程控制的分类

(1)顺序执行
(2)选择执行
(3)循环执行

P51 流程控制3 复习上节课的内容

P52 流程控制4 流程控制为什么非常重要(学习C语言的第一个重点)

P53 选择1 if概述

定义:某些代码可能执行,也可能不执行,有选择的执行某些代码。

P54 选择2 if最简单的用法

if (表达式)
语句
功能:如果表达式为真,语句执行
如果表达式为假,语句不执行

# include<stdio.h>int main(void)
{if (3>2)printf("AAAA\n");return 0;
}

P55 选择3 if的范围问题【重点】

if (表达式)
语句 A;
语句 B;
解释:if默认只能控制A的执行或者不执行
if无法控制语句B的执行或者不执行
或者将:语句B一定会执行
if (表达式)
{
语句 A;
语句 B;
}
此时if可以控制语句A和语句B

由此可见:if默认只能控制一个语句的执行或者不执行。如果想控制多个语句的执行或者不执行,就必须把这些语句用{}括起来。

# include<stdio.h>int main(void)
{if (1>2)printf("AAAA\n");printf("BBBB\n");return 0;
}
/*
在VC++ 6.0中的输出结果:
---------------------------------------BBBB
---------------------------------------总结:if默认的只能控制一个语句的执行或者不执行*/

P56 选择4 if…else…的用法

# include<stdio.h>int main(void)
{int i,j;scanf("%d %d",&i,&j);if (i>j)printf("i大于j\n");elseprintf("i小于j\n");return 0;
}

P57 选择5 if…elseif…else…的用法

# include <stdio.h>int main(void)
{double delta=-1;if (delta>0)printf("有两个解!\n");else if (delta==0)printf("有一个解!\n");else printf("无解!\n");return 0;
}

P58 选择6 C语言对真假的处理

非零是真,真用1表示
零是假,假用0表示

P59 选择7 举例–求分数的等级

# include <stdio.h>int main(void)
{float score;printf("请输入你的考试成绩:");scanf("%f",&score);if (score>100)printf("这是做梦!\n");else if (score>=90 && score<=100)printf("优秀\n");else if (score>=80 && score<90)printf("良好\n");else if (score>=60 && score<80)printf("及格\n");else if (score>=0 && score<60)printf("及格\n");elseprintf("输入的成绩过低\n");return 0;
}

P60 if例子1 互换两个数字

# include <stdio.h>int main(void)
{int i,j;int temp;i=3;j=4;temp=i;i=j;j=temp;printf("%d %d\n",i,j);return 0;
}
}

P61 if例子2 对任意三个数字进行排序

# include <stdio.h>int main(void)
{int a,b,c;int t;printf("请输入三个整数(中间以空格分隔):");scanf("%d %d %d",&a,&b,&c);if(a<b){t=a;a=b;b=t;}if(a<c){t=a;a=c;c=t;}if(b<c){t=b;b=c;c=t;}printf("%d %d %d\n",a,b,c);return 0;}

P62 学习C语言常见误区

1.判断一个数字是否是素数
2.判断一个数字是否是回文数
3.编程实现一个求一个十进制数字的二进制形式
4.求一个数字的每位是奇数的数字取出来组合形成的新数字。
5.求一个数字倒过来的数字
6.如何看懂一个程序,分三步:
(1)流程
(2) 每个语句的功能
(3)试数
7.对一些小算法的程序
尝试自己去编程解决它,大部分人都自己无法解决,如果解决不了就看答案,关键是把答案看懂,看懂之后尝试自己去修改程序,并且直到修改程序之后的不同结果的定义。

P63 复习上机课知识

P64 空预语句的问题

if (3>2);
等价于
if (3>2)
; //这是一个空语句

P65 if常见问题解析【重点】

//正确的
if(表达式1)
A;
if (表达式2)
B;

//这样写是错误的
if(表达式1);
A;
if (表达式2);
B;

if (表达式1)
A;
else if(表达式2)
B;
else if(表达式3)
C;
else
D;
即便表示式1和2都成立,也只会执行A语句

if (表达式1)
A;
else if(表达式2)
B;
else if(表达式3)
C;
这样写语法不会出错,但是逻辑上会有漏洞

if (表达式1)
A;
else if(表达式2)
B;
else if(表达式3)
C;
else(表达式4) //7行
D;
7行这样写是不对的,正确的写法是:
要么去掉7行的(表达式4)
要么在else后面加if

P66 switch后面再讲

P67 循环的定义

某些代码会被重复执行

P68 循环的分类

(1)for
(2)while
(3)do…while

P69 为什么需要for循环

/*2021年3月13日1+2+3+4+5+...+100
*/# include <stdio.h>int main(void)
{int i;int sum=0;for (i=1;i<=100;++i)sum=sum+i;printf("sum=%d\n",sum);return 0;
}

P70 for循环的最简单用法

# include <stdio.h>int main(void)
{int i;int sum=0;for (i=1;i<10;i+=2)//i+=2µÈ¼ÛÓÚi=i+2sum=sum+i;printf("sum=%d\n",sum);return 0;
}

P71 for和if的嵌套

/*
求1-100能被3整除的数字之和
*/# include <stdio.h>int main(void)
{int i;int sum=0;for (i=3;i<=100;++i){if (i%3==0)  //Èç¹ûiÄܱ»3Õû³ýsum=sum+i;}printf("sum=%d\n",sum);return 0;}

P72 复习上节课知识

(1)for
格式
for (1;2;3)
语句A;
执行的流程
范围问题
举例
(2)while
(3)do…while

P73 强制类型转换

格式:
(数据类型)(表达式)
功能:
把表达式的值强制转化为前面所执行的数据类型
例子:
(int)(4.5+2.2) 结果是6

/*
求1-100能被3整除的数字之和
*//*
求1/1+....+1/100的和
*/# include <stdio.h>int main(void)
{int i;float sum=0;for (i=1;i<=100;++i){sum=sum+1/(float)(i);   //(float)(1/i)是不对的,强制转换成浮点类型。更简单的写法就是:sum=sum+1.0/i}printf("sum=%f\n",sum);return 0;
}}

<郝斌C语言自学教程>相关推荐

  1. ComeFuture英伽学院——2020年 全国大学生英语竞赛【C类初赛真题解析】(持续更新)

    视频:ComeFuture英伽学院--2019年 全国大学生英语竞赛[C类初赛真题解析]大小作文--详细解析 课件:[课件]2019年大学生英语竞赛C类初赛.pdf 视频:2020年全国大学生英语竞赛 ...

  2. ComeFuture英伽学院——2019年 全国大学生英语竞赛【C类初赛真题解析】大小作文——详细解析

    视频:ComeFuture英伽学院--2019年 全国大学生英语竞赛[C类初赛真题解析]大小作文--详细解析 课件:[课件]2019年大学生英语竞赛C类初赛.pdf 视频:2020年全国大学生英语竞赛 ...

  3. 信息学奥赛真题解析(玩具谜题)

    玩具谜题(2016年信息学奥赛提高组真题) 题目描述 小南有一套可爱的玩具小人, 它们各有不同的职业.有一天, 这些玩具小人把小南的眼镜藏了起来.小南发现玩具小人们围成了一个圈,它们有的面朝圈内,有的 ...

  4. 信息学奥赛之初赛 第1轮 讲解(01-08课)

    信息学奥赛之初赛讲解 01 计算机概述 系统基本结构 信息学奥赛之初赛讲解 01 计算机概述 系统基本结构_哔哩哔哩_bilibili 信息学奥赛之初赛讲解 02 软件系统 计算机语言 进制转换 信息 ...

  5. 信息学奥赛一本通习题答案(五)

    最近在给小学生做C++的入门培训,用的教程是信息学奥赛一本通,刷题网址 http://ybt.ssoier.cn:8088/index.php 现将部分习题的答案放在博客上,希望能给其他有需要的人带来 ...

  6. 信息学奥赛一本通习题答案(三)

    最近在给小学生做C++的入门培训,用的教程是信息学奥赛一本通,刷题网址 http://ybt.ssoier.cn:8088/index.php 现将部分习题的答案放在博客上,希望能给其他有需要的人带来 ...

  7. 信息学奥赛一本通 提高篇 第六部分 数学基础 相关的真题

    第1章   快速幂 1875:[13NOIP提高组]转圈游戏 信息学奥赛一本通(C++版)在线评测系统 第2 章  素数 第 3 章  约数 第 4 章  同余问题 第 5 章  矩阵乘法 第 6 章 ...

  8. 信息学奥赛一本通题目代码(非题库)

    为了完善自己学c++,很多人都去读相关文献,就比如<信息学奥赛一本通>,可又对题目无从下手,从今天开始,我将把书上的题目一 一的解析下来,可以做参考,如果有错,可以告诉我,将在下次解析里重 ...

  9. 信息学奥赛一本通(C++版) 刷题 记录

    总目录详见:https://blog.csdn.net/mrcrack/article/details/86501716 信息学奥赛一本通(C++版) 刷题 记录 http://ybt.ssoier. ...

  10. 最近公共祖先三种算法详解 + 模板题 建议新手收藏 例题: 信息学奥赛一本通 祖孙询问 距离

    首先什么是最近公共祖先?? 如图:红色节点的祖先为红色的1, 2, 3. 绿色节点的祖先为绿色的1, 2, 3, 4. 他们的最近公共祖先即他们最先相交的地方,如在上图中黄色的点就是他们的最近公共祖先 ...

最新文章

  1. join......on 后面的and 和where的区别
  2. jsp常见获取地址函数之间的不同
  3. 保存和恢复应用程序状态
  4. 中大型网站技术架构演变过程
  5. 深入理解React(一)JSX与虚拟DOM
  6. #打开cmd指定路径_CMD
  7. OpenGL GPU粒子
  8. Vue学习(vuex)-学习笔记
  9. java多线程---比较全的
  10. linux更改用户名_破旧安卓手机第二春,在安卓手机上使用Linux_deploy运行Linux
  11. 前端学习(2982):实现商品功能列表
  12. RISC-V架构能否有效挑战ARM和英特尔?
  13. C++标准库:bitset 用法整理 (来自网易 happyboy200032的博客)
  14. Linux之chrony时间同步服务、ntp协议
  15. Js显示Struts2中的内容之escape和escapeHtml
  16. 创 Lockdir 文件夹加密 破解
  17. 系统重启-------即java代码重启tomcat!
  18. 禁止AutoCAD联网
  19. Linux终端更改字体
  20. 《权力的游戏》里,是谁活成了史诗?

热门文章

  1. HMI-33-【运动模式】补上油量表和水温表
  2. RAAT: Relation-Augmented Attention Transformer for Relation Modeling in Document-Level 论文解读
  3. 宝瓷林【名贵釉系列】宫廷秘釉“茶叶末”
  4. 最新版苹果公司开发者账户申请
  5. Matlab机器人的仿真(八):绘制机器人运动轨迹(复现)
  6. 破解网页禁用鼠标右键方法
  7. react仿微信聊天室|react即时聊天IM系统|react群聊
  8. 光纤光猫连接自己路由器的设定
  9. 电脑计算机快捷键消失,电脑桌面快捷方式不见了
  10. 将格林威治时间转换为北京时间