C语言第三章

c语言第三章总结 C语言程序设计第三章总结 阅读详情

十三.做判断

devc++调整代码大小:工具-编译器选项-显示

1.算时间差

第二章计算时间差考虑到借位的情况,转化成分钟后再取余,如果就用分别减的方法,然后判断有没有出现错位的情况

int hour1,minute1;
int hour2,minute2;
scanf("%d %d",&hour1,&minute1);
scanf("%d %d",&hour2,&minute2);
int ih=hour2-hour1;
int im=minute2-minute1;
if(im<0){
  im=60+im;
  ih--;
}
printf("时间差是%d小时%d分钟",ih,im); 

2.调试

在if(im<0){设置断点,im此时是-40<0,则执行命令,否则直接跳过if

3.if如果

if(条件成立){

…

}

条件成立则执行…否则直接跳过if

十四.判断的条件

1.条件

()里面的是计算两个值之间的关系,叫做关系运算

运算符

意义

==

相等

!=

不相等

>

大于

>=

大于或等于

<

小于

<=

小于或等于

2.关系运算符的结果

两个值的关系符合关系运算符,关系运算符的结果为整数1,否则为整数0

printf("%d\n",5==3);
printf("%d\n",5>3);
printf("%d\n",5<=3);

3.优先级

所有关系运算符的优先级<算数运算符的优先级;但是>赋值运算符的优先级

7>=3+4---7>=7---1

printf("%d\n",7>=3+4); 

int r=a>0; 先a>0,再赋值

4.关系运算符之间的优先级

==和!=优先级<其他,连续关系运算是从左到右

5>3==6>4---1==1---1

6>5>4---1>4---0

a==b==6---1(或0)==6

a==b>0---1(或)>0rr

十五.找零计算器

1.找零计算器原理

找零计算器需要用户做两个操作:输入购买的金额,输入支付的票面,找零计算器做两个动作:计算并打印找零,或告知用户余额不足以购买

计算机程序角度看:程序需要读用户的两个输入,然后计算判断给出结果

//初始化
int price=0;
int bill=0;
//读入金额和票面
printf("请输入金额:");
scanf("%d",&price);
printf("请输入票面:"); 
scanf("%d",&bill);
//计算找零
printf("应该找您%d元",bill-price); 

2.注释

//单行注释,/**/多行注释

//是c99的注释,ansic不支持

3.判断票面够不够

//初始化
int price=0;
int bill=0;
//读入金额和票面
printf("请输入金额:");
scanf("%d",&price);
printf("请输入票面:"); 
scanf("%d",&bill);
//计算找零
if(price<=bill){
  printf("应该找您%d元",bill-price); 
}

4.流程图

流程图设计软件draw.io

5.人机交互案例

const int MINOR=35;
int age=0;
//printf人机交互 
printf("请输入你的年龄:");
scanf("%d",&age);
if(age<MINOR){
  printf("人生才刚刚开始,"); 
} 
printf("珍惜时光"); 

流程图就不画了,太麻烦了

十六.否则的话

1.else否则的话

在你的if后面写

else{

…

}

//初始化
int price=0;
int bill=0;
//读入金额和票面
printf("请输入金额:");
scanf("%d",&price);
printf("请输入票面:"); 
scanf("%d",&bill);
//计算找零
if(price<=bill){
  printf("应该找您%d元",bill-price); 
}
else{
  printf("钱不够");
}

2.比较数的大小

int a,b;
printf("请输入两个整数:");
scanf("%d %d",&a,&b);
int max=0;
if(a>b){
max=a;
}
printf("大的那个是%d\n",max); 

这个代码的问题是a<=b的情况没有考虑

方案1

int a,b;
printf("请输入两个整数:");
scanf("%d %d",&a,&b);
int max=0;
if(a>b){
max=a;
}
if(b>a){
max=b;
} 
printf("大的那个是%d\n",max);

问题:a=b的时候终端是0,我们不需要考虑a=b的情况,else包括a<=b的情况

方案2

int a,b;
printf("请输入两个整数:");
scanf("%d %d",&a,&b);
int max=0;
if(a>b){
max=a;
}
else{
  max=b;
} 
printf("大的那个是%d\n",max); 

方案3

int a,b;
printf("请输入两个整数:");
scanf("%d %d",&a,&b);
int max=b;
if(a>b){
  max=a;
}
printf("大的那个是%d\n",max);

十七.if语句再探

1.if和else不加{}的情况

if和else()后可以不加{},而是下一句成为执行的语句

if(total>amount)
//记得;
total+=amount+10;

2.计算薪水

const double RATE=8.25;
const int STANDARD=40;
double pay=0.0;
int hours;
printf("请输入工作小时数:");
scanf("%d",&hours);
printf("\n");
if (hours>STANDARD)
pay=STANDARD*RATE+(hours-STANDARD)*(RATE*1.5);
else
pay=hours*RATE;
printf("实付工资%f",pay); 

3.判断成绩

const pass=60;
int score;
printf("请输入成绩:");
scanf("%d",&score);
printf("你输入的成绩是%d",score);
if(score>pass)
printf("成绩合格");
else
printf("成绩不合格");
//这个printf就和ifelse没关系了
printf("再见"); 

十八.嵌套的if-else

1.三个整数,输出最大的

int a,b,c;
scanf("%d %d %d",&a,&b,&c);
int max=0;
if(a>b){
  if(a>c){
    max=a;
  } 
}else{
  if(b>c){
    max=b;
  }else{
    max=c;
  } 
}
printf("最大的数是%d",max);

if-else不使用{}的写法

int a,b,c;
scanf("%d %d %d",&a,&b,&c);
int max=0;
if(a>b)
if(a>c)
max=a;
else
max=c;
else
if(b>c)
max=b;
else
max=c;
printf("最大的整数是%d",max); 

这种写法好像只有我自己看得懂,不推荐用这个方法写嵌套

2.嵌套的判断

if的条件满足或者不满足的时候要执行的语句也可以是一条if或if-else语句,这是嵌套的if语句

if(code==READY)
if(count<20)
printf("一切正常\n");
else
printf("继续等待\n");
const int READY=24;
int code=0;
int count=0;
scanf("%d %d",&code,&count);
if(code==READY)
if(count<20)
printf("一切正常\n");
else
printf("继续等待\n"); 

3.else的匹配

在if-else不使用{}的情况下,else总与最近的if匹配,如果是if if else else,里面两个匹配,外边两个匹配

加了{}就和最近的{}的if匹配

const int READY=24;
int code=0;
int count=0;
scanf("%d %d",&code,&count);
if(code==READY){
if(count<20)
printf("一切正常\n");
}else
printf("继续等待\n"); 

4.缩进

缩进格式不能暗示if-else的匹配

5.好习惯

if-else后面习惯用{}

十九.级联的if-else

1.分段函数

f(x)=-1,x<0|0,x=0|2x,x>0

int x;
scanf("%d",&x);
int y=0;
if(x<0)
  y=-1;
else if(x==0)
  y=0;
else
  y=2*x;
printf("%d\n",y);

2.级联if-else

下面的应该是无{}用法

if(exp1)
st1;
else if(exp2)
st2;
else
st3;

我们用有{}的用法

if(exp1){
st1;
}else if{(exp2)
st2;
}else
st3;

二十.多路分支:switch-case语句

1.根据每个值执行

int type=0;
scanf("%d",&type);
if(type==1)
printf("你好");
else if(type==2)
printf("早上好"); 
else if(type==3)
printf("晚上好"); 
else if(type==4)
printf("再见"); 
else
printf("什么啊");

依次执行

2.switch-case

int type=0;
scanf("%d",&type);
switch(type){
      case 1:
  printf("你好");
  break;
    case 2:
  printf("早上好");
  break; 
    case 3:
  printf("晚上好");
  break; 
    case 4:
  printf("再见");
  break; 
  default:
  printf("什么啊"); 
} 

直接找到对应的case,到break后直接结束

3.switch-case格式

switch(控制表达式){

case 常量:

语句

…

case 常量:

语句

…

default:

语句

…

}

控制表达式只能是整数型的结果

常量可以是常数,也可以是常数计算的表达式

注意:用const的一个变量做case后面的常量是c99才能用的

4.switch-case运行规则

简之,从常量和控制表达式符合的case,再往下走,直到遇到第一个break跳过整个switch-case

5.利用switch-case的特性

成绩转换

时间限制

400 ms

内存限制

65536 kB

代码长度限制

8000 B

判题程序

Standard

作者

沈睿(浙江大学)

本题要求编写程序将一个百分制成绩转换为五分制成绩。转换规则:

大于等于90分为A;

小于90且大于等于80为B;

小于80且大于等于70为C;

小于70且大于等于60为D;

小于60为E。

输入格式:

输入在一行中给出1个整数的百分制成绩。

输出格式:

在一行中输出对应的五分制成绩。

输入样例:

90

输出样例:

A

思路:第一想法是级联

int score;
	printf("请输入成绩:\n");
	scanf("%d",&score);
	if(score>=90){
		printf("A");
	}else if(80<=score<90){
		printf("B");
	}else if(70<=score<80){
		printf("C");
	}else if(60<=score<70){
		printf("D");
	}else if(score<60){
		printf("E");
	} 

这种写法不正确,eg:else if(80<=score<90)中,因为<=的优先级大于<,80<=score为真=1.1<90为真=1,在BCD中,无论输入什么score,都会输出B

解决方案:

int score;
    printf("请输入成绩:\n");
    scanf("%d", &score);
     if(score >= 90){
        printf("A");
    }else if(score >= 80){   // 因为前面已经排除了 >=90,所以这里等价于 80<=score<90
        printf("B");
    }else if(score >= 70){
        printf("C");
    }else if(score >= 60){
        printf("D");
    }else{
        printf("E");
    }

第二想法是得到分数的十位数再用switch-case

int grade;
scanf("%d",&grade);
grade/=10;
switch(grade){
  case 10: 
  case 9:
    printf("A\n");
    break;
  case 8:
    printf("B\n");
    break;
  case 7:
    printf("C\n");
    break;
  case 6:
    printf("D\n");
    break;
    default:
    printf("F\n");
    break; 
} 

这段代码不符合单一出口,因为还没有学习字符或字符串数据的处理

也可以根据月份得出单词,以后可以用数组来做

6.分段函数有没有可能用switch-case来做

f(x)=-1,x<0|0,x=0|2x,x>0

我的思路是:要想使用switch-case,就要把这三段范围转换成三个点

int x,y;
scanf("%d",&x);
if(x>0)
x=1;
else if(x==0)
x=2;
else
x=3;
switch(x){ 
  case 1:
    printf("y=%d\n",2*x);
    break;
  case 2:
    printf("y=%d\n",0);
    break;
  case 3:
    printf("y=%d\n",-1);
    break;
} 

可以运行x<0和x=0,但是这种方法有一个bug,前面if-else把x的值覆盖了,以至于y=2*x的值一直是2

ai修改方案,用新变量保存分段标记

int x, y, flag;
scanf("%d", &x);

if(x > 0)
    flag = 1;
else if(x == 0)
    flag = 2;
else
    flag = 3;

switch(flag) {
    case 1:
        y = 2 * x;  // 用原始 x 计算
        break;
    case 2:
        y = 0;
        break;
    case 3:
        y = -1;
        break;
}

printf("y=%d\n", y);
C语言程序设计现代方法第二版,第三章课后编程习题全部答案 小白一只,可能会有错误 3.1 #include &lt;stdio.h&gt; int main (void) { int day, month, year; printf ("Enter a date (mm/dd/yyyy):"); scanf ("%d/%d/%d", &amp;month, &amp;day, &amp;year); printf ("You en... 阅读详情

相关推荐

【C语言】第三章 语句

该文章内容整理自《C程序设计(第四版)》、《高质量C编程指南》、以及网上各大博客 文章目录分类常用语句赋值语句输入输出语句 一个函数包含声明部分和执行部分。执行部分由语句组成,经编译后产生机器指令。声明部分不是语句,不产生机器指令。一个C程序的结构如下: 分类 C语句分为以下5类 (1). 控制语句 条件语句:if(表达式) … else if(表达式) … else … 循环语句: (1). for(表达式1; 表达式2; 表达式3) …。在C99标准中允许表达式1定义变量并赋予初值。推荐在这里给仅在

Flowers_for_Algernon的博客 2万+

【C语言基础】C语言第三章

课前复习: 三种基本的结构及其流程图: 顺序结构:画出x=1,y=2,求输出x+2*y的流程图。 选择结构:输入x,判断x是不是闰年的流程图,x是闰年输出“yes”,x不是闰年输出“no”。 循环结构:输入x,输出所有能整除x的正整数。 第三章 数据类型、运算符与表达式 数据类型: 基本类型(重点):整型,字符型,浮点型(单精度型,双精度型),枚举类型 构造类型(重点):数

又见炊烟 757

【OpenBMC 系列】4.启动流程 使用qume模拟ast2600-evb

1.安装openbmc适配的qume 2.启动bmc 3.使用bmc web

AiFool的博客 4459

c语言第三版第三章作业答案,C语言第三章习题带答案

C语言第三章习题带答案练习3-1答案一、选择题1.在C语言库函数中,可以输出double型变量x值的函数是( D )。A.getchar B.scanf C.putchar D.printf2.执行语句:printf("The program\'s name is c:\\tools\book.txt");后输出是( D )。A.The program's name is c:tool...

weixin_26720271的博客 1448

PS/2鼠标接口协议

一、PS/2鼠标接口        PS/2接口用于许多现代的鼠标和键盘,由IBM最初开发和使用。物理上的PS/2接口有两种类型的连接器:5脚的DIN和6脚的MINI-DIN。        二、鼠标的接口协议原理             PS/2鼠标接口采用一种双向同步串行协议。即每在时钟线上发一个脉冲,就在数据线上发送一位数据。但是在相互传输中 ,主机是拥有总线控制权的

Ant's home 1万+

使用QGIS配准无人机航片

随着无人机在各个行业的普及,无人机航片成为很多应用系统空间数据的重要来源。无人机航片具有成像快、分辨率高、针对性强的优点,广泛用于保险定损、灾情应急监测、设施巡检、农作物面积调查等方面。 然而,由于种种原因,通过无人机拍摄的照片拼接得到的正射航片与其他地理空间数据叠加时经常出现较明显的偏差,需要进行配准以校正其空间位置,因此,本文将使用QGIS的配准工具演示无人机正射航片配准的过程。 01数据情况 本文选用的示范数据为2020年7月中左右无人机拍摄的河北省某地系列照片,经过拼接得到CG...

QGISClass的博客 5249

c语言第三章课后作业答案,C语言第三章习题带答案

C语言第三章习题带答案练习3-1答案一、选择题1.在C语言库函数中,可以输出double型变量x值的函数是( D )。A.getchar B.scanf C.putchar D.printf2.执行语句:printf("The program\'s name is c:\\tools\book.txt");后输出是( D )。A.The program's name is c:tool...

weixin_36143191的博客 1595

FPGA,关于安装使用libero IDE V9.2 及其gold floating license配置

3、license安装根据,下面的提示进行,跟随setting up the license server on a host教程操作。1、从官网下载Libero IDE v9.2(如下图中的Libero IDE v9.2 software)4、下载完成license解压包后还需要下载 Daemons license ,地址如下。(2)第一行并不是在内填写,而是直接用您电脑名替换掉(1)修改license.bat前四行是,其务必保持和案例位置相同(避免出错)............

JasonK的博客 4298

C语言程序设计现代方法习题第三章

第一题 #include <stdio.h> #include) int main() { int m, d, y; printf(“Enter a data(mm/dd/yy):”); scanf("%d/%d/%d", &m, &d, &y); printf(“You entered the data %d%.2d%.2d\n”, y, m, d); sys...

weixin_45231450的博客 395

Windows-Anaconda3+TensorFlow安装教程

测试环境:win10-64位和win7-64位 (系统必须是64位,因为TensorFlow目前只支持64位) 一、安装Anaconda3 1.下载Anaconda3 Anaconda官网链接:link 这里我们选择Windows版本,python3.6-version-64位,如下图所示。 2.下载完成之后,点击安装Anaconda3 注意:安装过程中要选择添加环境变量,如图 待安装完成...

DoctorCuiLab的博客 3086

【干货】SAP特殊库存:Q库存(项目库存)全解析,搞懂ETO模式的核心!

在 SAP 系统中,

我小时候很黑的博客 910

明解C语言代码练习——第三章

明解C语言第三章代码练习

qq_44791751的博客 252

11、硬件工程师笔试面试——IGBT(2025版本)

IGBT的应用展望与创新趋势表明,随着电子技术的不断发展,IGBT在各个领域都有广泛的应用,如高压电力系统、交通工具、电锅炉、太阳能和风能发电系统等。FS型IGBT(场终止型绝缘栅双极晶体管)在电力传输领域的应用中,通过其独特的设计和特性,有助于确保系统的稳定性和安全性。每种器件都有其独特的优势,能够满足电力传输系统中不同的技术要求。FS型IGBT通常具有正温度系数,这意味着随着温度的升高,导通压降的主要影响因素是载流子迁移率的降低以及集电极和发射极的接触电阻的增加,有助于在高温下维持稳定的性能。

XU157303764的博客 2672

c语言第三章作业题答案,c语言第三章简单练习题及答案.doc

c语言第三章简单练习题及答案c语言第三章简单练习题及答案一、选择题1. C语言提供的合法的数据类型关键字是。Double shortinteger Char2. 在C语言中,合法的长整型常数是。0L 4962710 0.054838742.1869e103. 若有说明和语句:int a=5;a++;此处表达式a++的值是。6 44. C语言中最简单的数据类型包括。整型、实型、逻辑型整型、实型、...

weixin_39627697的博客 945

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

c语言第三版第三章作业答案,c语言程序设计第三章答案

c语言程序设计第三章答案 第三章 习题答案 一、选择题 (带**号的题选作) 1) 以下叙述中正确的是( ) A) C语言的基本组成单位是语句 B) C程序中的每一行只能写一条语句 C) 简单C语句必须以分号结束 D)C语句必须在一行内完成 2)下列叙述中错误的是A)计算机不能直接执行用C语言编写的源程序B)C程序经C编译程序编译后,生成后缀为.obj的文件是一个二进制文件C) 后缀为.obj的文...

