C语言第二章

《C语言程序设计》第二章练习与习题答案 【练2-1】 #include<stdio.h> int main(void) { printf("Programming in C is even more fun!\n"); return 0; } 【练2-2】 printf("Programming is fun. And Programming in C is even more fun!\n"); #include<s... 阅读详情

一.变量

1.做计算

printf("12+13=%d",12+13);

2.算找零

printf("100-23=%d",100-23);

3.为什么要引入变量

每次计算时都需要输入数字,繁琐

4.引入change函数

int price=0;
printf("请输入金额(元):");
scanf("%d",&price);
int change=100-price;
printf("找您:%d元\n",change);

5.输出printf和输入scanf在终端进行

6.int price=0解释

定义了一个类型是int名称是price初始值是0的变量

7.变量定义

<变量类型><变量名称>

eg:int price; int amount; int price,amount;

8.变量的名称

标识符,由数字字母下划线组成,数字不能开头,一些关键字不能作为变量名称,eg:int

二.变量的赋值与初始化

1.int price=0;和price=0;的区别

int price=0;定义了一个类型为int名称为price初始值为0的变量

price=0;是一个式子,指把0的值赋给price

2.赋值和数学意义的=区别

数学中:a=b的值a和b的值相等,是关系,静态

计算机中:a=b指把b的值赋给a,是动作,动态

3.初始化

十一2有系统说明

赋值发生在变量定义的时候称为初始化,eg:int price=0;int price是定义变量,=0是赋值

注意:c语言不强调在变量定义时做初始化,但在变量第一次被使用前需要做初始化,eg:int change=100-price;(变量出现在=右边)

4.如果没有初始化

#include <stdio.h>
int main()
{
int i;
int j;
j=i+10;
printf("%d\n",j);
return 0;
}

这里看课讲的是终端显示乱码,但是我用的devc++终端显示10

终端输出奇怪的结果是因为:因为没有对进行第一次参与计算的变量进行初始化,导致变量i和j用的是内存的东西;而输出10的原因可能是内存里面是10

5.变量初始化格式

<变量类型><变量名称>=<初始值>;eg:int price=0;int amount=100;

多变量定义:eg:int price=0,amount=100;

6.表达式

=是赋值运算符,有运算符的式子就叫表达式,eg:price=0;change=100-price;

7.c99和ansic的区别

//c99
int price=0;
printf("请输入金额(元):");
scanf("%d",&price);
int change=100-price;
printf("找您%d元",change);
//ansic
int price=0;
int change=100-price;
printf("请输入金额(元):");
scanf("%d",&price);
int change=100-price;
printf("找您%d元",change);

ansic所有的变量定义都在前列,c99的变量定义可以在程序中间

8.scanf函数

scanf("%d",&price);

要求scanf这个函数读入下一个整数,读到的结果赋值给变量price

三.变量输入scanf

1.如何让程序读入用户输入的数字

int a=0;
int b=0;
scanf("%d %d",&a,&b);
printf("%d %d\n",a,b);

scanf("%d %d",&a,&b);中“”里面的内容是要读取(你要输入)的东西,交给后面的两个变量,格式和终端输入的数字一致,不管printf格式,这是输出后的东西,你需要在输入时做相同的格式

2.eg

scanf("%d %d",&a,&b);
scanf("%d,%d",&a,&b);
scanf("price%d %d",&a,&b);
scanf("%d %d\n",&a,&b);//这里的\n不是换行,而是你要输入\n

四.变量和常量

1.常量

int change=100-price;中100是常量,直接写在程序的称为直接量(literal)

2.定义一个常量:const int AMOUNT=100;(c99)

AMOUNT是金额

const int AMOUNT=100;
int price=0;
printf("请输入金额(元):");
scanf("%d",&price);
int change=AMOUNT-price;
printf("找您:%d元\n",change);

const int AMOUNT=100;定义了一个类型const int名称AMOUNT初始值100的常量,在第一次使用AMOUNT前赋值,是初始化,有两个好处:(1)知道这是金额(2)便于检查

