【C语言程序设计笔记】

C语言初识三个结构/函数/数组/操作符

/知识点汇总/

1、初识C语言三个结构

(1)自上而下顺序执行语句序列(顺序结构);
(2)通过测试,选择执行哪一个语句序列(分支/选择结构);
(3)如果满足某些条件就重复执行语句序列(循环结构);
1.1、初识选择结构
选择结构常用关键字:if、else、switch、case、continue、break、default、goto
1.1选择结构代码例程:

/*例程1.1*/
#include <stdio.h>
int main()
{
	int num;
	printf("今天有努力学习吗?\n");
	printf("输入1表示YES,输入其他表示NO\n");
	scanf("%d", &num);
	if (num == 1) 
		printf("有努力学习\n");
	else 
		printf("没有努力学习\n");
	return 0;
}

1.2、初识循环结构:
循环结构常用关键字:while循环、do while循环、for循环
1.2 循环结构代码例程:

/*例程1.1*/
#include <stdio.h>
int main()
{
	printf("今天代码写了多少行:\n");
	int line = 0;
	while (line < 1000)
	{
		printf("今天代码写了的行数:%d\n",line);
		line++;
	}
	//此时最后依次执行line = 1000 比较条件line < 1000 不满足所以跳出循环语句
	if (line == 1000)
		printf("完成今日学习!!!\n");
	return 0;
}

2、初识函数

(1)前言:数学中有,f(x) = ax + b f(x,y) = x+y
当然在C语言中:同样可以实现
(2)概念:语言函数是一种函数,用来编译C语言,一般包括字符库函数,数学函数,目录函数,进程函数,诊断函数,操作函数等

2.1、函数代码例程

/*例程2.1*/
#include <stdio.h>
//封装一个含参的加法函数add()  其中add为用户自定义函数名
add(int x,int y)
{
	int sum3 = x + y;
	return sum3;

}
int main()
{
	int a = 0;
	int b = 0;
	printf("请输入两个整数:\n");
	scanf("%d%d",&a,&b);
	int sum = a + b;
	printf("a=%d\nb=%d\nsum=%d\n", a, b,sum);
	//以函数的形式实现
	int sum2 = add(a, b);//调用add()函数
	printf("a=%d\nb=%d\nsum2=%d\n", a, b, sum2);
	return 0;
}

3、初识一维数组

规范:
(1)一维数组—一组相同类型的元素集合
(2)数组名字符合标识符的书写规定(数字、英文字母、下划线) 。数字不可开头
(3)数组名不能与其它变量名相同 。
(4)方括号[]中常量表达式表示数组元素的个数 。
(5)数组是由下标进行访问,且下标从0开始,依次递增
如:a[3] 包含 a[0], a[1], a[2] 三个元素 //0, 1, 2分别表示其元素下标
(6)一维字符数组初始化三种情况
a、当字符个数少于数组空间大小时:
char ch[5] = {‘a’,‘b’,‘c’};//下标的数>元素的个数时,称为不完全初始化,其余元素默认为0
b、当字符个数等于数组空间大小时:
char ch[] = {‘a’,‘b’,‘c’,‘d’,‘e’};//下标可以不写,可直接写全元素,称为数组初始化
c、当字符个数多于空间大小时:
我们在初始化的时候,当字符个数多于空间大小时,编译时报错。
(7)一维字符数组赋值方式:
a、1)逐个字符赋值:char a[8] = {‘h’,‘e’,‘l’,‘l’,‘o’} ; //始值个数5小于数组a空间个数8
b、字符串初始化赋值:char a[15] = {“Hello World”}; //注意该数组的大小<小标个数

3.1、一维数组代码例程

/*例程3.1*/
#include <stdio.h>
int main()
{
	int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
	int i = 0;
	while (i < 10)
	{
		printf("%d\n",arr[i]);
		i++;
	}
	return 0;
}

4、初识C语言操作符

(1)概念:操作符就是说明特定操作的符号,它是构造C语言表达式的工具
(2)常见的三大类:算术运算符、关系运算符与逻辑运算符之外,还有一些用于完成特殊任务的运算符,比如位运算符等。

4.1、算数操作符例程

算术操作符:+,-,*,/,%
注意
a、% 操作符不能用于浮点数,只能作用于整数,如果作用于浮点数将会报错。
b、当/ 两边的操作都是整数,执行的就是整数除法
c、 当/ 两边的操作数有一个数为浮点数的话,执行的是浮点数除法

/*例程4.1*/
#include <stdio.h>
int main()
{
	int a = 9 / 2;
	int b = 10 % 3; //求10 % 3的余数/模,得出的余数是1
	//% 操作符不能用于浮点数,只能作用于整数,如果作用于浮点数将会报错。
	printf("%d\n", a);
	printf("%d\n", b);
	return 0;
}

4.2、赋值操作符例程

赋值操作符:=
注意:区分赋值运算符 = 与关系运算符 ==

/*例程4.2*/
#include <stdio.h>
int main()
{
	int a = 10;
	printf("%d\n", a);
	return 0;
}

4.3、关系操作符例程

