第4章选择结构习题答案

合集下载

《C语言程序设计》课后习题答案解析[第四版]谭浩强

《C语言程序设计》课后习题答案解析[第四版]谭浩强

第1章程序设计和C语言11.1什么是计算机程序11.2什么是计算机语言11.3C语言的发展及其特点31.4最简单的C语言程序51.4.1最简单的C语言程序举例61.4.2C语言程序的结构101.5运行C程序的步骤与方法121.6程序设计的任务141-5 #include <stdio.h>int main ( ){ printf ("**************************\n\n"); printf(" Very Good!\n\n");printf ("**************************\n"); return 0;}1-6#include <stdio.h>int main(){int a,b,c,max;printf("please input a,b,c:\n");scanf("%d,%d,%d",&a,&b,&c);max=a;if (max<b)max=b;if (max<c)max=c;printf("The largest number is %d\n",max);return 0;}第2章算法——程序的灵魂162.1什么是算法162.2简单的算法举例172.3算法的特性212.4怎样表示一个算法222.4.1用自然语言表示算法222.4.2用流程图表示算法222.4.3三种基本结构和改进的流程图262.4.4用N S流程图表示算法282.4.5用伪代码表示算法312.4.6用计算机语言表示算法322.5结构化程序设计方法34习题36第章最简单的C程序设计——顺序程序设计37 3.1顺序程序设计举例373.2数据的表现形式及其运算393.2.1常量和变量393.2.2数据类型423.2.3整型数据443.2.4字符型数据473.2.5浮点型数据493.2.6怎样确定常量的类型513.2.7运算符和表达式523.3C语句573.3.1C语句的作用和分类573.3.2最基本的语句——赋值语句593.4数据的输入输出653.4.1输入输出举例653.4.2有关数据输入输出的概念673.4.3用printf函数输出数据683.4.4用scanf函数输入数据753.4.5字符数据的输入输出78习题823-1 #include <stdio.h>#include <math.h>int main(){float p,r,n;r=0.1;n=10;p=pow(1+r,n);printf("p=%f\n",p);return 0;}3-2-1#include <stdio.h>#include <math.h>int main(){float r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5;p=1000;r5=0.0585;r3=0.054;r2=0.0468;r1=0.0414;r0=0.0072;p1=p*((1+r5)*5); // 一次存5年期p2=p*(1+2*r2)*(1+3*r3); // 先存2年期,到期后将本息再存3年期p3=p*(1+3*r3)*(1+2*r2); // 先存3年期,到期后将本息再存2年期p4=p*pow(1+r1,5); // 存1年期,到期后将本息存再存1年期,连续存5次 p5=p*pow(1+r0/4,4*5); // 存活期存款。

数据结构答案第4章

数据结构答案第4章

第 4 章广义线性表——多维数组和广义表2005-07-14第 4 章广义线性表——多维数组和广义表课后习题讲解1. 填空⑴数组通常只有两种运算:()和(),这决定了数组通常采用()结构来实现存储。

【解答】存取,修改,顺序存储【分析】数组是一个具有固定格式和数量的数据集合,在数组上一般不能做插入、删除元素的操作。

除了初始化和销毁之外,在数组中通常只有存取和修改两种操作。

⑵二维数组A中行下标从10到20,列下标从5到10,按行优先存储,每个元素占4个存储单元,A[10][5]的存储地址是1000,则元素A[15][10]的存储地址是()。

【解答】1140【分析】数组A中每行共有6个元素,元素A[15][10]的前面共存储了(15-10)×6+5个元素,每个元素占4个存储单元,所以,其存储地址是1000+140=1140。

⑶设有一个10阶的对称矩阵A采用压缩存储,A[0][0]为第一个元素,其存储地址为d,每个元素占1个存储单元,则元素A[8][5]的存储地址为()。

【解答】d+41【分析】元素A[8][5]的前面共存储了(1+2+…+8)+5=41个元素。

⑷稀疏矩阵一般压缩存储方法有两种,分别是()和()。

