C语言——表达式、语句、函数

C语言------表达式、语句、函数

  • 一、表达式
    • [1.1 定义](#1.1 定义)
    • [1.2 数学运算符和数学表达式](#1.2 数学运算符和数学表达式)
    • [1.3 关系运算符和关系表达式](#1.3 关系运算符和关系表达式)
    • [1.4 逻辑运算符和逻辑表达式](#1.4 逻辑运算符和逻辑表达式)
    • [1.5 赋值运算符和赋值表达式](#1.5 赋值运算符和赋值表达式)
    • [1.6 表达式优先级顺序](#1.6 表达式优先级顺序)
    • [1.7 字符型数据](#1.7 字符型数据)
  • 二、语句
    • [2.1 表达式语句](#2.1 表达式语句)
    • [2.2 复合语句](#2.2 复合语句)
    • [2.3 选择语句](#2.3 选择语句)
      • [2.3.1 if-else语句](#2.3.1 if-else语句)
      • [2.3.2 switch语句](#2.3.2 switch语句)
    • [2.4 循环结构语句](#2.4 循环结构语句)
      • [2.4.1 while语句](#2.4.1 while语句)
      • [2.4.2 do-while语句](#2.4.2 do-while语句)
      • [2.4.3 for语句](#2.4.3 for语句)
  • 三、函数

一、表达式

1.1 定义

  • 表达式由运算符、操作数和括号组成,是计算和求值的基本单位
  • 操作数包括常数、 变量、函数调用和表达式
  • 典型的操作数和表达式
    • 数学运算符和数学表达式
    • 有理运算符和有理表达式
    • 逻辑运算符和逻辑表达式
    • 赋值运算符和赋值表达式

1.2 数学运算符和数学表达式

  • 数学运算符:+ - * / %等
  • 数学表达式:(2+8.2/3)*4 10%4
  • 在C语言中,数学运算符的操作数可以是整数、字符串、浮点数
    • 如果表达式中的操作数都是字符或者整数的话,表达式的结果也是整数
    • 如果至少一个操作数式浮点数的话,表达式的结果也是浮点数
    • 字符数据总是先转换为整型数据,再进入运算操作
  • 在C中整型、字符串、浮点数可以混合,如:
    • 5+1.0+'A'=71.000000

1.3 关系运算符和关系表达式

  • 关系运算符常用作比较两个数据之间的关系
  • 关系表达式是用关系运算符链接起来的两个表达式,关系表达式的结果是'true'或者'false'
  • 'true'是1,'false'是0
  • 包括==,!=,>,<,>=,<=

1.4 逻辑运算符和逻辑表达式

  • 包括&&和,||或,!非
  • 逻辑表达式的结果是'true'或者'false'
  • 在C中3<5<2需要分开写,写成3<5&&5<2

1.5 赋值运算符和赋值表达式

  • 赋值运算符:用来将值存入变量
  • 赋值表达式:有赋值运算符的表达式
  • 赋值是将右边的值赋给左边的变量
运算符 例子 含义
= num=5 将5存入变量num
+= num+=5 相当于num=num+5
-= num-=5 相当于num=num-5
*= num*=5 相当于num=num*5
/= num/=5 相当于num=num/5
%= num%=5 相当于num=num%5

1.6 表达式优先级顺序

  • 算术>关系>逻辑>赋值
  • i=a>20&&a%5==0等价于i=((a>20)&&((a%5)==0))

1.7 字符型数据

  • 1和'1'的区别
  • 1是一个整数,是数值本身,用于数学计算
    • 在内存中为整数值1
  • '1'是一个字符,是一个符号,在程序中用单引号表示,对应键盘上的字符1
    • 在内存中储存的是其ASCII值,'1'的ASCII码值是49
  • 如何相互转换
c 复制代码
//从字符得到数字
char ch='1';
int num=ch-'0';  //利用ASCII值差,'1'-'0'=1

//从数字得到字符
int num =1;
char ch=num+'0';//  1+'0'='1'

二、语句

  • 语句用于向计算机下达指令
  • 语句通过编译可以生成一条或多条机器指令
  • C语言的六种语句
    • 表达式语句(Expression Statements)
    • 复合语句 (Compound Statement)
    • 选择语句 (Selection Statements)
    • 循环语句 (Loop Statements)
    • 标记语句 (Marked Statements)
    • 跳转语句 (Jump Statements)

2.1 表达式语句

  • 在每个表达式后边加上 ";"分号,就是表达式语句了

2.2 复合语句

  • 复合语句是一个代码片段,包含0或多个语句,也称作语句块
  • 在C中复合语句由左括号和右括号组成 { }

2.3 选择语句

  • 在C中的选择语句有
    • if-else语句
    • switch语句

2.3.1 if-else语句

  • if-else语句中的"表达式"必须用"("和")"括起来;表达式可以是任一种表达式,关系表达式和逻辑表达式较常见
  • else子句是if语句的一部分,必须与if配对使用,不能单独使用
  • 可以没有else子句(但必须有if子句)
  • 练习:输入一个字符,如果是小写字母,则输出为:this is a lower-case letter;如果是大写字母,则输出为: this is a upper-case letter;如果是数字,则输出为: this is a digit;若是其他,则输出为:this is neither a letter nor a digit.
c 复制代码
#include<stdio.h>

int main()
{
	char ch;
	printf("请输入:");
	scanf("%c",&ch);
	if(ch>='a'&&ch<='z')
	{
		printf("this is a lower-case letter");
	}else if(ch>='A'&&ch<='Z')
	{
		printf(" this is a upper-case letter");
	}else if(ch>='0'&&ch<='9')
	{
		printf("this is a digit");
	}else 
	{
		printf("this is neither a letter nor a digit");
	}
	return 0;
} 

2.3.2 switch语句

  • 利用switch语句可以实现多路选择
  • 常量表达式必须是C语言中的整型、字符型或者枚举类型
c 复制代码
switch(表达式){              //方括号表示其内的语句可选
  case 常量表达式1:
     语句1[break;]
  case 常量表达式2:
     语句2[break;]
     ............
  case 常量表达式n:
     语句n[break;]
  default:
     语句n+1
}
  • 例子
c 复制代码
switch (sex){
 case 0:printf("hello, boy!");break;
 case 1:printf(" hello, girl!");break;
 default:printf("invalid sex");
}

2.4 循环结构语句

  • 程序中需要多次运行同一段代码(重复做相同的事情),这种控制结构称为循环结构
  • 三种用于实现循环结构的语句
    • while
    • do-while
    • for

2.4.1 while语句

c 复制代码
while(表达式)
   语句;
  • 运行逻辑:先判断表达式中的结果是否为真,为真则执行下边的语句,为假则退出循环
  • 例子:使用while语句输出0~N之间的整数
c 复制代码
#include<stdio.h>

int main()
{
	int N;
	scanf("%d",&N);
	int i=0;
	while(i<=N)
	{
		printf("%d ",i);
		i++;
	}
	return 0;
} 
  • 关键点
c 复制代码
循环初始化;
while(循环条件){
 本次循环本职工作;
 修改相关变量,为下一次循环做准备;
}
  • 练习2:打印三角形
c 复制代码
#include<stdio.h>



int main()
{
	int lines;
	printf("请输入要打印的三角形行数:"); 
	scanf("%d",&lines);
	int count =1;
	int i=1;
	while(count<=lines)
	{
		int k=1;
		while(k<=i)
		{
			printf("*");
			k++;
		}
		printf("\n");
		i++;
		count++; 
	}
	return 0;
}
  • 练习3:输入起止年份,输出这两年之间的闰年。用while结构实现。闰年的条件是:a)能被4整除但不能被100整除;或b)能被100整除且能被400整除;
c 复制代码
#include<stdio.h>

int main()
{
	int y1,y2;
	printf("请输入两个年份:");
	scanf("%d %d",&y1,&y2);
	int tempYear=y1;
	printf("这两个年份中间的闰年年份为:") ;
	while(tempYear<=y2)
	{
		if(tempYear%4==0&&tempYear%100!=0||tempYear%400==0)
		{
			printf("%d ",tempYear);
		}
		tempYear++;
	} 
}

2.4.2 do-while语句

c 复制代码
do
语句
while (表达式);
  • 练习1:利用do-while语句输出0~N之间的整数(N>0)
c 复制代码
#include<stdio.h>

int main()
{
	int N;
	printf("请输入一个一个整数:");
	scanf("%d",&N);
	int count=0;
	int i=0;
	do
	{
		count+=i;
		i++;
	}while(i<=N);
	printf("%d",count);
}

2.4.3 for语句

  • for(表达式1;表达式2;表达式3)
  • 练习
c 复制代码
#include<stdio.h>
#define N 10
int main()
{ 
 int i;
 for(i=0;i<=N;i=i+1)
printf("%d",i);
 
 return 0;
}

三、函数

  • 定义:函数是封装并给以命名的一段程序代码,完成明确的功能,可供调用
  • 函数是C语言程序设计的基本单位,一个C语言程序是由一个主函数(main)和其他若干个函数组成的
  • 程序的运行都从主函数开始,也是由主函数结束。主函数可以调用其他函数(子函数)来完成特定任务,而子函数还可以调用其他子函数
  • 主函数由操作系统调用,其他函数由主函数调用,当主函数执行结束,控制便交还给操作系统
相关推荐
arron88993 小时前
C# 项目源码进行全面的技术架构和调用逻辑分析。以下是系统性的技术方案
开发语言·架构·c#
Tony_yitao3 小时前
12.华为OD机试 - N个选手比赛前三名、比赛(Java 双机位A卷 100分)
java·算法·华为od·algorithm
小龙报3 小时前
【算法通关指南:数据结构与算法篇】树形结构遍历指南:DFS 递归深搜与 BFS 队列广搜实战解析
c语言·数据结构·c++·算法·链表·深度优先·visual studio
业精于勤的牙3 小时前
浅谈:快递物流与算法的相关性(六)
算法
88号技师3 小时前
【2025年1区SCI】最新信号分解方法-JMD的参数优化:15种适应度函数-matlab代码
开发语言·matlab·故障诊断·信号分解
zmzb01033 小时前
C++课后习题训练记录Day44
开发语言·c++
smile_Iris3 小时前
Day 30 函数定义与参数
开发语言·python
qq_433554543 小时前
C++ 二维线性DP
c++·算法·图论
风筝在晴天搁浅3 小时前
代码随想录 115.不同的子序列
算法