栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

【C语言】笔记(持续更新)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【C语言】笔记(持续更新)

【C语言】笔记 第一章 、计算机和编程语言 一、第一个C程序

1、程序框架

#include 

int main()
{
    return 0;
}

2、输出

printf(“Hello World!n”);""里面的东西是字符串,printf会把其中的内容原封不动输出n表示在输出结果后面换一行

3、程序中的错误

编译器会给出提示

4、不用中文输入
5、可移植 C/C++(C标准除文件操作外没有操作系统硬件资源接口,Windows Linux接口不一样)
跨平台 Java python

二、关于那个0

0与o不一样,0中间有斜杠

三、Mac OS X如何在命令行编辑、编译、运行C程序
gcc hello.c       //编译C程序
ls -l             //显示编译过程
./a.out           //运行,./是Linux中的一种安全命令
四、计算
#include 

int main()
{
    printf("%dn",23+43)           //%d说明后面有一个整数要输出在这个位置上
    printf("23+43=%dn",23+43)    
    return 0;
}
五、四则运算
四则运算C符号
++
-
x*
/
()()

%表示取两个数相除以后的余数

六、main()的样子

return主要是为了告诉电脑程序运行结束,不返回给用户。void main()表示主函数没有返回值,可以不加return;加了return,表示程序结束不继续往下执行;return 0会报错。所有标准均不认可该写法int main()表示主函数返回值为整型,返回一个值看是否为0来判断程序是否正常退出(返回值整型有取值范围,过大会导致程序报错),该种写法在C99和C11标准中不被允许。int main(void)为标准写法 七、VS使用、及编译

1、system(“pause”); 让窗口停留
2、程序变为exe经过两步,一步是编译,一步链接

第二章、数据类型、运算符与表达式 2.1 数据类型

(1)

基本类型:整型int、字符型char、实型(浮点型)可分为单精度和双精度构造类型:数组【】、结构型struct、联合union、枚举enum指针类型*空类型void

(2) C语言的关键字
C语言中的关键字

C语言的关键字

2.2 常量

整型 1实型 3.12字符型 ‘2’字符串型 “”是个空串 2.3 变量

(1)需要:

有地方放输入的数字有办法输入数字输入的数字参与计算

(2)change.c

change.c

#include 
int main()
{
int price = 0;                       //这一行定义了一个变量,变量名是price,类型是int,初始值是0。
printf("请输入金额(元):");
scanf ("%d",&price);               //输入是以行为单位进行的,行的结束标志是你按下了回车键。在你按下回车键之前,你的程序不会读到任何东西。
int change = 100 - price;
printf("找您%d元。n",change);
return 0;
}

变量的作用:变量是一个保存数据的地方,保存了数据,才能参加到后面的计算中

(3)变量定义的一般形式 <变量类型> <变量名称>;

int price;int amount;int price,amount;

(4)标识符

构造基本原则:只能由字母、数字和下划线组成,数字不可以出现在第一个位置上,C语言关键字(保留字)不可以用作标识符

C语言的保留字

C语言中32个关键字详解

C语言的关键字

(5)C语言区分大小写的,变量先定义后使用、见名知意

2.4 整型数据 2.4.1 符号常量
#include 
#define PI 3    //PI就是符号常量
int main()
{
    int a=3;
    a=5;
    //PI=4;    //符号常量不可赋值
    printf("%dn",PI)
}
2.4.2 整型常量的不同进制

进制转换

二进制与八进制的转换
将二进制数每三位转换为一位八进制数,最后在前面加一个0二进制与十进制的转换
把二进制字符串从最高位(左边第一位)开始用商乘以2再加余数(该位的数字),如此循环,左边第一位的商肯定是0;
把十进制除2取余数,并把所有的余数倒排,不够八位在前面加0。二进制与十六进制的转换
四位计算,高位不足补0
内存使用十六进制 (x86架构是小端存储,低位在前,高位在后)

#include 
int main()
{
    //int i=123;
    int i=0x7b;
    printf("%dn",i);       //%d表示以十进制方式输出某一个整型数
}

1 位 1 bit
1字节 1 byte = 8 bit
1Kb = 1024 字节
1Mb = 1024Kb
地址是4个字节
int i 是4个字节

使用scanf时一定要用取地址符&

2.5 浮点型数据 2.5.1 浮点型常量float