3.const

修饰符,放在int前,给变量加一个不变的属性,表示这个变量一旦初始化就不能修改

4.如果对AMOUNT进行修改

AMOUNT=90;

int price=0;
AMOUNT=90;
printf("请输入金额(元):");

AMOUNT是一个只读的变量不能被赋值

5.如果想修改100怎么办

const int AMOUNT=100;修改为int amount=100;后面加scanf,因为const通常和大写AMOUNT一起

int amount=100;
int price=0;
printf("请输入金额(元):");
scanf("%d",&price);
printf("请输入面值");
scanf("%d",&amount);
int change=amount-price;
printf("找您%d元",change);

终端操作:空格或者回车

6.scanf怎么放多个变量

int a=0;
int b=0;
printf("请输入两个整数:");
scanf("%d %d",&a,&b);
printf("%d+%d=%d\n",a,b,a+b);

scanf""里面两个%d用空格

终端操作:空格或者回车

如果输入了字符串怎么办

输出内存的数字

八.浮点数(整数运算的结果只有整数部分,不然用浮点数)

1.英尺英寸换算米

一个外国人身高5尺7寸,用米表示

printf("身高英尺和英寸:");
int foot;
int inch;
scanf("%d %d",&foot,&inch);
printf("身高是%f米",(foot+inch/12)*0.3048);

但是实际计算结果是(5+7/12)*0.3048=1.7018

2.为什么会出现这个问题

因为c语言在进行整数运算时会去掉小数点(往小的去掉)

printf("%d",12/5);

终端:2

printf("%d"10/3*3);

终端:9

由此看出:c语言在进行整数运算时候,对每个步骤都会去掉小数点

3.解决方案(2个)

(1)10是整数,10.0是浮点数,用10.0代替

printf("%d",10.0/3*3); 

错误原因:%d:格式化占位符,用于输出int整形数据

10.0/3:10.0是浮点数字面量,运算结果是double双精度浮点数

修改:把%d修改为%f:

printf("%f",10.0/3*3); 

4.浮点数

浮点数指带小数点的数值,浮点指小数点乱动

定点数指小数点不动,但在c语言遇不到

5.改进

printf("身高是%f米",((inch+foot/12.0)*0.3048));

printf("身高英尺和英寸:");
int inch;
int foot;
scanf("%d %d",&inch,&foot);
printf("身高是%f米",(inch+foot/12.0)*0.3048); 

浮点数和整数运算时,c语言会把整数换成浮点数,结果也是浮点数,所以写成%f米

这里我感觉很奇怪,printf("%f",(foot+inch/12)*0.3048);c语言在进行整数和浮点数运算时候,c语言会把整数换成浮点数,结果也是浮点数,foot和inch和12是整数,0.3048是浮点数,那结果也是浮点数,用%f,但是结果是整数运算的1.5,把12换成12.0结果是正确的

ai学习结果是inch/12先执行了整数除法,导致精度丢失

(2)double关键字

整数和浮点数运算=浮点数,只需要转换inch或foot成浮点数即可让结果是浮点数

double是双(双精度浮点数),表示浮点数类型

float意思是单(浮点)

printf("身高英尺和英寸:");
double foot;
double inch;
scanf("%lf %lf",&foot,&inch);
printf("身高是%f米",(foot+inch/12.0)*0.3048); 

scanf输入时用lf

6.数据类型

整数

int

printf("%d",…)

scanf("%d",…)

带小数的数

double

printf("%f",…)

scanf("%lf",…)

九.表达式

1.一个表达式是一系列运算符和算子的结合,用来计算一个值

amount=x*(1+0.033)*(1+0.033)*(1+0.033);

total=57;

count=count+1;

value=(min/2)*LastValue;

2.运算符和算子

运算符:进行运算的动作:=+…

算子:参与运算的值:常数、变量、一个方法的返回值

