C语言 第一部分

一、C语言的发展历程

机器语言(第一代语言)-汇编语言(第二代语言)-结构化语言-面向对象语言(第三代高级语言)

高级语言(速度最快) a+b    汇编语言  ADD AX,BX 机器语言 0000 0001 1101 10000

C的优点:代码量小 速度快(所以windows Linux以及unix系统都是C或C++编程语言编写的) 功能强大   C的缺点 危险性高,开发周期长(写大程序时很容易崩溃),可移植性不强

C语言的应用领域

系统软件开发(操作系统 三个)驱动程序:主板驱动、显卡驱动、摄像头驱动

数据库 DB2 Oracle Sql Server

应用办公软件:wps 图形图像多媒体:Photoshop 嵌入式软件开发 智能手机、掌上电脑 游戏开发:2D 3D

第一个例子--------------一元二次方程求解

#include <stdio.h>

#include <math.h>

int main()

{

    int a, b, c;

    int res, dei;

    float x1, x2;

    float x;

    printf("请输入abc的值:");

    scanf("%d%d%d", &a, &b, &c);

    dei = b * b - 4 * a * c;

    // printf("%d",a);

    // printf("%d",b);

    // printf("%d",c);

    // printf("%d",dei);

    if (dei > 0)

    {

        printf("该方程有两个不等的解");

        x1 = (-b + sqrt(dei)) / 2 * a;

        x2 = (-b - sqrt(dei)) / 2 * a;

        printf("%f%f", x1, x2);

    }

    if (dei == 0)

    {



        printf("该方程有两个相等的解");

        x = (-b + sqrt(dei)) / 2 * a;

        printf("%f", x);

    }

    else

    {



        printf("该方程无解");

    }



    return 0;

}

二、C语言编程知识

1、cpu 内存条(在主板插着) 硬盘 显卡 主板 显示器之间的关系

先把硬盘上的数据调用在内存条上去,cpu在处理内存条中的数据,如果是图像的话通过显卡在显示器上输出,如果是声音的话,通过声卡输出

主板提供了以上传输的地方,cpu 内存条以及显卡硬盘都是在主板上的。

2、helloworld程序的运行

点击运行按钮,生成exe程序,让操作系统调用cpu去执行这个文件 即所有软件的运行都建立在操作系统上,靠调用cpu来运行

3、什么是数据类型

编程的第一步是进行数据的存储,存储在计算机中

基本类型数据(不可进行分割整数,浮点数,字符) 复合类型数据(结构体 枚举 共用体)

4、什么是变量

变量就是一个容器,保存数据在计算机中 int i; i=3;3最终是存放在内存(空闲的单元)中,程序终止时,3所占的空间被释放掉。

变量所对用的就是内存中空闲的单元。变量的本质是内存中一段存储空间

5、cpu 内存条 编译器 操作系统之间的关系

编译器发出请求,操作系统调用cpu在内存条分配变量地存储空间

6、变量为什么要初始化

初始化就是给变量赋值,没赋值就输出,可以输出为任意值0101码

7、如何定义变量

数据类型 变量名=要赋的值 等价于 数据类型 变量名;变量名=要赋的值;

8、什么是进制

十进制 逢十进一 二进制  逢二进一

进制转换

八进制前面加0,十六进制前要加0x或0X,十进制前面啥也不加

9、常量在C中如何表示

整数:十进制 十六进制 八进制

字符常量 单个字符用单引号,字符串用双引号

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

编码 计算机中以二进制编码存放,整数是以补码的形式转化为二进制代码存储在计算机中

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

11、代码规范化

整齐,程序不容易出错     代码要成对的敲比如括号

一般的程序   先定义变量   对变量进行操作   输出值

12、什么是字节

存储数据的一个单位,硬件所能访问的最小单位   1字节==8位 cpu只能控制字节,不能按位控制

1K==1024字节 1M==1024k 1G=1024M

320G----实际只有300G,换算单位不一样,买电脑的是以1000为单位,电脑硬件是以1024为单位的

13、不同类型数据之间相互赋值的问题  暂不考虑 要学补码

int i=45;long j=102345 i=j;很容易丢失数据,但是如果int i刚可以把j的数据放下就不会丢失了。

单C语言是可以相互转换的,不会出错

14、什么是ASCII

任何一个ASCII都可以转化为十进制数

ASCII不是一种值,而是一种规定。规定了不同的字符是使用哪一个整数值去表示

15、字符本质上与整数的存储方式相同(字符的存储)
16、基本输入与输出函数

printf() --将变量的内容输出到显示器  \n转义字符

printf("%d",i)  %d的意思是把i以十进制形式输出 d是十进制 i对应的是二进制代码010101,%d指示把i以十进制形式输出

printf("%d %d",i,j) 一个输出控制符对应一个参数 输出 i j,输出控制符(以%号开头的,%d %ld %f %lf %x %c %o)和输出参数的个数要一一对应

printf("i=%d,j=%d",i,j)

17、为什么需要输出控制符

01组成的代码可以表示数据也可以表示指令

如果表示的数据的话,那么同样的01代码以不同的输出格式输出就会有不同的输出结果

scanf() 通过键盘将数据输入到变量中,两种用法:用法一:scanf("输入控制符",输入参数)

将从键盘输入的字符转换为输入控制符所规定格式的数据,然后存入以输入参数的值为地址的变量中

C语言中输入控制符和输出控制符是一样的,

scanf("%d",&i); &i表示i的地址,&是一个取地址运算符