小数形式 0.123指数形式 3e-3(e之前必须有数字,e后面的指数只能为整数)

#include
int main()
{
    float f = 1.234;    //e代表10的幂次
    printf("%fn",f);   //%f就是以浮点形式输出对应数据
}
2.5.2 浮点型变量

通过float f 来定义浮点变量,f占用4个字节的空间 2.6 字符型数据 2.6.1 字符型常量

用单引号扩起来的一个字符,且只能包含一个字符! 例:‘a’ ‘1’ ’ ’以开头的特殊字符称为转义字符 n换行 b退格 \反斜杠 2.6.2 字符数据在内存中的存储形式及其使用方法

#include
int main()
{
    float f = 1.234;    //e代表10的幂次
    printf("%fn",f);   //%f就是以浮点形式输出对应数据
    char c = 'a';
    printf("%cn",c);
}

ASCII码表

#include
int main()
{
    char c = 'a';
    c = c-32;         //把小a变成大A
    printf("%cn",c);
}
2.7 字符串型常量

字符串型常量是由一对双引号括起来的字符序列‘a’和“a”不一样不可将字符串型常量赋值给字符型变量,如:

char c;   c = "China";
C语言中没有定义字符串型常量的关键字,用字符数组存放字符串C语言规定以字符’’作为字符串结束标志,以便系统判断"CHINA"在内存中占用六个内存单元,而不是五个,由于的存在‘’ == 0 2.8 混合运算 2.8.1 类型强制转换
#include
int main()
{
    int i = 5;
    float j = i /2;       // i/2是整型计算,得到2,float f =2.0
    float k = (float)i/2;     //float()i将它变成浮点型运算
    printf("j=%f,k=%fn",j,k);
}
2.9 常用的数据输入/输出函数 2.9.1 scanf函数的原理

C语言通过函数库读取标准输入

 #include 
  int scanf( const char *format,...);    //format 是一个字符, ...是一个可变参数,参数的数目与format中%的数目保持一致
  format里面可以有%d %f %c,不限制出现次数
2.9.2 scanf函数的循环读取
#define _CRT_SECURE_NO_WARNINGS
#include
//清空缓冲区,VS2012 fflush(stdin),VS2017- VS2019rewind是新接口取代fflush
//stdin是标准输入
int main()
{
   int i,ret;
   while(rewind(stdin),(ret=scanf("%d",&i))!= EOF)     //while实现循环,后面要有小括号
   {
       printf("i=%dn",i);
   }
   return 0;
}

scanf循环读取发生错误时,返回EOF#define EOF (-1)出错的情况:在行首输入ctrl+z回车,连续三次就出错了,退出控制框, Mac结束循环按一次command+d

#define _CRT_SECURE_NO_WARNINGS
#include
int main()
{
    char c;
    while(scanf("%c",&c)!= EOF)     //while实现循环,后面要有小括号
    {
        if (c!= 'n')
        {
            printf("%c",c-32);
        }
        else {
            printf("n");
        }
    }
    return 0;
}
2.9.3 多种数据类型混合输入
#include
int main()
//一个scanf读多种类型的数据
//混合输入时,每次在%c前面加入一个空格
{
    int i;
    float f;
    char c;
    scanf("%d %c%f",&i,&c,&f);
    printf("i=%d,c=%c,f=%fn",i,c,f);
    return 0;
}
2.9.4 printf函数介绍

原理与scanf差不多

#include
//printf控制输出格式
int main()
{
    printf("name=%s,age=%3d,sex=%c,score=%4.1fn","moovgen",34,'m',98.5);
}
2.9.5 getchar函数 2.9.6 putchar函数 2、变量赋值与初始化

(1)int price=0

price=0是一个式子,“=”是一个赋值运算符,是一个动态的动作。

(2)初始化

当赋值发生在定义变量的时候,就是变量的初始化。所有的变量在第一次被使用(出现在赋值运算符的右边)之前都应该被赋值一次。

若未被初始化,则这个变量所在内存之前所存储的值是多少,该变量就是多少。

<类型名称> <变量名称> = <初始值>

int price =10;int price =10, amount =0;

C是一种有类型的语言,所有变量在使用之前都必须定义或声明,程序运行过程中不可改变变量的类型。

ANSI C与C99

ANSI C只能在代码开头的地方定义变量

(3)读整数