3.计算时间差

计算某小时某分钟到某小时某分钟的时间差

设置四个变量相减,但是由于可能出现借位情况,都换算为分钟后再做取余

int hour1,minute1;
int hour2,minute2;
scanf("%d %d",&hour1,&minute1);
scanf("%d %d",&hour2,&minute2);
int t1=hour1*60+minute1;
int t2=hour2*60+minute2;
int t3=t2-t1;
printf("时间差是%d小时%d分钟",t3/60,t3%60);

十.运算符优先级

1.写一个程序求平均值

int a,b;
scanf("%d %d",&a,&b);
double c=(a+b)/2.0;
printf("%d和%d的平均值=%f\n",a,b,c);

2.运算符优先级表格

单目运算符可以理解为不需要括号的正数和负数

优先级

运算符

运算

结合关系

举例

1

+

单目不变

自右向左

a*+b

1

-

单目取负

自右向左

a*-b

2

*

乘

自左向右

a*b

2

/

除

自左向右

a/b

2

%

取余

自左向右

a%b

3

+

加

自左向右

a+b

3

-

减

自左向右

a-b

4

=

赋值

自右向左

a=b

3.赋值运算符

赋值也是运算,也有结果,a=6的结果是a被赋予的值,也就是6,a=b=6——>a=(b=6)

4.嵌入式运算符

int a=6;
int b;
int c=1+(b+a);

不利于阅读,容易产生错误

5.结合关系

一般自左向右,单目+-和赋值=自右向左

result=a=b=3+c;

result=2;

result=(result=result*2)*6*(result=3+result);

第三行是嵌入式赋值,不要写

十一.交换变量

1.怎么用c语言交换两个变量的值

如果用a=b;b=a;的话,b的值赋给a,a的值就等于b,a的值赋给b,b的值就等于b

2.怎样交换变量

想象两杯水怎么交换?引入一个空杯子

用一个没有赋值的变量作为中介进行

int a=3;
int b=4;
int t;
t=a;
a=b;
b=t;
printf("a=%d,b=%d",a,b);

这里有个疑问,c语言中变量在第一次使用前(变量出现在=右边,不是定义变量),需要对这个变量进行初始化,但是b=t,没有让t进行初始化,编译为什么没有出错

ai学习后了解

赋值(写入)

不需要

t=a;

读取(使用值)

必须

int c=t;

定义变量

不需要(但推荐)

int t;

3.调试

点击需要进行断点的代码行数-生成断点-调试

下一步,光标移至变量可查看当前变量值

无法调试:工具-编译选项-设定编译器配置-debug

工具-编译选项-代码生成/优化-连接器-产生调试信息-yes

环境配置-浏览debug变量-鼠标

十二.复合赋值和递增递减

1.复合赋值

五个算数运算符:+-*/%,和复制号=结合为复合赋值运算符:

+=-=*=/=%=

total+=5;

total=total+5;

两个运算符之间不要有空格;

2.做复合赋值时注意括号

total+=(sum+100)/2;

total=total+(sum+100)/2;

total*=sum+12;

total=total*(sum+12);

total/=12+6;

total=total/(12+6);

3.递增递减运算符

++是递增运算符,--是递减运算符,都是单目运算符(一个算子),这个算子必须是变量,作用是让这个变量加1或减1

count++;

count+=1;

count=count+1;

4.前缀后缀

++(--)变量,前缀形式;变量++(--),后缀形式

a++的值是a+1以前的值,++a的值是加了1以后的值,a的值都加1

(++在前,先+1再使用,++在后,先使用再+1)

int a=10;
printf("a++=%d",a++);
printf("a=%d",a);
printf("++a=%d",++a);
printf("a=%d",a);

5.表达式和运算和表达式的值

表达式

运算

表达式的值

count++

给count加1

count原来的值

++count

给count加1

count+1以后的值

count--

给count减1

count原来的值

--count

给count减1

count-1以后的值

不要组合到表达式,复杂