weixin_29543187的博客 725

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

C语言程序设计现代方法第二版 第三章答案

1: #include<stdio.h> int main(void) { int x,y,z; printf("Enter a date (mm/dd/yyyy):"); scanf("%d/%d/%d",&x,&y,&z); printf("You entered the date %d%.2d%d\n",z,x,y); ...

qq_29445129的博客 820

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

C语言第三章作业

m0_61961897的博客 1024

PTA C语言程序设计 第三章

1.在 scanf 中,float 和 double 的占位符是严格区分的,必须正确使用 %f 和 %lf,否则可能导致读取错误。2.在 printf 中,%f 对 float 和 double 都适用,但为了代码可读性,推荐对 double 使用 %lf。

2401_88724790的博客 1188

明解C语言 入门 课后习题练习答案 第三章

自己做的答案,仅供参考,有问题欢迎指出交流!

帅廷的博客 3192

[TCPL]C语言程序设计第二版课后习题--第三章

部分答案参考了网络上的答案和官方题解。代码在上面。

starstarstars的博客 1339

C语言程序设计第三章计算,c语言程序设计第三章答案..doc

c语言程序设计第三章答案.第三章 习题答案????一、选择题 (带**号的题选作)1) 以下叙述中正确的是( )A) C语言的基本组成单位是语句B) C程序中的每一行只能写一条语句C) 简单C语句必须以分号结束D)C语句必须在一行内完成2)下列叙述中错误的是????A)计算机不能直接执行用C语言编写的源程序????B)C程序经C编译程序编译后,生成后缀为.obj的文件是一个二进制文件????C) ...

