当前位置: 首页 > news >正文

华清远见25072班C语言学习day3

重点内容:

标准输入输出函数:

2.scanf函数

        scanf("格式符",&变量名);     参数一:格式符 参数二:变量的地址

        scanf函数:是一个严格控制格式的函数,双引号内是什么格式,终端输入就要是什么格式

        scanf在获取多个数据时,以空格、tab键和回车作为数据的间隔

        当scanf缓冲区中的数据和双引号内格式符的个数一致时,回车会作为scanf结束的标志

        scanf在获取字符类型数据时,需要吸收垃圾字符

吸收垃圾字符的方式:

  1. 在%c格式符的前面加一个空格,这一个空格可以吸收无数个垃圾字符(空格、tab键和回车)
  2. 用%*c来吸收垃圾字符(抑制字符必须吸收一个字符,不论是否是垃圾字符,且如果有垃圾字符,抑制字符只能吸收一个垃圾字符)
  3. 使用getchar吸收垃圾字符需要写多条scanf语句
3.putchar

        putchar(要输出的数据);        字符型数据的输出函数

4.getchar

        变量名=getchar();        字符数据的输入函数


运算符:

1.算数运算符

        +、-、*、/、%

        /:如果运算符左右两个操作数都是整数,结果是取整。只要有一个操作数是浮点型,结果就是浮点型。除数不能为0

        %:除数不能为0,两个操作数都必须是整形。a对b取余的结果

2.自增自减运算符

        a++、++a     前自增和后自增

        a++运算的结果是a自增前的结果,但是a已经自增过了

        ++a运算的结果是a自增后的结果,a已经自增过了

         a--、--a        前自减和后自减

        a--运算的结果是a自减前的结果,但是a已经自减过了

        --a 运算的结果是a自减后的结果,a已经自减过了

3.赋值运算符

        = 就是C中的赋值运算符

        左值:一般变量就是左值,左值是既可以放在赋值运算符左侧也可以放在赋值运算符右侧的值

        右值:一般常量就是右值,右值是只能放在赋值运算符右侧的值

4.条件运算符

        表达式1?表达式2:表达式3        如果表达式1成立,执行表达式2,否则执行表达式3

5.关系运算符

        关系运算的结果是真值/假值        为真结果为1;为假结果为0

6.逻辑运算符

        表达式1&&表达式2        如果表达式1和2同时成立结果为真,否则为假

        表达式1||表达式2         只要表达式1和2中有一个成立,结果就为真

        !(单目运算符)                非真即假,非假即真

可能会造成逻辑短路的现象:

        逻辑与运算只要左侧的表达式结果为假,右侧的表达式不会执行

        逻辑或运算只要左侧的表达式结果为真,右侧的表达式不会执行

7.逗号运算符

        (表达式1,表达式2,表达式3)        

        可以有多个表达式,并且每一个表达式都会执行,获取最右侧一个表达式的结果

8.sizeof运算符

        sizeof的用法和函数很像,但是sizeof是C中的一个关键字

        sizeof(数据); //数据可以是常量,可以是变量,可以是数据类型

        sizeof的结果在32位操作系统下,是一个unsigned int

        在64位操作系统下,是一个unsigned long int

9.位运算符

        a>>2        a右移两个bit位,高位补符号位

        a<<2        a左移两个bit位,低位补0

        数据左移n位相当于乘2^n,右移n位相当于除2^n

        a&b         两个bit位都为真,结果为真,否则结果为假

        a|b          两个bit位任意一个为真,结果为真,否则为假

        a^b         两个bit位相同结果为0,不同结果为1(同0异1)

        ~a           将a的每一个bit位按位取反

10.运算符优先级


if分支语句:

if单分支语句:

        if(条件) { 满足条件执行的语句块 }

if双分支语句:

        if(条件) { 满足条件执行的语句块 } else { 不满足条件执行的语句块 }

