1.注释的使用
- // 单行注释
- /* */多行注释(不能嵌套)
#include的使用
- include 宏 导入头文件,称为文件包含预处理命令,编译时由预处理器执行 。如果系统已经提供某些功能的实现只需要使用include将这些功能所在的头文件导入进来就可以了。
- <系统提供的类库> eg. stdio.h math.h stdlib.h string.h
- "自己定义的头文件" eg. "calcullate.h"
(注意导入时两种符号的区别)
#include <stdio.h>编译器首先从系统的类库里查找这个头文件 ,如果没有再到自己文件中查找,否则报错
#include "stdio.h"编译器首先从自己的文件里查找这个头文件 ,如果没有再到系统的类库里查找,否则报错
2.main函数的使用
- main()函数 =代码块=完成特定程序 ,所有程序入口点都是main函数
(注意每个程序有且只有一个main函数) - int返回值 记录当前程序的运行状态
0:正常结束 资源自由分配
非零:1 异常结束 没收资源 - int argc:参数个数 argument count
- char* argv[]:(char*字符串) 每个参数组成的字符串数组
#include <stdio.h>
int main(int argc,char*argv[]){
printf("%d",argc);
printf("%s",argv[0]);
return 0;
}
输出结果:1C:\Users\123456\Desktop\未命名1.exe
拓展:
- 在C中如果调用输入输出函数(printf和scanf)需要加上占位符%,起到格式占位的作用,意思是在该位置有输入或输出。
常用
%d表示输入或输出十进制有符号数
%ld长整型输出
%c用来输出一个字符
%s用来输出一个字符串
%f表示输入或输出浮点数,以小数形式输出实数,隐含输出六位小数
%.100f用来输出实数,保留小数点100位
%lf表示输入或输出双精度浮点数
不常用
%o以八进制数形式输出整数
%x以十六进制数形式输出整数,或输出字符串的地址
%e以指数形式输出实数
%g根据大小自动选f格式或e格式,且不输出无意义的零
%u以十进制数输出unsigned型数据(无符号数)。注意:%d与%u有无符号的数值范围,也就是极限的值,不然数值打印出来会有误
3.printf格式化输出
- printf 输出语句,用来让终端 console口输出数据
#include <stdio.h>
int main(int argc,char*argv[]){
printf("hello\n world\n");
return 0;
}
输出结果:hello
world
转义字符
-
除了在键盘上可以直接输入表示字符外,C还提供一种使用特殊形式表示的字符常量,这些字符常量以反斜线“\”开头,改变了原来字符常量的含义,称为转义字符
4.scanf格式化输入
- scanf 输入语句,用来向终端输入数据
- 当用户在终端输入数据时,数据会被存放到缓冲流,scanf用于在缓冲流中找到数据将其放入到给定的位置
- 放入到给定的位置就是保存输入的数据,保存数据需要用到变量,我们只需要把数据送到对应变量的地址,就存储好了该数据,就可以通过该变量使用该数据。所以使用&获得变量a的地址。
int a=4;
scanf("%d",&a);//&表示取地址
- 此时输入数据必须按照“jack+数据”的格式才可以将数据送入到变量中。所以,scanf函数中""里面的内容用来控制输出格式
#include <stdio.h>
int main(){
scanf("jack%d",&a);
scanf("%d",a);
return 0;
}
注意:不要在scanf里面随意写内容写的内容是用输入的格式
scanf("%d%d",a,b);//输入时:数据+空格+数据
scanf("%d\n",a);//输入时:数据+\n(此时\n并不表示换行)
5.基本数据类型->只能存一个值
①首先明确C标准并没有具体给出规定哪个基本类型应该是多少个字节数,而且这个也与编译器有关
②虽然16位、32位或者64位的机子各种类型并一样,但有几条规则(ANS/ISO制定):
- short至少占用2个字节
- int建议为一个机器字长,32位环境下为4字节,64位环境下为8字节
- short的长度不能大于int,long的长度不能小于int
③基本数据类型参照表格
bool 布尔型,是、成立ture;不是、不成立false
string 字符串,"jack"
- 基本数据类型不同所占内存空间不同
- void无返回值,int有返回值
注意:
1.c语言printf输出float和double都可以用%f,double型数据还可以用%lf
2.scanf当中若是对双精度的变量赋值是必须是%f后跟lf,而printf当中可以用%lf也可以用%lf
3.printf()只会看到双精度数,printf的%f格式总是得到double,所以在printf()中使用%lf跟%f的输出显示效果相同
4.对于变量来说,double类型比float类型的精度要高。double精度更高,是指它存储的小数位数更多,但是输出默认都是6位小数。如果你想输出更多小数,可以自己控制,比如%.10lf就输出10位小数
④控制输出格式:
- %md:要求输出字段宽度为m,右对齐,不够左端补空格,大于m按实际输出,如%3d
#include <stdio.h>
int main(){
int count =0;
count =3333;
printf("count =%6d\n",count);
return0;
}
输出结果:count =空格空格3333
- %0md:要求输出字段宽度为m,右对齐,不够左端补0,大于m按实际输出,如%02d
#include <stdio.h>
int main(){
int count =0;
count =3;
printf("I have %02d dogs\n",count);
return0;
}
输出结果:I have 03 dogs
- %m.nd:要求输出字段宽度为m,右对齐,后面n个位置当做小数,没有的补0,最前面m-n个没有的补空格,如%3.2d
#include <stdio.h>
int main(){
float score = 3.1415926;
printf("%2.2f\n",score);
return0;
}
输出结果:3.14
测量数据所占字节数(一个字节占八位)
#include<stduio,h>
int main(){
printf("%d\n",sizeof(int)); //4
printf("%d\n"sizeof(long));//4
printf("%d\n",sizeof(float));//4
printf("%d\n",sizeof(double));//4
printf("%d\n",sizeof(short));//2
printf("%d\n",sizeof(char));//1
printf("%d\n",sizeof(bool));//1
return 0;
}
输出结果:4
4
4
4
2
1
1
6.变量
- 变量是存储数据的内存区域,变量名是所对应内存区域的标识符。标识符是用来表示程序中实体的名字。变量所标识的内存区域中的数据是可以改变的。以图书馆座位为例:座位相当于变量,座位号相当于变量名,而座位上的人相当于储存在变量的数据;变量的类型是上个板块讲到的基本数据类型(数据类型决定变量的储存大小)
- 变量命名:
1.必须以字母或下划线开头。而实际上编程最常用的是以字母开头,以下划线开头变量名是系统专用的,最终还是以英文字母开头
正确变量名:
int In_1=2;
int abc=3;
错误变量名:
int1Int_1=2;
int 2abc=3;
2.不可以包含空格、标点符号和类型说明符(%、&、!、#、@、$)
错误变量名:
int name age=1;
int age%=2;
3.字母是区分大小写的
int n=2;
int N=2;
//变量N和变量n是两个不同的变量
4.有效长度为225个字符
5.不可以是关键字
C语言中的关键字有:auto、 double、 int、 struct、 break 、else、 long、 switch、case、 enum、 register 、typedef、 char 、extern 、return、 union 、const、 float 、short、 unsigned、 continue、 for、 signed 、void、default 、goto、 sizeof 、volatile、 do 、if 、while、 static
- 变量的使用
#include <stdio.h>
int main(){
char choose = '\t';//对字符操作%d,显示字符对应的 ASCII码
printf("%d\n",choose);
return 0;
}
输出结果:9
字符默认情况为/0
- 变量的声明:
没有分配内存空间,使用的时候才会分配,如int a - 变量的定义:立刻为我们分配内存空间 赋初值,如int a=0
- bool类型的变量需要导入(stdbool.h),其值非0即真(1)、0为假(0)
7.运算符
-
算术运算符
#include <stdio.h>
int main(){
int a=20;
if(a++==20) {
printf("a=20\n");
printf("a=%d\n",a);
}else{
printf("a!=20\n");
printf("a=%d\n",a);
}
printf("a=%d\n",a);
return 0;
}
输出结果:a=20
a=21
a=21
(if在下一板块讲解)
注意:a++是先赋值后计算,++a是先计算后赋值
-
逻辑运算符
-
关系运算符
-
赋值运算符
if语句
1、if(表达式)
语句
if(x>y)
printf("%d",x);//此时,如果表达式为真,则执行printf语句
2、if(表达式){
语句1
} else {
语句2
}
if(x>y){
printf("%d",x);
}else {
printf("%d",y);
}
//此时,如果x>y成立为真,则执行语句printf("%d",x),然后直接跳过else,同时也跳过语句printf("%d",y),去执行之后的语句
//如果x>y不成立为假,则不执行语句printf("%d",x),执行语句printf("%d",x)
3、if(表达式1){
语句1
}else if(表达式2){
语句2
}else if(表达式3){
语句3
}
此时,哪个表达式为真,则运行哪个if后面的语句。如表达式3成立为真,执行语句3
- 问号表达式(三目运算符)
#include <stdio.h>
int main(){
char c;
if (3>1){
c='y';
}else{
c='n';
}
return 0;
}
输出结果:y
等价于
c = 3 > 1 ? 'y':'n';
- 逗号表达式
result=表达式1,表达式2,表达式3 (最终结果为表达式3)
include <stdio.h>
int main(){
int temp=20;
if(temp--,temp--,temp--) {
printf("temp=%d",temp);
}//17
int t2=(temp--,temp--,temp--);
if(t2){
printf("temp=%d",temp);
printf("t2=%d",t2);//先赋值后运算
}
return 0;
}
输出结果:tem=17tem=14t2=15
划重点
- a++和++a 需要明确两者的不同
- 还有逗号表达式的使用也是重点
- scanf语句中""中内容不要随意增加,容易出错
此次内容均是一些基础知识,但是万丈高楼平地起,打好基础十分重要。规范代码形式,了解代码意义,重视小细节。同时要养成随时测试代码的习惯,一步一步来,避免出错。