【解答】三元组顺序表,十字链表⑸广义表((a), (((b),c)),(d))的长度是(),深度是(),表头是(),表尾是()。

【解答】3,4,(a),((((b),c)),(d))⑹已知广义表LS=(a,(b,c,d),e),用Head和Tail函数取出LS中原子b的运算是()。

【解答】Head(Head(Tail(LS)))2. 选择题⑴二维数组A的每个元素是由6个字符组成的串,行下标的范围从0~8,列下标的范围是从0~9,则存放A至少需要()个字节,A的第8列和第5行共占()个字节,若A按行优先方式存储,元素A[8][5]的起始地址与当A按列优先方式存储时的()元素的起始地址一致。

结构化学第四章习题及答案

结构化学第四章习题及答案

第四章习题一、 选择题1. 下面说法正确的是:---------------------------- ( D )(A) 分子中各类对称元素的完全集合构成分子的对称群(B) 同一种分子必然同属于一个点群,不同种分子必然属于不同的点群(C) 分子中有 Sn 轴,则此分子必然同时存在 Cn 轴和σh 面(D) 镜面σd 一定也是镜面σv2. 下面说法正确的是:---------------------------- ( B )(A) 如构成分子的各类原子均是成双出现的,则此分子必有对称中心(B) 分子中若有C4,又有i ,则必有σ(C) 凡是平面型分子必然属于Cs 群(D) 在任何情况下,2ˆn S =E ˆ3. 如果图形中有对称元素S6,那么该图形中必然包含:---------------------------- ( C )(A) C6, σh (B) C3, σh (C) C3,i (D) C6,i二、 填空题1. I3和I6不是独立的对称元素,因为I3= +I ,I6= +σh 。

2. 对称元素C2与σh 组合,得到__ i __;Cn 次轴与垂直它的C2组合,得到_n 个C2__。

3. 有两个分子,N3B3H6和 C4H4F2,它们都为非极性,且为反磁性,则N3B3H6几何构型_平面六元环__,点群 _。

C4H4F2几何构型_平面,有两个双键_,点群 。

三、 判断题1. 既不存在C n 轴,又不存在σh 时,S n 轴必不存在。

---------------------------- ( × )2. 在任何情况下,2ˆnS =E ˆ 。

---------------------------- ( × ) 3. 分子的对称元素仅7种,即σ ,i 及轴次为1,2,3,4,6的旋转轴和反轴。

---------------------------- ( × )四、 简答题1. 写出六重映轴的全部对称操作。

《混凝土结构与砌体结构》第3版-第4章受弯构件的正截面承载力习题答案

《混凝土结构与砌体结构》第3版-第4章受弯构件的正截面承载力习题答案

第4章 受弯构件的正截面承载力4.1选择题1.( C )作为受弯构件正截面承载力计算的依据。

A .Ⅰa 状态;B. Ⅱa 状态; C. Ⅲa 状态; D. 第Ⅱ阶段; 2.( A )作为受弯构件抗裂计算的依据。

A .Ⅰa 状态;B. Ⅱa 状态; C. Ⅲa 状态; D. 第Ⅱ阶段; 3.( D )作为受弯构件变形和裂缝验算的依据。

A .Ⅰa 状态;B. Ⅱa 状态;C. Ⅲa 状态; D. 第Ⅱ阶段;4.受弯构件正截面承载力计算基本公式的建立是依据哪种破坏形态建立的( B )。

A. 少筋破坏;B 适筋破坏;C 超筋破坏;D 界限破坏;5.下列那个条件不能用来判断适筋破坏与超筋破坏的界限( C )。

A .b ξξ≤;B .0h x b ξ≤;C .'2s a x ≤; D .max ρρ≤6.受弯构件正截面承载力计算中,截面抵抗矩系数s α取值为:( A )。