if多分支结构:

        if(条件1) { //满足条件1执行的语句块; }

        else if(条件2) { //不满足条件1,但是满足条件2,执行的语句块 }

        else if(条件3) { //不满足条件1也不满足条件2,但是满足条件3执行的语句块 }

嵌套if:

if(条件1)

{

        if(条件2) { //既满足条件1也满足条件2执行的语句块 }

        else { //满足条件1但是不满足条件2执行的语句块 }

}

else { //不满足条件1执行的语句块 }

if注意事项:
  1. if的条件后面不要加分号,加了分号之后后面的语句和if判断无关
  2. 如果if后面有多条语句,一定要加{}
  3. else前面必须有一个if

switch···case分支:

switch(变量名)
{
case 常量表达式1:
//当常量表达式1的值和变量值相同时执行的语句块
break;
case 常量表达式2:
//当常量表达式2的值和变量值相同时执行的语句块
break;
·······
case 常量表达式n:
//当常量表达式n的值和变量值相同时执行的语句块
break;
default:
//当上述常量表达式的值和变量值都不想同时,执行default后面的语句
//switch···case中的最后一条分支,break可以加也可以不加
}

执行逻辑:
switch···case语句会去判断变量值,用变量的值和case后面常量表达式的值对比,如果相同,则从该位置进入switch···case语句

case击穿:

        如果一条case后面没有写break,那么会从进入该分支开始,一直向下顺序执行switch···case语句,直到switch···case结束

switch···case的注意事项:
  1. switch···case是对()中变量的值进行判断,哪一个case后面的值和变量值相同立即跳转到该分支,从该分支开始进入switch···case语句执行后面的代码
  2. default是用来判断所有case的值都和变量值不同的情况,如果没有case符合要求,执行default的代码
  3. switch的()中不能定义变量
  4. case后面的值不能重复
  5. break的作用:用于在进入switch···case后退出switch···case语句
  6. switch···case只能判断,整形和字符型的变量

作业:

1.终端输入三条边长,判断是否能构成三角形?
a.如果能构成三角形,判断是直角三角形,
b.如果不是直角三角形,判断是否是等腰三角形,
c.如果是等腰三角形,判断是否是等边三角形

程序源码:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
int a,b,c;
printf("请输入三条边长(用逗号分开)");
scanf("%d,%d,%d",&a,&b,&c);
if(a+b>c&&a+c>b&&b+c>a)
{
if(a==b||b==c||a==c)
{
if(a==b&&b==c)
{
printf("可以构成等边三角形\n");
}
else
{
printf("可以构成等腰三角形\n");
}
}
else if(a*a+b*b==c*c||a*a+c*c==b*b||c*c+b*b==a*a)
{
printf("可以构成直角三角形\n");
}
else
printf("可以构成三角形\n");
}
else
printf("不能构成三角形\n");
return 0;
}

2.终端输入三个不同的整数,输出三个数中的中间值

程序源码:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
int a,b,c,mid;
printf("请输入三个数(用逗号分开)");
scanf("%d,%d,%d",&a,&b,&c);
if(a>b&&a<c||a>c&&a<b)
{
mid=a;
}
else if(b>a&&b<c||b>c&&b<a)
{
mid=b;
}
else
mid=c;
printf("mid=%d\n",mid);
return 0;
}

3.某快递公司收费标准:
a.首重1公斤内10元;
b.续重每公斤5元(不足1公斤按1公斤算);
c.超过20公斤,每公斤8元(不再享受首重优惠,全部按续重计算)
d.另外,如果是偏远地区(用字符变量表示,如'y‘代表偏远,'n'代表不偏远),加收5元
e.输入重量(公斤,可以是小数)、是否偏远(y/n)

程序源码:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define First_Weight 10
int main(int argc, const char *argv[])
{
double weight;
char distance;
int sum=0;
printf("请输入重量和距离(y为偏远;n为不偏远;用逗号分开)");
scanf("%lf, %c",&weight,&distance);
int weight_decimal=(int)weight;
if(weight<=1)
{
sum+=First_Weight;
if(distance=='y')
sum+=5;
}
else if(weight>1&&weight<=20)
{
if(weight!=weight_decimal)
{    
sum=sum+First_Weight+weight_decimal*5;
}    
else
{
weight=weight_decimal-1;
sum=sum+First_Weight+weight*5;
}
if(distance=='y')
sum+=5;
}
else
{
if(weight!=weight_decimal)
{
weight=weight_decimal+1;
sum=weight*8;
}
else
sum=weight*8;
if(distance=='y')
sum+=5;
}
printf("courierfee=%d\n",sum);
return 0;
}

4.思维导图:

http://www.dtcms.com/a/318403.html

相关文章:

  • EXCEL-业绩、目标、达成、同比、环比一图呈现
  • Etcd,真的需要集群部署吗?
  • 消防通道占用识别误报率↓79%!陌讯动态融合算法实战优化
  • 模 板 方 法 模 式
  • 人大金仓数据库逻辑备份与恢复命令
  • PostgreSQL报错“maximum number of prepared transactions reached”原因及高效解决方案解析
  • 百货零售行业数字化蓝图整体规划方案(165页PPT)满分可编辑PPT
  • 构建语义搜索引擎:Weaviate的实践与探索
  • XXL-JOB快速入门
  • cygwin+php教程(swoole扩展+redis扩展)
  • 【完整源码+数据集+部署教程】爬行动物异常检测系统源码和数据集:改进yolo11-GhostDynamicConv
  • 一个php 连sqlserver 目标计算机积极拒绝,无法连接问题的解决
  • 第三节 YOLOv5数据集构成
  • 集成显卡 vs 独立显卡:如何通过设备管理器识别你的GPU?
  • Docker 常用命令介绍
  • 【docker】完整 Dockerfile 示例和构建运行指南
  • 飞浆 paddleocr 识别图片上文字的角度
  • 学习 Android(十四)NDK基础
  • OpenWebUI通过pipeline对接dify的workflow
  • 滑动窗口相关题目
  • VirtualBox 搭建 Linux 虚拟机全流程:Nginx 学习环境前置配置指南
  • ##Anolis OS 8.10 安装oracle19c
  • 广州汽车配件3d打印模型加工厂家-中科米堆CASAIM
  • 【计组】存储系统
  • 3479. 水果成篮 III
  • Tiny-cuda-nn安装指南
  • CVE-2021-1879
  • Linux系统编程——环境变量、命令行参数
  • Dart语言语法与技术重点
  • 数据结构—队列和栈