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

初试c语言之第二次笔记

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

初试c语言之第二次笔记

初识c语言之第二次笔记 一:常量 1:字面常量
#include 
int main()
{
	//字面常量
    3.14;
   "abcdef";
   'a';
    return 0;
}
2: const 修饰常变量

注意:常变量不是常量,是常~变量

一开始不加const的时候,num被定义后可以直接修改变量

#include 
int main()
{
	int num = 100;
	num = 200;
	printf("%d ",num);//200
	return 0;
}

加了const之后

#include
int main()
{
	const int num = 100;
	num = 200;
	printf("%d ",num);//err 不能直接修改
	return 0;
}

上面例子上的 num 被称为 const 修饰的常变量, const 修饰的常变量在C语言中只是在语法层面限制了变量 num 不能直接被改变,但是num本质上还是一个变量的,所以叫常变量。

插个小知识点——你知道头文件#include中stdio.h的含义么?
std代表standard 标准,i代表input 输入,o代表output 输出
#include也叫标准输入输出头文件

3:#define 定义的标识符常量
#include
#define MAX 1000
int main()
{
	int a = MAX;
	printf("%dn ",MAX); //1000
	MAX = 2000;//err


	return 0;
}

上述例子上的MAX被称为define定义的标识符常量,与const结果一样,define定义之后,MAX不能直接被改变。

4:enum 枚举常量

枚举常量比较少见,但还是稍微提一下。
生活中的枚举就是一一列举

#include
enum Sex//一一列举
{
 //注:枚举类型中列举的可能取值都是枚举常量
    MALE,//内部储存为0
    FEMALE,//内部储存为1
    SECRET//内部储存为2
};//本代码的括号中MALE,FEMALE,SECRET是枚举常量
int main()
{
    //枚举常量演示
    printf("%dn", MALE);
    printf("%dn", FEMALE);
    printf("%dn", SECRET);
    return 0;   
}

注意:枚举常量的默认是从0开始,依次向下递增1。如果把上述例子中的MALE,改成MALE=4,则FEMALE SECERT向下递增,打印出来的MALE FEMALE SECRET分别为4 5 6。

二:字符串、转义字符与注释 1:字符串
"hello world"
"a"
" "

这种由双引号引起来的一串字符称为字符串字面值,或者简称字符串。C语言没有字符串对应的数据类型。

注:字符串的结束标志是一个 的转义字符。在计算字符串长度的时候 只是结束标志,不算作字符串的内容。

下面的知识点是易错点!!! 体现出了的重要性

#include
#include//strlen库函数的头文件
int main()
{
    char arr1[]="abcdef";
    char arr2[]={'a','b','c','d','e','f'};
    //这两个数组定义一的方式一样吗?
    printf("%sn",arr1);
    printf("%sn",arr2);
    printf("%dn", strlen(arr1));
    printf("%dn", strlen(arr2));
    //strlen是一个库函数,string strlen的缩写,用来求字符串长度,统计的是之前出现了多少个字符
    //输出:
    //abcdef
    //(abcdef后面的部分随机(直到找到才停下来))
    //6
    //(随机值)
    //原因:arr1数组第7个元素为,而arr2数组只存储了6个字符,第一个可以找到
    //字符串的结束标志,而第二个找不到,只能不断地往后找直到找到,strlen函数以也以为结束的标志,但其不计算,原理相同
    return 0;    
}
2:转义字符