scanf("%d",&price);要求scanf这个函数读入下一个整数,读到的结果赋值给变量price小心price前面的&scanf的f是format(格式化)的意思 3、关于scanf

在scanf中的所有内容都要你进行输入,否则无法读到

4、常量VS变量

(1)常量

int change = 100-price固定不变的数是常数const int AMOUNT = 100;

change.c

#include 
int main()
{
int price=0; 
const int AMOUNT = 100;                     
printf("请输入金额(元):");
scanf ("%d",&price);               
int change = AMOUNT - price;
printf("找您%d元。n",change);
return 0;
}

const 是一个修饰符,加在int前面,用来给这个变量加上一个const(不变)的属性,这个const属性表示这个变量的值一旦被初始化,就不能再修改了。

(2)变量

#include 
int main()
{
int price = 0, amount = 0;                     
printf("请输入金额(元):");
scanf ("%d",&price);  
printf("请输入票面(元):"); 
scanf ("%d",&amount);           
int change = amount - price;
printf("找您%d元。n",change);
return 0;
}
plus.c
#include 
int main()
{
int a,b;                     
printf("请输入两个整数");
scanf ("%d %d",&a,&b);  
printf("%d+%d=%dn",a,b,a+b); 
return 0;
}
二、数据类型 1、浮点数——带小数点的数值
height.c
#include 
int main()
{
    printf("请分别输入身高的英尺和英寸,如输入"5 7"表示5英尺7英寸:" );
    int foot , inch;
    scanf("%d %d",&foot,&inch);
    printf("身高是%f米。n",((foot+inch/12)*0.3048));                //C语言中两个整数的运算的结果只能是整数
    return 0;
}

将printf("身高是%f米。n",((foot+inch/12)*0.3048)); 修改为((foot+inch/12.0)*0.3048))  12>>>12.0
或者int inch >>>> double inch ,%d >>> %lf              //double是指双精度浮点数,float表示单精度浮点数

整数int
printf("%d",...)
scanf("%d",...)

带小数点的数double
printf("%f",...)
scanf("%lf",...)

C语言中两个整数的运算的结果只能是整数10和10.0是完全不一样的数10.0是浮点数浮点数和整数放到一起运算时,C会将整数转换为浮点数,然后进行浮点数运算

浮点是指小数点的浮动,是计算机内部表达非整数(包括分数和无理数)的一种方式。

定点数约定计算机中小数点的位置,且这个位置固定不变,小数点前、后的数字,分别用二进制表示,然后组合起来就可以把这个数字在计算机中存储起来,这种表示方式叫做「定点」表示法,用这种方法表示的数字叫做「定点数」

三、表达式 1、运算符、算子、取余

运算符:进行运算的动作,加减乘除等等

算子:参与运算的值,可能是常数、变量,也可能是一个方法的返回值。

time.c
#include 
int main(void)
{
    int hour1,minute1;
    int hour2,minute2;
    scanf("%d %d",&hour1,&minute1);
    scanf("%d %d",&hour2,&minute2);
    int t1= hour1 * 60 + minute1;
    int t2= hour2 * 60 + minute2;
    int t = t2 - t1;
    printf("时间差是%d小时%d分",t/60,t%60);
}
2、运算符优先级、结合关系、赋值运算
average.c
#include 
int main(void)
{
    int a,b;
    scanf("%d %d",&a,&b);
    double c = (a+b)/2.0;
    printf("%d和%d的平均值=%fn",a,b,c);
    return 0;
}

(1)运算符优先级

优先级运算符运算结合关系举例
1+单目不变自右向左a*+b
1-单目取负自右向左a*-b
2*自左向右a*b
2/自左向右a/b
2%取余自左向右a%b
3+自左向右a+b
3自左向右a-b
4=赋值自右向左a=b

单目双目

单目运算符只有一个算子的运算符,算子出现在其右侧
双目运算符有两个算子

赋值运算符

赋值也是运算,也有结果
a=6的结果是a被赋予的值,也就是6
a=b=6——>a=(b=6)

嵌入式赋值
int a=6;
int b;
int c= 1+ (b=a);
//不利于阅读,容易产生错误

(2)结合关系

一般自左向右单目±和赋值=自右向左 3、交换变量,Dev的调试功能

程序是按步执行的

程序表达的是顺序执行的动作,而不是关系

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/744262.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号