c语言第二章总结 1 2 3 4 5 6 #include <stdio.h> int main(void) { printf(“HelloWorld!”); return 0; } #include <stdio.h>:stdio.h为系统文件,内部定义了printf()等方法,在程序最开始可以使用include将头文件引入进来 int main(void):在一个C程序中有且仅有一个main()函数,他是程序运行的入口,main函数前面表示的是程序的返回值类型,后面表示的是传入参数,这里传入参数为 阅读详情

相关推荐

严蔚敏版《数据结构》第二章线性表的算法C语言实现

首先,今天是中秋,明天是国庆,在这说声节日快乐啊。 说点题外话,今天出去走了走,看到药店就进去称体重了。尼玛,竟然轻了4斤,本来就是100刚出头,现在倒好,直接掉下100了。我想这可能是因为最近天天熬夜,而且最近学校还规定天天要去早读(直接导致睡眠不足),直到过了英语4级。唉,大一时不能考,不知今年12月能否考过啊。所以说各位还要注意休息啊,记得要早点休息。昨天晚上就11点后就因为写这个代码直到

Mirror 8550

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

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

qq_44791751的博客 341

单细胞 | pySCENIC·转录因子分析(二)

接上一篇,pySCENIC分析完之后就可以进行可视化了,个人认为最重要的有三个图:rss点图,rank图,转录因子表达水平热图,3个图结合着看。3.可视化rank图,可以自己改一下plotRSS_oneSet参数让图更好看一点。4. regulon表达水平热图,转录因子表达水平同理,得到的图类似只是输入不一样。2.可视化点图:寻找cluster特异性转录因子。1.loom文件读入R,提取数据。

生信练习生 4286

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

第二章课后题答案,有问题欢迎指出讨论!

帅廷的博客 2630

【自由谈】城域网IPv6过渡技术——MAP技术(1)

在IPv4向IPv6网络演进的浪潮中,存在着两对主要矛盾的较量,一对是IPv4地址短缺和IPv4业务蓬勃发展之间的矛盾,另一对是IPv6海量的地址空间和IPv6应用的匮乏之间的矛盾。同时两对矛盾又互相制约,IPv4地址共享机制似乎又减缓了IPv6产业链的发展,IPv6产业链的不断发展似乎又在考验着IPv4地址共享机制的部署规模。MAP成为目前兼顾IPv4和IPv6的4voer6场景中最为关注的技术。

韩立金自由谈 3024

MuJoCo 关节角速度记录与可视化,监控机械臂运动状态

1. 手动计算关节速度,其中timestep为仿真步长。2. 使用data.qvel直接取得关节速度。

darcsdn 768

在c语言中a 这条语句的作用,C语言复习第二章

C语言第二章C语言复习(第二章)一、填空1、若采用十进制数的表示形式,则077为( ),0111为( ),0xab为( )。 2、C语言中的标识符只能由3种字符组成,它们是( )、( )和( )。 3、在C语言中,用“\\”开头的字符序列称为转义字符。转义字符“ \\n”的功能是( ),“\\r”是( ),“\\t”是( )。...

weixin_42316319的博客 1355

基于微信小程序的扫码签到系统源码

大等于jdk1.8,大于mysql5.5,idea(eclipse),微信开发者工具。代码注释齐全,没有多余代码,适合学习(毕设),二次开发,包含论文技术相关文档。签到管理:新增签到,点击查看码展示二维码(有时效性)springboot mybatis 小程序。签到管理:查看用户创建的签到,可删除。用户管理:查看注册用户信息,及删除。签到记录:查看用户签到记录:可删除。个人信息:展示个人信息,可修改。统计分析:查看用户,签到数量。签到记录:查看用户签到记录。登录注册(含授权登录)我的签到:查看签到记录。

wfuhui的博客 5224

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