weixin_42378973的博客 329

《明解C语言》笔记及课后习题答案 【第三章】

练习3-1/*---输入两个整数,判断后者是否为前者的约数---*/ #include &lt;stdio.h&gt; int main(void) { int a,b; puts("请输入两个整数。"); printf("整数a:"); scanf("%d",&amp;a); printf("整数b:"); scanf("%d",&amp;b);

VividColors的博客 5006

c语言第三章课后作业答案,《C语言程序设计现代方法 第2版》 第三章课后习题答案...

前言本人在通过《C语言程序设计:现代方法(第2版)》系统学习C语言时,发现国内并没有该书完整的课后习题答案,所以就想把自己在学习过程中所做出的答案分享出来,以供大家参考。因为并没有权威的答案来源,所以可能会存在错误的地方,还望大家帮助指出。第三章编程题答案3.1[highlight lanaguage="C"]#includeint main(void){int day, month, year;...

weixin_36450434的博客 568

《啊哈,C语言》 第三章课后习题练习记录

第一节 一起来找茬 我的解答: 第一题 我的解答: #include <stdio.h> #include <stdlib.h> int main() { while(1>0) printf("你好"); return 0; } 第二节 一起来找茬 我的解答: 第一题 我i的解答: #include <stdio.h> #include <stdlib.h> int main() { in

qq_52652441的博客 885

翁恺C语言PAT第三章练习题

本文记录本人初学C语言时所做过的练习题以及本人的作答

m0_73781803的博客 817
上一篇: C语言练习题
下一篇: C语言第四章
Olive_Embedded
博客等级 码龄98天 0粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值