#include
int main()
{
    // ? 在书写连续多个问号时使用,防止他们被解析成三字母词
    printf("(are you OK??)n");
    //三字母词: ??) -> ]
    //输出:(are you OK]
    printf("(are you OK??)n");
    //如果改成(are you OK??)就将??转义为??
    //输出即为(are you OK??)
    // ' 用于表示字符',而不再被作为表示字符的符号
    // " 用于表示一个字符串内部的双引号,
    // \ 用于表示一个反斜杠,防止它被解释为一个转义序列符。
    printf("%c",''');
    //输出:'
    printf(""");
    //输出:"
    printf("\n");
    //输出:n
    //这里的将特殊字符转义为普通的字符,加上表示转义后面的字符
    // a 警告字符,蜂鸣,电脑会发出声音
    printf("a");
    // n 换行
    printf("n");
    // r 回车
    // t 水平制表符 相当于键盘上的tab键
    // ddd ddd表示1~3个八进制的数字。 如:130 
    printf("%c",'130');//注意这是一个字符
    // xdd dd表示2个十六进制数字。 如:x30 
    printf("%c",'x63');//注意这也是一个字符
    return 0;
}

易错题:

printf("%d", strlen("c:test628test.c"));

最后输出结果是14 因为t是算一个字符, 62算一个字符,注意:在八进制中没有8(易错!!).
二进制:(0~1),
八进制:(0~7),
十进制:(0~9)
十六进制:(0~15)。

3:注释

三:选择语句

如果你好好学习,校招时拿一个好offer,走上人生巅峰。
如果你不学习,毕业等于失业,回家卖红薯。
这就是选择!

#include 
int main()
{
    int coding = 0;
    printf("你会去敲代码吗?(选择1 or 0):>");
    scanf("%d", &coding);
    if(coding == 1)
   {
       prinf("坚持,你会有好offern");
   }
    else
   {
       printf("放弃,回家卖红薯n");
   }
    return 0;
}    
四:循环语句

有些事必须一直做,比如我们,日复一日的学习。

在C语言中如何实现循环呢?
while语句-这里简单提一下
for语句(后期讲)
do … while语句(后期讲)

//while循环的实例
#include 
int main()
{
    printf("加入比特n");
    int line = 0;
    while(line<=20000)
   {
        line++;
        printf("我要继续努力敲代码n");
   }
    if(line>20000)
        printf("好offern");
    return 0;
}
五:函数
#include 
int main()
{
    int num1 = 0;
   int num2 = 0;
    int sum = 0;
    printf("输入两个操作数:>");
    scanf("%d %d", &num1, &num2);
    sum = num1 + num2;//这个代码只能写两个数相加之和 比较有局限性,写成函数形式就比较方便
    printf("sum = %dn", sum);
    return 0;
}
//上述代码,写成函数如下:
#include 
int Add(int x, int y)//int表示返回类型为整型,Add表示函数名,int x与int y表示形参的类型和命名
{
	int z = 0;
    z = x + y;
    return z;
}
int main()
{
    int num1 = 0;
    int num2 = 0;
    int sum = 0;
    printf("输入两个操作数:>");
    scanf("%d %d", &num1, &num2);
    sum = Add(num1, num2);
    printf("sum = %dn", sum);
    return 0;
}

我们用生活中的例子来理解函数

上述例子中 num1与num2表示输入数据,Add表示函数,最后经过函数处理产出了一个结果z放到sum(产品)里面去。

那么函数是怎么调用的呢?

当代码走到了sum = Add(num1,num2);的时候 往int Add(int x,int y)那里走,把num1传递给x,把num2传递给y,算出x+y的值放到z里面,z再返回,将返回的值放到sum里面去,然后再打印。

六:数组 1:数组的定义

要存储1-10的数字,怎么存储?
C语言中给了数组的定义:一组相同类型元素的集合。

int arr[10] = {1,2,3,4,5,6,7,8,9,10};//定义一个整形数组,最多放10个元素
2:数组的下标

C语言规定:数组的每个元素都有一个下标,下标是从0开始的。

数组可以通过下标来访问的。

int arr[10] ={0};
//int表示这个数组的每个元素都是整型
//arr为数组名,[10]表示数组中共有10个元素
//={0}表示对数组进行初始化,使数组的第一个元素等于零

3:数组的使用
char ch1[5] = {0};//不完全初始化,剩余的默认为初始化为0
char ch2[] = {'a','b','c'};
char ch3[] = {0};//ch3里面只有一个元素——0

char ch = 0;//这个0实际上是,ASCII码值为0
int arr1[10] = {1,2,3,4,5,6,7,8,9,10};
printf("%d ", arr1[8]);//9
printf("%dn", arr1[18]);//越界访问
int arr2[18] = {1,2,3,4,5,6,7,8,9,10};
printf("%dn", arr[10]);//0,因为不完全初始化导致10后面全为0

输入10个值给数组

#include
int main()
{
    int arr[] = {0};
    int i = 0;
    //while循环
    while(i < 10)
    {
    	scanf("%d ",&arr[i]);
    	i++;
    }
    i = 0;//i再次初始化
    while(i < 10)
    {
    	printf("%d ",arr[i]);
    	i++;
    }   
	return 0;
}
七:操作符 1:算术操作符
  +   -    *    /    %
#include
int main()
{
    int a = 7/2;
    //七除二得三余一,结果为三
    int b = 7%2;
    //取模就相当于取余且取模操作符的左右数字只能是整数
    printf("%dn",a);
    printf("%dn",b);
    //输出:
    //3
    //1
    //此时得到的a与b均为整数运算得到的值
    float a = 7.0/2;
    //当我们输入2.0这样的浮点型常量时,编译器会默认其为double类型
    float b = 7/2.0;
    //当我们需要进行小数运算时,只需要除号的左右的数字其一为浮点数即可
    printf("%.1fn",a);
    printf("%.2fn",b);
    //%f用于打印float类型的数据,前面的.1表示小数点后保留一位,.2表示保留两位
    //输出:
    //3.5
    //3.50
    return 0;
}
2:移位操作符
    两个大于和两个小于     >>  <<
3:位操作符
&   ^   |
4:赋值操作符
=  +=   -=   *=   /=   &=   ^=  |=   >>=  

我们这里暂时只提部分

#include
int main()
{
    int a = 10;
    a = 20;
    a += 5;//a加等于5,即表示a = a + 5;
    printf("%d",a);//25
    a -= 5;//a减等于3,即表示a = a - 5;
    printf("%d",a);//20    
    a *= 2;//等于a = a * 2; 
    return 0;   
}
5:单目操作符

其与双目操作符的区别
比如 2 + 3,2被称为左操作数,3被称为右操作数,有两个操作数我们就叫它双目操作符,单目操作符实际上只有一个操作数

   !           逻辑反操作
   -            负值
   +            正值
   &            取地址
   sizeof       操作数的类型长度(以字节为单位)
    ~           对一个数的二进制按位取反
	--          前置、后置--
	++          前置、后置++
	 *          间接访问操作符(解引用操作符)
	 (类型)       强制类型转换
(1):!逻辑反操作符

在c语言中,如何表示真假?
答:0表示假,非0表示真

#include
int main()
{
	int a = 10;
	if(a)//如果a为真
	printf("hehen");//非0为真,因此打印出hehe
	
	return 0;
}
(2):sizeof
#include
int main()
{
    int arr[10]={0};
    printf("%dn",sizeof(arr));//这里用%zu更严谨,%d也是可以的
    //计算整个数组的大小 40
    printf("%dn",sizeof(arr[0]));
    //计算数组一个元素的大小 4
    printf("%dn",sizeof(arr)/sizeof(arr[0]));
    //计算数组元素的个数 10
    int a = 0;
    printf("%d",sizeof(a));//这个地方的()是可以省略的,计算a的大小 4
    printf("%d",sizeof a);//这个代码也是正确的,内容一致 4
    //如果sizeof为函数则必须加上括号,这里不加括号也是正确的,因此sizeof只是一个操作符而不是函数
    printf("%dn",sizeof(int));
    //这个操作符也可以计算类型的大小 4
    //printf("%dn",sizeof int);是不对的必须加括号
    return 0;
}

strlen 与 sizeof 的区别:

strlen 是库函数,只能针对字符串,求字符串长度,计算字符串中之前的字符个数
sizeof 是操作符,是计算所占内存空间的大小

(3):++ –

前置++与- -:先使用(打印),后++,- -
后置++与- -:先++,- -,后使用(打印)

#include
int main()
{
    int a = 10;
    int b = a++;//先使用后++,表示先把10赋给b然后在在a的基础上加1
    // b=a;然后a=a+1;
    printf("%d %dn",a,b);//11 10
    a = 10;
    int c = a--;//同样,先使用后--,表示先把10赋给c然后在在a的基础上减1
    // c=a;然后a=a-1;
    printf("%d %dn",a,c);//9 10
    a = 10;
    int d = ++a;//先++后使用,表示先在a的基础上加1再把11赋给b
    printf("%d %dn",a,d);//11 11
    // a=a+1;然后d=a;
    a = 10;
    int e = --a;//同样,先--后使用,表示先在a的基础上减1再把9赋给b
    printf("%d %dn",a,e);//9 9
    // a=a-1;然后e=a;
    a = 10;
    printf("%dn",a--);//先使用,再--,所以打印出10
    printf("%dn",a);//,减完之后为9,所以打印出9
    return 0;
}
(4):(类型)强制类型转换
#include
int main()
{
	int a = 3.14//err,int是整型
	//强制转换
	int a = (int)3.14;//指把3.14这个double类型的常量强制转化为int类型并赋值给变量a

	printf("%dn",a);//打印3,浮点数强制类型转换为整数会丢失精度
	return 0;
}
6:关系操作符

特意强调下两个字符串的比较大小

#include
int main()
{
	char arr1[] = "abcdef";
	char arr2[] = "abcdef";
	//两个字符串大小相等是不能用==的,应该用strcmp函数
	if(strcmp(arr1,arr2) == 0)
		printf("==n");
	else
		printf("!=n");
}
  大于:>
  大于等于:>=
  小于:<
  小于等于:<=下标引用、函数调用和结构成员:
  不相等:!=
  相等:==
7:逻辑操作符
逻辑与: &&
逻辑或: ||
8:条件操作符

如果第一个表达式exp1为真,则整个表达式的值为表达式exp2的值,否则整个表达式的值为表达式exp3的值

    exp1 ? exp2 : exp3
#include
int main()
{
    int a = 10;
    int b = 5;
    printf("%d",a > b ? a : b);//a > b,a,b对应三个表达式
    //a>b成立,表达式的值为a的值
    //类似于选择语句,找出其中的较大值,输出为10
    a = 1;//此时我们改变a的值
    printf("%d",a > b ? a : b);
    //a>b不成立,表达式的值为b的值
    //输出为5
    return 0;   
}
9:逗号表达式

特点:从左向右依次计算,整个表达式的值是最后一个表达式的结果

  exp1, exp2, exp3, …expN
#include
int main()
{
	int a = 3;
	int b = 5;
	int c = 0;
	int d = (a += 2,b = b - c + a,c = a + b);
	//       a = 5, b = 10,       c = 15  -> d     
	printf("%dn",d);//15
	return 0;
}
10:下标引用、函数调用和结构成员
[]    ()     .    ->

其中一部分操作符涉及二进制的问题,我们先跳过

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

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

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