练习2-1/*---显示前者是后者的百分之几---*/ #include &lt;stdio.h&gt; int main(void) { int a,b; puts("请输入两个整数。"); printf("整数x:"); scanf("%d",&amp;a); printf("整数y:"); scanf("%d",&amp;b); printf

VividColors的博客 4079

基于 FastAPI + LangGraph + LLM 大语言模型的通用 Agent 多智能体系统架构设计与开发实战、产业应用

FastAPI是一个现代、快速(高性能)的Python Web框架,专门用于构建API。它由Sebastián Ramírez(@tiangolo)创建,基于Starlette(用于Web部分)和Pydantic(用于数据部分)构建。性能优先:FastAPI是当前最快的Python Web框架之一,性能与NodeJS和Go相当。这得益于其基于Starlette的异步架构,能够充分利用Python 3.6+的async/await特性。开发效率。

AI天才研究院 231

【ComfyUI专栏】ComfyUI 常用工作流下载与分享网址

首先我们来分享第一个网站,Openart 网站,这个网站同时也能提供比较多的其他类型。但是如果希望下载工作流,我们可以访问到如下的这个站点。作为ComfyUI的学习用户来说,我们通常需要借助他山之石来帮助我们快速成长,因此我们需要找到能够分享和下载的网址。,当前网站是综合性网站,在网站中可以下载各种不同的类型,其中工作流只是可以下载的非常小的部分。这个网站也可以浏览不同的工作流,这个工作流的地址和访问如下的站点。

技术与管理的平衡木- 7812

c语言程序设计第二章的答案,C语言程序设计第二章作业参考答案

C语言程序设计第二章作业参考《C语言程序设计》第2章作业布置日期:2017-10-23 截止日期:2017-11-3一、单选题(每小题4分,共100分)1、以下说法中正确的是____。A、C语言程序总是从第一个函数开始执行B、在C语言程序中,要调用的函数必须在main()函数中定义C、C语言程序总是从main()函数开始执行D、C语言程序中的main()函数必须放在程序的开始部分2、若一个void...

weixin_34221654的博客 657

IT:银行类金融科技岗笔试习题集合—四个模块包括【综合知识+EPI+英语+个性测评】持续更新,建议收藏

IT:银行类金融科技岗笔试习题集合—四个模块包括【综合知识+EPI+英语+个性测评】 导读:行测、综合知识、英语和性格测试。综合知识,包括货币学、金融、会计、计算机等内容。  行政能力测试,内容大家可以参考公务员考试,包括逻辑推理、数字推理、图形推理、文字推理。英语测试,包括语法和词汇30题、完型填空20题、10篇阅读理解50题,阅读理解文章特别长,生词特别多。 (1)、英语可以Ctrl+F...

