C语言-1-初识C语言(三)

前言

书接上回,本文将继续了解C语言的基础知识,主要内容有:

  1. 函数
  2. 数组
  3. 操作符

8. 函数

我们在数学中经常提到函数这个概念,例如: y = f ( x ) y = f (x) y=f(x)。针对定义域中不同的x,都有与之一一对应的y。

举个例子:已知一个函数y=f(x),当x < 0时,y = 1;当x = 0时,y = 0;当x > 0时,y = -1。

#include <stdio.h>

int main()
{
    int x = 0;
    int y = 0;
    scanf("%d", &x);
    if (x < 0)
    {
        y = 1;
    }
    else if (x == 0)
    {
        y = 0;
    }
    else
    {
        y = -1;
    }
    printf("%d\n", y);
    
    return 0;
}

函数的特点就是简化代码,代码复用

举个例子:构造函数求两个整数之和

#include <stdio.h>

int Add(int x, int y)
{
	//int z = 0;
	//z = x + y;
	//return z;

	return (x + y);
}

int main()
{
	int num1 = 0;
	int num2 = 0;
	int sum = 0;
	//输入
	scanf("%d %d", &num1, &num2);
	//求和
	sum = Add(num1, num2);
	//输出
	printf("%d\n", sum);

	return 0;
}

9. 数组

如果要存储1~10的数字,可以用数组,数组中可以存放一组相同类型的元素。数组是一组相同类型元素的集合

1). 数组的创建和初始化

//数组的创建和初始化
int arr1[10] = {1,2,3,4,5,6,7,8,9,10};//完全初始化
int arr2[10] = { 1,2,3,4,5};//不完全初始化,剩余的默认初始化为0(整型数组)
char ch[5] = { 'a', 'b', 'c' };//不完全初始化,剩余默认初始化为\0(字符数组)

2). 数组的下标

数组的每个元素都有一个下标,下标是从0开始的。数组可以通过下标来访问其中的元素。

//如果数组有10个元素,其下标的范围是0~9
int arr[10] = { 0 };

我们可以用循环来产生下标

#include <stdio.h>

int main()
{
	//数组通过下标来访问元素
	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };//[10] -- 指定数组大小
	int i = 0;
	//while (i<10)
	//{
	//	printf("%d ", arr[i]);
	//	i = i + 1;
	//}
	for (i = 0; i < 10; i++)
	{
		printf("%d ", arr[i]);//i -- 下标
	}//打印结果为:1,2,3,4,5,6,7,8,9,10

	return 0;
}

10. 操作符

C语言提供了非常丰富的操作符,使得C语言非常的灵活

printf函数打印的格式控制符

%d//十进制的整型
%c//字符
%s//字符串
%f//打印float类型的浮点数
%lf//打印double类型的浮点数

1). 算术操作符

+ //加
- //减
* //乘
/ //除
% //取模(余)

重点

  1. ‘/’ --(除)
#include <stdio.h>

int main()
{
	//除号'/'的两端如果都是整数,执行的是整数除法
	float a = 10 / 4;
	printf("%f\n", a);//打印结果为;2.000000

	//除号'/'的两端至少有一个数是浮点数,才能执行浮点数的除法
	float b = 10.0 / 4;
	printf("%f\n", b);//打印结果为:2.500000

	return 0;
}
  1. ‘%’ – 取模(余)
#include <stdio.h>

int main()
{
	//% 取模(取余), % 操作的两个操作数必须都是整数
	float n = 13 % 4;
	printf("%f\n", n);//打印结果为:1.000000

	return 0;
}

2). 移位操作符

>> //左移
<< //右移

3). 位操作符

& //按位与
^ //按位异或
| //按位或

4). 赋值操作符

= //赋值
+= //加等 -- (此行及以下)复合赋值
-= //减等
*= //乘等
/= //除等
%= //(取)模等
&= //按位与等
^= //按位异或等
|= //按位或等
>>= //左移等
<<= //右移等

举个例子:赋值、加等、乘等

#include <stdio.h>

int main()
{
	int a = 0;//初始化,创建变量的同时给一个值,这叫初始化
	a = 20;//赋值

	a += 5;//加等 -- 复合赋值//a = a + 5;
	printf("%d\n", a);//打印结果为:25

	a *= 10;//乘等 -- 复合赋值//a = a * 10;
	printf("%d\n", a);//打印结果为:250

	return 0;
}

5). 单目操作符

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

C语言中,0表示假,非0表示真

  1. ‘!’ – 逻辑反操作 – 假,假
#include <stdio.h>

int main()
{
	int flag = 5;

	//flag的值是5,为真,打印hehe
	if (flag)
	{
		printf("hehe\n");
	}
	//!flag -- 真非假,if语句的条件表达式为假,不打印haha
	if (!flag)
	{
		printf("haha\n");
	}
	return 0;
}
  1. 负值’-‘和正值’+’
#include <stdio.h>