关系操作符:>,>=,<,<=,!= ,==

/*例程4.3*/
#include <stdio.h>
int main()
{
	int num;
	printf("今天有努力学习吗?\n");
	printf("输入1表示YES,输入其他表示NO\n");
	scanf("%d", &num);
	if (num == 1) 
		printf("有努力学习\n");
	else 
		printf("没有努力学习\n");
	return 0;
}

4.4、复合操作符例程

复合操作符:+=,-=,*=,/=,%=,>>=,<<=,&=,|=,^=

/*例程4.4*/
#include <stdio.h>
int main()
{
	int x= 10;
    x+=10;  // 可以写成这样,等价于x= x + 10;
    //其他的运算符同理的操作
    printf("%d",x);//20
	return 0;
}

4.5、单目操作符例程

单目操作符表:

单目操作符类型说明
逻辑反操作符
-负值
+正值
&取地址
sizeof查询对象或类型的大小
~对一个数的二进制位 按位取反
前置、后置减减
++前置、后置加加
*间接访问操作符(解引用操作符)
(数据类型)强制类型转换

注意:(1)sizeof 是一个关键字,可以用来求一个变量或类型所占内存空间的大小(单位:字节)。
(2)++在前先加后用,++在后先用后加;–同理
注意
强制类型转换:()是括数据类型
int a= (int)3.14; 把3.14强制转换成int型
printf(“%d\n”,a); //a的结果为3。
a、double(大)—>int(小) 可能会丢失数据,报错
b、int(小)–>double(大) 满足条件

/*例程4.5*/
#include <stdio.h>
int main()
{
	int a = 10;
	printf("%d\n", sizeof(a));   //计算a所占内存空间的大小为4个字节
	printf("%d\n", sizeof(int)); //计算int类型为4个字节
 
	int arr[5] = { 1,2,3,4,5};
	printf("%d\n", sizeof(arr));  // 数组名 arr 单独放在sizeof代表的是整个数组,
								  //因为arr数组是int型且里面有5个元素,
                                  //int型大小是4个字节,所以总大小为20个字节
    return 0;
}

4.6、条件操作符例程

条件操作符(唯一的三目运算符):表达式1 ? 表达式2:表达式3

/*例程4.6*/
#include <stdio.h>
int main()
{
	int a = 5;
	int b = 8;
	int max = (a > b ? a : b);	//a如果大于b的话会把a赋值给max,如果a不大于b 的话则会把b赋值给max
	printf("%d\n", max);
	return 0;
}

4.7、逻辑操作符例程

逻辑操作符:&& 逻辑与(可以理解成:并且、与的意思)
|| 逻辑或(可以理解成:或 的意思)

/*例程4.7*/
#include <stdio.h>
int main()
{
	int age = 0;
    scanf("%d", &age);
	if (age> 0  && age <18)  //可以这样理解:age > 0 并且 age <18 两个条件同时为真才会打印未成                
    {                        //年,其中只要有一个条件不为真就不会执行该语句
	
		printf("未成年\n");
	}
	return 0;
}

4.8、位操作符例程

位操作符表:

位操作符类型运算规则
& 按位与有0为0,全1为1
按位或有1为1,全0为0
^按位异或相同为0,不同为1
~ 按位取反1变为0,0变为1
& 按位与有0为0,全1为1
<<按位左移扩大2的多少倍
>> 按位右移缩小2的多少倍

注意
(1)左移操作符规则:左边抛弃,右边补0
(2)右移操作符可以分为:
a、算术右移 (右边丢弃,左边补原来的符号位数)
b、逻辑右移 (右边丢弃,左边不用考虑符号位数,直接用0补充)具体算术右移还是 逻辑右移,取决于编译器,我们常见的编译器大多都是算术右移
注意
(1)移位操作符的操作数只能是整数,不能是浮点数。
(2)<< 左移操作符技巧:左移n位扩大2的多少(n)倍,向右补0,左移n位就*2^n
(3)>> 右移操作符技巧:有移n位缩小2的多少(n)倍,当为正整数或无符号整数时,向左(高位)补0,;当为负整数时,高位补1;右移n位就/2^n
(4)知识点:正码,反码,补码
在这里插入图片描述

/*例程4.8*/
#include <stdio.h>
int main()
{
	int a = 9 / 2;//a=4
	int c = a << 1;
	printf("%d\n", c);//c=8
	return 0;
}

4.9、逗号运算符例程

(1)逗号操作符:表达式1 , 表达式2,表达式3
(2)逗号操作符两种执行形式:
a、int a = (1,2,3);
//逗号操作符遇带括号时,结果为最右边的数值3
b、int a = 1,2,3;
//逗号操作符遇不带括号时,结果为最左边的数值1

/*例程4.9*/
#include <stdio.h>
int main()
{
	int a =(1,2,3);
	int b = 1,2,3;
	printf("%d\n", a);//3
	printf("%d\n", b);//1
	return 0;
}

5、参考文献:

感谢:部分知识点参考学习于该博主,写得很好很仔细
本文链接:https://blog.csdn.net/weixin_57525369/article/details/121286993

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值