A .)5.01(ξξ-; B .)5.01(ξξ+;C .ξ5.01-;D .ξ5.01+;7.受弯构件正截面承载力中,对于双筋截面,下面哪个条件可以满足受压钢筋的屈服( C )。

A .0h x b ξ≤;B .0h x b ξ>;C .'2s a x ≥;D .'2s a x <;8.受弯构件正截面承载力中,T 形截面划分为两类截面的依据是( D )。

A. 计算公式建立的基本原理不同;B. 受拉区与受压区截面形状不同;C. 破坏形态不同;D. 混凝土受压区的形状不同;9.提高受弯构件正截面受弯能力最有效的方法是( C )。

A. 提高混凝土强度等级;B. 增加保护层厚度;C. 增加截面高度;D. 增加截面宽度;10.在T 形截面梁的正截面承载力计算中,假定在受压区翼缘计算宽度范围内混凝土的压应力分布是( A )。

A. 均匀分布;B. 按抛物线形分布;C. 按三角形分布;D. 部分均匀,部分不均匀分布;11.混凝土保护层厚度是指( B )。

C语言程序设计第4章 选择结构程序设计-2018

C语言程序设计第4章 选择结构程序设计-2018
(3) x、y和z中有两个为负数。 设x、y、z均为int型变量,则对应表达式为:
(x<0&&y<0&&z>=0)|| (x>=0&&y<0&&z<0)|| (x<0&&y>=0&&z<0)
(2) x和y中至少有一个小于z。
设x、y、z均为int型变量,则对应表达式为: (x<z)||(y<z)
注意
– 可等价于一条语句 – 可以嵌套使用
• 格式
{ <语句序列> { <语句序列> } <语句序列>
}
4.3.2 复合语句
• 【例4-2】迪士尼门票规定65周岁及以上的老 年人,平日票价为280元,高峰日票价为375元。
– 语句1为内嵌语句,只允许是一条语句,可以是简单的语句、复合 语句或者另一个if语句等
• 执行过程
– 先求解表达式
– 如果表达式的值为“真”,则执行语句1
– 否则,如果表达式的值为“假”,则什么都不做
4.3.2 复合语句
• 复合语句
– 用一对大括号将一组语句序列括起来,通常可以出现在允 许单条语句出现的地方
第4章 选择结构程序设计
目录
4.1 门票价格问题 4.2 条件的表示 4.3 单分支结构 4.4 双分支结构 4.5 多分支结构 4.6 综合案例 练习 4
问题
– 如果今天下雨,我就不去植物园 – 鱼与熊掌不可兼得 – 同样一件衣服,京东、天猫、唯品会、
官网、实体店都有售,价格、送货时间、 品质保障、优惠方式等各不同,到底选 择买哪一家的呢 – 复杂决策问题

C程序设计(第五版)-第4章选择结构程序设计课后习题答案

C程序设计(第五版)-第4章选择结构程序设计课后习题答案

C程序设计(第五版)-第4章选择结构程序设计课后习题答案1. 什么是算术运算?什么是关系运算?什么是逻辑运算?【答案解析】算熟运算:算术运算即“四则运算”,是加法、减法、乘法、除法、乘⽅、开⽅等⼏种运算的统称。

其中加减为⼀级运算,乘除为⼆级运算,乘⽅、开⽅为三级运算。

在⼀道算式中,如果有多级运算存在,则应先进⾏⾼级运算,再进⾏低⼀级的运算。

C语⾔中的算熟运算符包括:+、-、*、/、++、--、%等种类。

如果只存在同级运算;则从左⾄右的顺序进⾏;如果算式中有括号,则应先算括号⾥边,再按上述规则进⾏计算。

⽰例:$ (1 + 1)^{2} * 4+5 * 3$解析:1. 先进⾏括号内运算1+1,然后进⾏乘⽅运算得到结果4.2. 接下来与4相乘,得到结果163. 因为乘法优先级⼤于加法,因此先进⾏5*3,得到结果154. 最终相加得到结果31结果:31关系运算:关系的基本运算有两类:⼀类是传统的集合运算(并、差、交等),另⼀类是专门的关系运算(选择、投影、连接、除法、外连接等),⽽在C语⾔中,关系运算通常被认为是⽐较运算,将两个数值进⾏⽐较,判断⽐较结果是否符合给定的条件。

常见的关系运算符包括:<、<=、>、>=、==、!=等种类。

其中,前4种关系运算符(<、<=、>、>= )的优先级别相同,后2种(==、!=)也相同。

⽽前4种⾼于后2种。

例如, >优先于==。

⽽>与<优先级相同。

并且,关系运算符的优先级低于算术运算符,关系运算符的优先级⾼于赋值运算符(=)。

逻辑运算:在逻辑代数中,有与、或、⾮三种基本逻辑运算。

表⽰逻辑运算的⽅法有多种,如语句描述、逻辑代数式、真值表、卡诺图等。

⽽在C语⾔中,逻辑运算通常⽤于使⽤逻辑运算符将关系表达式或其它逻辑量连接起来组成逻辑表达式⽤来测试真假值。

常见的逻辑运算符包括:&&、||、!等种类&&:与是双⽬运算符,要求有两个运算对象,表⽰两个运算对象都成⽴,则结果为真,否则结果为假。

第4章 选择结构

第4章 选择结构

第4章选择结构1、以下选项中,当x为大于1的奇数时,值为0的表达式是A) x%2==0B) x/2C) x%2!=0D) x%2==1参考答案:A【解析】算术运算符的优先级高于关系运算符的优先级,所以当x为大于1的奇数时,A选项的值为假,即0。B选项的值为不定值,但绝对不是0。C选项的值为真,即1。D选项的值为真,即1。2、当变量c的值不为2、4、6时,值为"真"的表达式是A) (c>=2 && c<=6)&&(c%2!=1)B) (c==2)||(c==4)||(c==6)C) (c>=2 && c<=6)&& !(c%2)D) (c>=2 && c<=6) || (c!=3) || (c!=5)参考答案:D【解析】逻辑或表达式中有一个值不为0,结果即为真,逻辑与表达式中只有两个运算对象均非零,结果才为真。所以只有选项D满足要求。3、以下叙述中正确的是A) 在C语言中,逻辑真值和假值分别对应1和0B) 关系运算符两边的运算对象可以是C语言中任意合法的表达式C) 对于浮点变量x和y,表达式:x==y 是非法的,会出编译错误D) 分支结构是根据算术表达式的结果来判断流程走向的参考答案:B【解析】A选项中,在C语言中,逻辑真值对应非0; C选项中,表达式:x==y 是合法的;D选项中,分支结构的流程走向是根据表达式的值,并不仅仅是算数表达式的值。