int main()
{
	int a = +(-10);//'+' -- 正值
	int b = -a;//'-' -- 负值
	printf("%d\n", b);//打印结果为:10

	return 0;
}
  1. sizeof是操作符,是计算变量所占内存空间的大小,单位是字节
#include <stdio.h>

int main()
{
	int a = 10;
	float f = 5.5f;

	printf("%d\n", sizeof(a));//打印结果为:4
	printf("%d\n", sizeof(int));//4

	printf("%d\n", sizeof(f));//4
	printf("%d\n", sizeof(float));//4

	return 0;
}
  1. 前(后)置++和–
#include <stdio.h>

int main()
{
	int a = 100;
	//后置++,先使用,后++
	int b = (a++);//等价于b = a, a = a + 1;//此时b = 100, a = 101

	//前置++,先++,后使用
	b = ++a;//等价于a = a + 1, b = a;//此时a = 102, b = 102

	//后置--,先使用,后--
	b = a--;//等价于b = a, a = a - 1;//此时b = 102, a = 101
	
	//前置--,先--,再使用
	b = --a;//等价于a = a - 1, b = a;//此时a = 100, b = 100
	
	printf("a=%d b=%d\n", a, b);//打印结果为:a=100 b=100

	return 0;
}
  1. 强制类型转换
#include <stdio.h>

int main()
{
	//(类型) - 强制类型转换
	int a = (int)3.14;//这里只取整数部分
	printf("%d\n", a);//打印结果为:3
	
	return 0;
}

6). 关系操作符

>   //大于
>=  //大于或等于
<   //小于
<=  //小于或等于
!=  //不等于
==  //等于

'==‘是用来判断相等的,’='是用来赋值的

#include <stdio.h>

int main()
{
	int a = 3;
	if (a == 5)//如果a等于5,打印hehe
	//if (a = 5)//err//如不小心少打个=,则是将5赋值给a,a非0为真,打印hehe,逻辑错误!
	{
		printf("hehe\n");
	}

	return 0;
}

7). 逻辑操作符

&&    //逻辑与 -- 并且
||    //逻辑或 -- 或者

&& || 只关注真假:有真为真,两真才真。&& 两边同时为真,才为真;|| 两边同时为假,才为假。

#include <stdio.h>

int main()
{
	int a = 1;//a为真
	int b = 0;//b为假
	if (a || b)//a || b为真,打印haha
	{
		printf("haha\n");
	}

	if (a && b)//a && b为假,不打印hehe
	{
		printf("hehe\n");
	}

	return 0;
}

应用:假设x为变量,a和b为常量且a<b;表达式a <= x<= b应写成 x >= a && x <= b

#include <stdio.h>
int main()
{
	//年龄18~36 青年
	int age = 2;
	//18 <= 2为假,C语言中0表示假,0 <= 36为真,逻辑错误!
	//if (18 <= age <= 36)//err

	if (age >= 18 && age <= 36)
	{
		printf("青年\n");
	}
	return 0;
}

8). 条件操作符

exp1 ? exp2 : exp3 // " ? : "是条件操作符

条件操作符等价于if_else语句:如果满足exp1(exp1为真)执行exp2;否则(exp1为假)执行exp3。

#include <stdio.h>

int get_max(int x, int y)
{
	//if (x > y)
	//{
	//	return x;
	//}
	//else
	//{
	//	return y;
	//}
	
	//条件操作符,等价于上面的if_else语句
	return (x > y ? x : y);
}

int main()
{
	int a = 0;
	int b = 0;
	printf("请输入两个整数:");
	scanf("%d %d", &a, &b);//举个例子:输入 3 5
	int max = get_max(a, b);
	printf("max = %d\n", max);//打印结果为:max = 5

	return 0;
}

9). 逗号表达式

exp1, exp2, exp3, …expN

10). 下标引用、函数调用和结构成员

[]    //下标引用操作符 -- 数组
()    //函数调用操作符 -- 函数
.     //结构成员访问操作符 -- 结构体
->    //结构成员访问操作符 -- 结构体
  1. [] – 下标引用操作符 – 数组通过下标来访问元素
#include <stdio.h>

int main()
{
	int arr[10] = {1,2,3,4,5,6,7,8,9,10};
	
	//[] -- 下标引用操作符 -- arr[4]是数组arr中下标为4的元素
	printf("%d\n", arr[4]);//打印结果为:5
	
	return 0;
}
  1. 函数名后面的括号’()’ – 函数调用操作符
#include <stdio.h>

int Add(int x, int y)
{
	return (x + y);
}

int main()
{
	int num1 = 0;
	int num2 = 0;
	int sum = 0;
	//输入
	scanf("%d %d", &num1, &num2);
	//求和
	sum = Add(num1, num2);//() - 函数调用操作符
	//输出
	printf("%d\n", sum);

	return 0;
}

总结

  1. 简单了解函数,函数的特点:简化代码,代码复用;
  2. 数组的创建、初始化和下标
  3. 操作符:算数、移位、位、赋值、单目、关系、逻辑、条件、逗号表达式、下标引用、函数调用和结构成员访问。

以上拙见,欢迎大家指正和交流。


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值