scanf("m%d",&i) 键盘输入m123   √ 含有非输入控制符的用法 非输入控制符必须原样输入

一次多个变量输入呢?

scanf("%d %d",&i ,&j);由键盘输入两个数字 由空格隔开

scanf("%d,%d",&i,&j); 存在非输入控制符逗号,键盘也要输入逗号,即非输入控制符必须原样输入

18、运算符

算数运算符  + - * / %

关系运算符 > >= <= != ==

逻辑运算符 ! &&(并且 一假都假) || (或 一真则真)  !真==假

&&左边的表达式为假,右边的表达式肯定不会执行  //不含有分号的是表达式,含有分好的是语句

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

赋值运算符 + += a+=3  a=a+3

优先级别:算数>关系>赋值

取余运算符 结果是整除后的余数,其余数的符号与被除数相同

-13%3=-1

19、scanf函数总结 即只有两种用法

1、没有输入控制符

2、有输入控制符空格或逗号

scanf("非输入控制符 输入控制符",输入参数)

将从键盘输入的字符转换为输入控制符所规定格式的数据,然后存入以输入参数的值为地址的变量中

非输入控制符必须原样输入

20、流程控制

1、什么是流程控制

程序代码执行的顺序

2、流程控制的分类

顺序执行

选择执行

某些代码可能执行,也可能不执行,有选择的执行代码

21、分类

1、if

最简单的用法 if(表达式) 豫剧 如果表达式为真,执行语句,如果表达式为假,则不执行

if的范围问题

if(表达式)

 语句A;

 语句B;

if默认只能控制语句A的执行或不执行,if无法控制语句B的执行或不执行,或者说,语句B一定会执行。

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

if-else

if-else if-else

C语言对真假的处理

非零是真,零是假

if举例--求分数等级

22、如何看懂一个程序(分三步)

1、流程,先执行哪一个,后执行哪一个

2、每个语句的功能

3、试数,修改参数

23、循环

循环定义: 某些代码会被重复执行

循环分类:  for       while       do      while

​
#include<stdio.h>
int main(void)
{
  int  i;
  int sum=0;
  for(i=1;i<=99;++i)
     sum=sum+i;
  printf("sum=%d\n",sum);
  return 0;
}

​

注:先执行i 在执行i<=99 然后执行sum=sum+i 最后执行++i,sum=sum+i标志着一次循环结束执行,然后再判断i是否符合取值范围。符合的话继续执行循环,不符合的话循环终止。

另外如果sum不赋值的话就是一个“垃圾值”,即就是一个随机值,不确定值,再继续执行循环的话输出的值依旧是”垃圾值“。

目的: 明白循环的流程(单个for循环的使用 多个for循环的嵌套使用),循环很重要。

for(1; 2 ;3) 
   语句A
for(1; 2; 3)
         for(4; 5;6)
            A;
            B;

//双重循环 先执行1 2 4 5 然后执行语句A 语句B不属于此循环 ,所以不会在循环中执行语句B。
//一个分号结束是一个语句 6执行完后执行5 内部执行结束后在执行外部循环。

 while

1、执行顺序
格式:while(表达式)
           语句;
2、与for循环的相互比较  
for和while可以相互转化 但for的逻辑性更强,更不容易出错,推荐多使用for循环
  for(1;2;3)
   A;
等价于
1;
while(2)
{
  A;
  3;
}
//从键盘输入一串数字 判断是不是回文数,是的话输出yes 否则输出no
#include<stdio.h>
int main()
{
    int num;
    int s;
    int sum=0;
    printf("请输入一个数字");
    scanf("%d", &num);
    printf("%d",num);
    s=num;
    while(s>0)
    { 
        sum=sum*10+s%10;
        s=s/10;
    }
    printf("%d", num);
    if(s==sum)
     { printf("yes");
     }
    else
    {
       printf("no");
    }
    return 0;
}

do...while

do
{

}
while(表达式);
do while 并不等价与for,也不等价于while 主要用于人机交互和一元二次方程

switch

#include<stdio.h>
int main()
{
 int val;
 printf("请输入您要进入的楼层:");
 scanf("%d",&val);
 switch(val)
{
 case 1:
 printf("1层开!\n");
 break;
 case 2:
 printf("2层开!\n");
 break;
 case 2:
 printf("3层开!\n");
 break;
 default:
   printf("无");
   break;



}

}

case1 case 2 case 3和default是程序的入口,当一旦找到程序的入口后,就没有入口了,顺序执行, 1 2 3 和default就失效了,只顺序执行。

break和continue

break: 用于循环是来终止循环

用于switch是来终止switch

break不能直接用于if,除非if是属于循环的一个子句。

for(i=0;i<3;i++)
{
  if(3>2)
      break;
  printf("嘿嘿");     //永远也不会输出
}

break是用来终止for循环的。

break用于多个for循环:

#include<stdio.h>
int main()
{
int i,j;
for(i=0;i<3;i++)
{
  for(j=1;j<4;++j)
     break;             //在多层循环中 break 只能终止离他最近的一个循环
   printf("hahahha");

}
return 0;
}

在多层switch嵌套中,break也只能终止离他最近的一个switch。

continue

用于跳过本次循环余下的语句,转去判断是否需要执行下次循环

for(1:2:3)
{
  A;
  B;
  continue; //如果执行该语句,则执行完该语句后·,会执行语句3,C和D都会被跳过去不执行
  C;
  D;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值