因此B选项正确。

4、下列关系表达式中,结果为"假"的是A) 3 <= 4B) (3 < 4) == 1C) (3 + 4) > 6D) (3 != 4) > 2参考答案:D【解析】B选项中,关系表达式(3<4)==1即1==1,结果为真; C选项中,(3+4)>6即7>6,结果为真;A选项中,3<=4结果为真。

数据结构 第1-4章选择题(有 答案)

数据结构  第1-4章选择题(有 答案)
存储密度的定义在课本p41表
2."1的末尾,它是小于或等于1的一个实数。
(8)将两个各有n个元素的有序表归并成一个有序表,其最少的比较次数是()。
A.n
B.2n-
1
C.2n
D.n-1
说明:
合并两个有序表的算法见课本算法
2."15和算法
2."1
6。"当两个表中的一个完全排在另一个表的前面时,比较的次数最少,此时只是后面表中的第一个元素与前面表中的元素逐一比较一次,然后就直接将两个表连接起来。
D.除第一个和最后一个元素外,其余每个元素都有一个且仅有一个直接前驱和直接后继。
(11)若指定有n个元素的向量,则建立一个有序单链表的时间复杂性的量级是()。
2A.O
(1)
B.O(n)
C.O(n)
D.O(nlog
2n)说明:
这道题其实有些问题。若题目的意思是,有n个元素,事先我们不知道元素的大小次序,我们依此将这些元素一个个插入单链表中并且使得单链表有序。注意这是单链表,第8章的一些快速排序算法在这里用不上。因为是单链表,每次插入一个元素,只能从表头开始逐一比较,寻找插入的位置。在最坏的情况下,需要比较n(n-1)/2次,时间复杂性为O(n2)。但平均却是O(n)。
A.r-f
B.(n+f-r)%n
C.n+r-f
D.(n+r-f)%n说明:
当用数组表示循环队列时,f、r是数组元素的下脚标。由于是循环的,所以有可能r<f。若r>f,则r-f即为队列的元素个数;当r<意当r>f时,(n+r-f)%n=(r-f)%n=r-f。
(4)链式栈结点为:
说明:
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第四章选择结构习题参考答案:
一、选择题
1-10:A CABD CADD A
11-20:C CBDC ACACB
21-30:D CB B D AC A BA
31-40:DCDCB BAACB
41-50:CDDDA A A D DB
二、填空题
(1) 2 (2) 4,5,99 (3) 10 20 0 (4) 2 1 (5) -4 (6) 3 (7) yes (8) 1
(10) 20,0 (11) 585858 (12) 0
三、编程题
1,
.#include<stdio.h>
void main()
{ int x,y;
scanf(“%d”,&x);
if(x>-1)
{if(x>5) y=2*x+5;
else if(x>2) y=x*(x+2);
else y=2*x;
printf(“y=%d\n”,y);
}
else printf(“输入值范围错误!”) ;
}
2, .
#include<stdio.h>
void main()
{float a,b;
scanf(“%f”,&a);
if(a<2000) b=0;
else if(a<4000) b=a*0.03;
else if(a<5000) b=a*0.04;
else b=a*0.05;
printf(“收入所得税为:”,b);
}
3,题目:输入某年某月某日,判断这一天是这一年的第几天?
方法一:
#include<stdio.h>
void main()
{
int year,month,daily,sum;
printf("请输入年月日:/n");
scanf("%d%d%d",&year,&month,&daily);
switch(month)
{
case 1:{sum=daily;break;}
case 2:{sum=31+daily;break;}
case 3:{sum=31+28+daily;break;}
case 4:{sum=31+28+31+daily;break;}
case 5:{sum=31+28+31+30+daily;break;}
case 6:{sum=31+28+31+30+31+daily;break;}
case 7:{sum=31+28+31+30+31+30+daily;break;}
case 8:{sum=31+28+31+30+31+30+31+daily;break;}
case 9:{sum=31+28+31+30+31+30+31+31+daily;break;}
case 10:{sum=31+28+31+30+31+30+31+31+30+daily;break;}
case 11:{sum=31+28+31+30+31+30+31+31+30+31+daily;break;} case 12:{sum=31+28+31+30+31+30+31+31+30+31+30+daily;break;} default:{printf("你输入的月份不对,请重新输入。

/n");};
}
if((year%400==0||(year%4==0 && year%100!=0) ) &&month>=2) printf("你输入的日子是%d年的第%d天。

/n",year,sum+1);
else
printf("你输入的日子是%d年的第%d天。

/n",year,sum);
}
方法二:
#include<stdio.h>
void main()
{int day,month,year,sum,leap;
printf("/nplease input year,month,day/n");
scanf("%d,%d,%d",&year,&month,&day);
switch(month)/*先计算某月以前月份的总天数*/
{case 1:sum=0;break;
case 2:sum=31;break;
case 3:sum=59;break;
case 4:sum=90;break;
case 5:sum=120;break;
case 6:sum=151;break;
case 7:sum=181;break;
case 8:sum=212;break;
case 9:sum=243;break;
case 10:sum=273;break;
case 11:sum=304;break;
case 12:sum=334;break;
default:printf("data error");break;
}
sum=sum+day; /*再加上某天的天数*/
if(year%400==0||(year%4==0&&year%100!= 0))/*判断是不是闰年*/
leap=1;
else
leap=0;
if(leap==1&&month>2)/*如果是闰年且月份大于2,总天数应该加一天*/
sum=sum+1;
printf("这一天是这一年的第%d 天.",sum);
}。

相关文档
最新文档