头部AI社区如有邀博主AI主题演讲请私信—心比天高,仗剑走天涯,保持热爱,奔赴向梦想!低调,专注,谦虚,自律,反思,成长,还算比较正能量的博主,公益免费传播…内心特别想在AI界做出一些可以推进历史进程影响力的技术(兴趣使然,有点小情怀,也有点使命感呀 2万+

xab c语言是不合法常量,c语言第二章习题 (1)

第二章 练习题一、填空题1、在C语言中的实型变量分为两种类型,它们是float型和( )型。 2、若有定义:char c='\\010';则变量c中包含的字符个数为( )3、已知字母a的ASCII码为十进制数97,且设ch为整型变量,则表达式ch='a'+'8'-'3'的值为( )4、在C语言中(以16位PC机为例),一个float型数据在内存中所占的字节数为( )个;一个int型数据在内...

weixin_36391252的博客 1799

【零基础入门unity游戏开发——2D篇】SpriteEditor图片编辑器

【零基础入门unity游戏开发——2D篇】SpriteEditor图片编辑器

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 2330

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

PTA C语言程序设计 第二章

pow(x,y) :sqrt(x) :log(x) :log10(x) :sin(x) :cos(x) :tan(x) :ceil(x) :x的最小整数,向上取整 floor(x) :x的最大整数,向下取整round(x) : 取x的四舍五入 trunc(x) : 取x的整数部分(截断小数)fabs(x) :的余数常数:M_PI : π2.71828isnan(x) : 判断浮点数x是否为非数值(Not A Number),x为NAN则返回1。

2401_88724790的博客 1209

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

上交大版C语言程序设计第二章

qq_40445993的博客 552

精雕软件(JDpaint) 5.5 绿色版

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

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

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

在c语言中 下列常数不能作为常量的是,C语言第二章习题

C语言第二章习题1.C语言中的简单数据类型包括( )。A.整型、实型、逻辑型 B.整型、实型、字符型C.整型、字符型、逻辑型 D.整型、实型、逻辑型、字符型2.在C语言中,错误的short类型的常数是( )。A.32768 B.0 C.037 D.0Xaf3.下列常数中不能作为C的常量的是( )。A.0x45 B.2.5e-2 C.3e2 D.05...

weixin_31830691的博客 4300

c语言程序设计第二章的答案,C语言程序设计基础第二章习题答案

高教出版社,刘莉主编,C语言程序设计基础第二章习题答案一、选择题1、B解析:int型数据为整数,不能是小数,其取值范围为-32768~32767,C、D选项超出范围。2、C解析:字符型为‘’内的数据,A、B选项不符合条件,D选项为8进制,不能出现“8”3、A解析:ASCII可以按照整形数据计算,计算后的结果为C的ASCII值+1,级C后的一个字符,即“D”4、C解析:参考教材P255、A解析:进行...

weixin_32567181的博客 725

数字ab写成c语言表达式,c语言第二章习题 (1)

第二章 练习题一、填空题1、在C语言中的实型变量分为两种类型,它们是float型和( )型。 2、若有定义:char c='\\010';则变量c中包含的字符个数为( )3、已知字母a的ASCII码为十进制数97,且设ch为整型变量,则表达式ch='a'+'8'-'3'的值为( )4、在C语言中(以16位PC机为例),一个float型数据在内存中所占的字节数为( )个;一个int型数据在内...

weixin_35143502的博客 2598

c语言第二章

C语言基础数据类型与变量常量总结 C语言主要数据类型包括:短整型(short,2字节)、整型(int,4字节)、长整型(long,4字节)、更长整型(long long,8字节)、单精度浮点型(float,4字节)、双精度浮点型(double,8字节)和字符型(char,1字节)。变量使用时需注意局部变量和全局变量的区别,以及变量命名规则。常量可分为数值型、字符型和字符串型,可通过#define或const定义。sizeof操作符用于计算数据类型或变量所占字节数,示例程序展示了各基本类型的存储大小。特别注意

2501_92057256的博客 401

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

文章目录第一节 P87一起来找茬第一题第三节一起来找茬第一题第一题第五节一起来找茬第一题第六节 P107一起来找茬课后习题 第一节 P87 一起来找茬 我的解答: 第一题 我的解答: #include <stdio.h> #include <stdlib.h> int main () { int a; while(1) { scanf("%d",&a); if (a>0) printf("yes\n"

qq_52652441的博客 1492

C语言程序设计现代方法第一章与第二章总结

第一章介绍了C语言的起源,标准化,优缺点和如何高效使用C语言,本人仅作阅读未作笔记.介绍了C语言各种基本概念。

2403_89472550的博客 216

C语言 第二章课后习题练习

计算序列 1 - 1/2 + 1/3 - 1/4 + …+ 1/99 - 1/100 的和。),即5 × 4 × 3 × 2 × 1。

Argonaut_的博客 513

【C Primer Plus】【课后习题】第二章C语言概述

1.编写一个程序,调用printf( )函数在一行上输出您的名和姓,再调用一次printf( )函数在两个单独的行上输出您的名和姓,然后调用一对printf()函数在一行上输出您的名和姓。 #include int main(void) { printf("Sun Repent \n"); printf("Sun \nRepent \n"); printf("Sun ")

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

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值