c++第六章作业
C语言程序设计 第六章 函数 试题及答案
B)形参可以是常量、变量或表达式
C)实参可以是任意类型
D)实参应与其对应的形参类型一致
参考答案:B
6.8以下正确的说法是。
A)定义函数时,形参的类型说明可以放在函数体内
B)return后面的值不能为表达式
C)如果函数的类型与返回值类型不一致,以函数类型为准
D)如果形参与实参的类型不一致,以实参类型为准
A)float型B)int型C)long型D)double型
参考答案:B
6.12 C语言规定,函数返回值的类型是由所决定。
A)return语句中的表达式类型
B)调用该函数时的主调函数类型
C)调用该函数是系统临时指定
D)在定义该函数时所指定的函数类型
参考答案:D
*6.13下面函数调用语句含有实参的个数为。
if(m!=-1) n=m;
}
printf("\nn=%d",n);
}
【1】A)k*10 B)k%10 C)k/10 D)k*10%10
【2】A)a2*10 B)a2 C)a2/10 D)a2%10
参考答案:【1】C【2】A
6.18以下是有关汉诺塔问题的程序段,若在main函数中有调用语句hanoi(3,'A','B','C');则符合程序段运行结果的选项是。
A-->C A-->C B-->C B-->C
A-->B A-->B A-->C A-->C
参考答案:C
6.19若用数组名作为函数调用的实参,传递给形参的是。
A)数组的首地址B)数组第一个元素的值
C)数组中全部元素的值D)数组元素的个数
数据结构(c语言)第6章二叉树课练答案(含完整实验程序刘玉保留
第6章树和二叉树自测卷解答姓名班级一、下面是有关二叉树的叙述,请判断正误(每小题1分,共10分)(√)1. 若二叉树用二叉链表作存贮结构,则在n个结点的二叉树链表中只有n—1个非空指针域。
(×)2.二叉树中每个结点的两棵子树的高度差等于1。
(√)3.二叉树中每个结点的两棵子树是有序的。
(×)4.二叉树中每个结点有两棵非空子树或有两棵空子树。
(×)5.二叉树中每个结点的关键字值大于其左非空子树(若存在的话)所有结点的关键字值,且小于其右非空子树(若存在的话)所有结点的关键字值。
(应当是二叉排序树的特点)(×)6.二叉树中所有结点个数是2k-1-1,其中k是树的深度。
(应2i-1)(×)7.二叉树中所有结点,如果不存在非空左子树,则不存在非空右子树。
(×)8.对于一棵非空二叉树,它的根结点作为第一层,则它的第i层上最多能有2i—1个结点。
(应2i-1)(√)9.用二叉链表法(link-rlink)存储包含n个结点的二叉树,结点的2n个指针区域中有n+1个为空指针。
(正确。
用二叉链表存储包含n个结点的二叉树,结点共有2n个链域。
由于二叉树中,除根结点外,每一个结点有且仅有一个双亲,所以只有n-1个结点的链域存放指向非空子女结点的指针,还有n+1个空指针。
)即有后继链接的指针仅n-1个。
(√)10. 〖01年计算机系研题〗具有12个结点的完全二叉树有5个度为2的结点。
最快方法:用叶子数=[n/2]=6,再求n2=n0-1=5二、填空(每空1分,共15分)1.由3个结点所构成的二叉树有5种形态。
2. 【计算机研2000】一棵深度为6的满二叉树有n1+n2=0+ n2= n0-1=31 个分支结点和26-1 =32个叶子。
注:满二叉树没有度为1的结点,所以分支结点数就是二度结点数。
3.一棵具有257个结点的完全二叉树,它的深度为9。
(注:用⎣ log2(n) ⎦+1= ⎣ 8.xx ⎦+1=94.【全国专升本统考题】设一棵完全二叉树有700个结点,则共有350个叶子结点。
C语言第六章复习题(含答案)
1.t为int类型,进入下面的循环之前,t的值为0while( t=l ){ ……}则以下叙述中正确的是( B )(A) 循环控制表达式的值为0 (B) 循环控制表达式的值为1(C) 循环控制表达式不合法(D) 以上说法都不对2.有以下程序main( ){ int i,s=0;for(i=1;i<10;i+=2) s+=i+1;printf(“%d\n”,s);}程序执行后的输出结果是( D )。
(A) 自然数1~9的累加和 (B) 自然数1~10的累加和(C) 自然数1~9中的奇数之和(D) 自然数1~10中的偶数之和3.以下程序段的输出结果是( C )。
int x=3;do{ printf("%3d",x-=2); }while(!(- -x));(A)1 (B)30 (C)1 -2 (D)死循环4.以下程序中,while循环的循环次数是( D)。
main(){ int i=0;while(i<10){ if(i<1) continue;if(i==5) break;i++;}......}(A) 1 (B) 10(C) 6 (D) 死循环,不能确定次数5.下面程序的输出是( B )。
(A)741 (B)852 (C)963 (D)main(){int y=9;for(;y>0;y--){if(y%3==0){printf("%d",--y);continue;}}}6.若i,j已定义为int类型,则以下程序段中内循环体的总的执行次数是( A )。
for (i=5;i;i--)for(j=0;j<4;j++){...}(A)20 (B)25 (C)24 (D)307.执行语句: for(i=l;i++<4;;);后,变量i的值是(C)。
(A) 3 (B) 4 (C) 5 (D) 不定8.假定a和b为int型变量,则执行以下语句后b的值为( D )。
大学C语言程序设计 第六章
2.函数表达式: 2.函数表达式: 函数表达式
功能:将函数作为表达式的一部分。 功能:将函数作为表达式的一部分。 如: c=2*max(a,b); 要点:要求函数带回一个确定的值,以参加表达式的运算。 要点:要求函数带回一个确定的值,以参加表达式的运算。
3.一个函数作为另一个函数的参数: 3.一个函数作为另一个函数的参数: 一个函数作为另一个函数的参数
若不需要函数带回任何值,可使用: 若不需要函数带回任何值,可使用:
void printstar(){ …} } void print_message(){…} print_message(){ }
例exp6_5:函数返回值的类型与其定义的 exp6_5:函数返回值的类型与其定义的 类型不符的情况。 类型不符的情况。
一函数的定义重点二函数的调用重点1函数的一般调用2函数的嵌套调用3函数的递归调用三数组作为函数的参数难点四局部变量与全局变量难点五变量的存储类别难点六内部函数与外部函数1概述2函数定义的方法重点3函数的参数难点4函数的返回值难点1c程序的基本结构回顾2什么是函数
第六章
[教学要求] 教学要求]
函
数
1.理解函数的功能。 理解函数的功能。 2.掌握函数定义的一般形式(重点)。 掌握函数定义的一般形式(重点)。 掌握函数的形参与实参的对应关系、 3.掌握函数的形参与实参的对应关系、参数传递方法及函数返回值 的概念(难点) 的概念(难点) 。 掌握函数调用的基本方法(重点) 4.掌握函数调用的基本方法(重点) 。 掌握函数嵌套调用的一般过程(重点) 5.掌握函数嵌套调用的一般过程(重点) 。 了解函数递归调用的几种形式。 6.了解函数递归调用的几种形式。 掌握数组名作为函数的参数的一些特点(难点) 7.掌握数组名作为函数的参数的一些特点(难点) 。 8.掌握局部变量与全局变量的概念及它们的使用特点(难点) 。 掌握局部变量与全局变量的概念及它们的使用特点(难点) 掌握动态存储变量与静态存储变量的含义,会正确识别和使用。 9.掌握动态存储变量与静态存储变量的含义,会正确识别和使用。 10.了解内部函数与外部函数的含义。 10.了解内部函数与外部函数的含义。
C语言实验报告第6章答案
6.2基础实验一、程序分析分析以下程序段完成的功能,填写在序号后的空白处,并运行验证结果。
1. ⊙以下程序的运行结果是:_______s=12345↙____________________。
#include <stdio.h>int main( ){ inta[]={1,2,3,4,5},i,j=1,s=0;for(i=4;i>=0;i--){ s=s+a[i]*j;j=j*10;}printf(“ s= %d \n” , s );return 0;}2. 以下程序的运行结果是:_____7 5 3______________________。
#include<stdio.h>int main( ){ int k ;int a[3][3]={9,8,7,6,5,4,3,2,1};for(k=0;k<3;k++)printf(“%d ”,a[k][2-k]);return 0;}3. 以下程序的功能是:____查找最大值元素及下标_________________。
#include <stdio.h>int main( ){ int i, j ,x =0 ,y = 0 , m ;int a[3][3] = { 1, -2 , 0 , 4 , -5 , 6 , 2 , 4 };m = a [0][0] ;for (i=0 ;i < 3 ;i++)for (j = 0 ; j<3 ; j++ )if ( a[ i] [ j ] >m ){ m = a[ i ][ j ] ;x = i ;y = j ;}printf(“ ( % d , % d ) = % d \n”, x , y,m );return 0;} 运行结果:___(1 , 2 ) = 6↙_________________4. 以下程序的的运行结果是:__8,I am student!___________________。
C语言 第六章 数组
6
6.1 排序问题
3. 初始化
类型名 数组名[数组长度]={初值表}; 初值表中依次放着数组元素的初值。例如: int a[10]={1,2,3,4,5,6,7,8,9,10}; 静态存储的数组如果没有初始化,系统自动给所有的数组元素赋0。 即 static int b[5]; 等价于 static int b[5]={0,0,0,0,0}; 初始化也可以只针对部分元素,如 static int b[5]={1,2,3}; 只对数组b的前3个元素赋初值,其余元素的初值为0。又如 int f[20]={0,1}; 对数组f的前两个元素赋初值,其余元素的值 不确定。
18
6.2 矩阵中最大值的位置
4. 使用二维数组编程
例7:定义一个3*2的二维数组a,数组元素的值由下式给 出,按矩阵的形式输出a。a[i][j]=i+j(0≤i ≤2, 0≤j ≤1), 见文件p131ex7-6.cpp
i
j
第1次 第2次 第3次 第4次 第5次
第6次
0 0 1 1 2
2
0 1 0 1 0
9
6.1 排序问题
4. 使用一维数组编程
例4:输入一个正整数n(1<n≤10), 再输入n个整数,将它们存入 数组a中。 ① 输出最小值和它所对应的下标。 ② 将最小值与第一个数交换,输 出交换后的n个数。 数组的长度在定义时必须确定, 如果无法确定需要处理的数据 数量,至少也要估计其上限, 并将该上限值作为数组长度。 因为n ≤10,数组长度就取上 限10。此外,如果用变量 index记录最小值对应的下标, 则最小值就是a[index]。 见p124ex7-4.cpp
8
6.1 排序问题
4. 使用一维数组编程
C语言程序设计第六章数组习题及答案
1.以下对一维整型数组a的定义,正确的是_。
(2分)A.int a(10) ;B.int n = 10 , a[n] ;C.int n ;scanf( "%d" , &n ) ;int a[n] ;D.int a[10] ;2.若有定义:int a[10] ;,则对a数组元素的正确引用是_。
(2分)A.a[10]B.a[3.5]C.a(5)D.a[10-10]3.对定义int a[10] = {6 , 7 , 8 , 9 , 10} ; 的正确理解是_。
(2分)A.将5个初值依次赋给a[1]--a[5]B.将5个初值依次赋给a[0]--a[4]C.将5个初值依次赋给a[6]--a[10]D.因为数组长度与初值个数不相同,所以此语句不正确4..若有定义:int a[3][4]; , 则对a数组元素的正确引用是_。
(2分)A.a[3][4]B.a[1,3]C.a[1+1][0]D.a(2)(1)5.以下对二维数组a初始化正确的语句是_。
(2分)A.int a[2][ ]={{0 , 1 , 2}, {3 , 4 , 5}};B.int a[ ][3]={{0, 1, 2}, {3, 4, 5}};C.int a[2][4]={{0, 1 , 2}, {3 , 4}, {5}};D.int a[ ][3]={{0, 1, 2}, { }, {3, 4}};6.对二维数组a进行如下初始化:int a[ ][3]={0 , 1 , 2 , 3 , 4 , 5};则a[1][1]的值是_。
(2分)A.0B.3C.4D.17.下面程序段的运行结果是_。
(2分)#include<stdio.h>int main( ){int i , x[3][3] = {1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9} ;for( i = 0 ; i < 3 ; i++ )printf( "%2d" , x[i][2-i] ) ;return 0 ;}A.1 5 9B.1 4 7C.3 5 7D.3 6 98.以下对数组s的初始化,错误的是_。
课后题答案-C语言程序设计(第2版)
《C语言程序设计能力教程(第二版)》课后作业及实训题参考答案第1章进入C语言程序世界二、1. I love China!printf("we are students.\n")2. 6项目实训题参考答案1.编写一个C程序,输出以下信息:* * * * * * * * * * * * * * * * * * * *I am a student!* * * * * * * * * * * * * * * * * * * *main(){ printf("********************\n");printf(" I am a student!\n ");printf("********************\n");}2.已知立方体的长、宽、高分别是10cm、20cm、15cm,编写程序,求立方体体积。
解:main(){int a,b,c,v;a=10;b=20;c=15;v=a*b*c;printf("v=%d",v);}本程序运行结果为:v=3000第2章编制C程序的基础知识一选择题C B A B A C C二操作题,2,-8,23.000000,2.500000,-8.0000002. ABC DEFGHwhy is 21+35 equal 523.3 14 32 31 24. aa bb cc abcA N项目实训题1.定义一个符号常量M为5和一个变量n值为2,把它们的乘积输出。
#define M 5main(){ int n,c;n=2; c=M*n;printf("%d\n",c); }2.编程求下面算术表达式的值。
(1)x+a%3*(int)(x+y)%2/4,设x=2.5,a=7,y=4.7;(2)(float)(a+b)/2+(int)x%(int)y,设a=2,b=3,x=3.5,y=2.5。
第六章作业(答案)-(3)
一、单项选择题1.下列决策哪些不属于短期决策(D)A.生产决策B.追加订货决策C.定价决策D.设备更新改造2.以下项目中不属于短期经营决策的是(D)A.在生产多种产品品种的情况下,如何实现产品的最优组合B.在自制零部件需要投入一定专属固定成本的情况下,对自制和外购方案进行选优C.寻找最佳的产品定价D.对联产品进一步加工所需要的新设备作出是否投资的决策3.下列决策那些不属于长期决策(D)A.扩建厂房B.更新设备C.新产品试制D.定价4.影响决策的因素不能肯定,且出现这种可能结果的概率也无法确切预计,这类型决策成为(B)A.确定型决策B.非确定型决策C.风险型决策D.定价决策5.按决策者所掌握的信息特点不同来分类,决策不包括(C)A.确定性决策B.风险性决策C.互斥方案决策D.不确定性决策6.某工厂经过一定工序加工后的半成品可立即出售,也可继续加工后再出售。
若立即出售可获利5 000元,继续加工后再出售可获利6 510元,则继续加工方案的机会成本为(B)A.1 510元 B.5 000元C.6 510元D.11 510元7.下列成本中属于决策无关成本的是(B)A.机会成本B.联合成本C.可分成本D.差别成本8.当企业生产能力有剩余时,不同产量的差别成本应主要考虑(B)A.总成本B.变动成本C.付现成本D.固定成本9.当企业的生产能力有剩余时,增加生产量会使得企业利润增加或亏损减少的条件是(B)A.增量的销售单价高于单位边际成本B.增量的销售单价高于单位产品成本C.增量的销售单价高于基础生产量的销售单价D.增量的销售单价高于每单位产品固定成本分摊数10.用统一设备生产甲产品还是乙产品的选择是通过比较甲、乙两种产品的________来进行的。
(A)A.边际贡献B.单价C.变动成本D.销售量11.对亏损的B产品是否停产,应根据下面方法来决策(C)A.看B产品亏损数是否能由盈利产品来弥补,如能弥补,继续生产B.B产品亏损数如能由盈利产品来弥补,也应停止生产C.B产品的边际贡献如为正数,不应停止生产D.B产品的边际贡献如为正数,应停止生产12.生产能力无法转移时,亏损产品满足________条件时,应当停产。
C语言程序设计:第6章函数课件教案
C语⾔程序设计:第6章函数课件教案C语⾔程序设计课件教案第六章函数教学⽬的掌握函数的定义、函数的声明、函数的调⽤、函数的设计原则,能够灵活的去定义和调⽤函数。
教学要求1.掌握函数的定义、声明、调⽤掌握常量的概念与使⽤2.熟练掌握函数的设计原则3.熟练掌握函数形参的异常判断、函数返回值的使⽤重点和难点1.函数定义和使⽤2.形参的异常判断、函数返回值的使⽤教学⽀撑环境与教学资源:1.笔记本电脑2.VC20103.投影仪教学⽅法讲授法、练习法、讨论法授课课时6课时教学过程⼀、课程引⼊什么是模块化?模块化有哪些特点?我们C语⾔中是否可以实现模块化编程?函数是完成⼀个个特定任务的语句集合,它能完成你所想要的某种特定任务,当你要⽤时,只需要调⽤它即可,在后续的修改或是维护过程中,只需要针对这⼀个进⾏修改即可。
作⽤1:减少程序的代码量作⽤2:代码复⽤作⽤3:使程序具有良好的结构⼆、函数的定义函数的定义:包括两个部分,分别是“函数头”和“函数体”。
返回值数据类型函数名(数据类型形参1,数据类型形参2,....)//函数头{//函数体(可以有多条语句)}[注意1]:函数的返回值和参数可以是任意类型,包括空类型!!当函数⽆返回值或⽆形参列表时,建议⽤void指明[注意2]:函数名是⼀种标识符,必须符合标识符的命名规则!单词⾸字母不⼤写,从第⼆个单词起⾸字母⼤写。
[注意3]:函数的参数可以没有,也可以有多个参数(本章最后讲解)【思考】如果源⽂件只有如上说是的代码可以运⾏吗?同学们⾃⼰尝试⼀下![注意4]:⼀个项⽬中必须要有⼀个主函数,没有主函数,程序找不到执⾏的⼊⼝,代码⽆法运⾏。
[注意5]:函数头要有头注释(功能,参数,返回值),函数定义不可以嵌套。
【思考】现在在上⾯代码的基础上添加好主函数,试试可以运⾏吗?[注意6]:函数如果不被调⽤,就不会执⾏。
三、函数的调⽤语法 : 函数名(实际参数1,实参2,...)#includevoid printStar(void){printf("****");return ;}int main(void){printStar();//调⽤函数printStarreturn 0;}[注意1]:如果是A函数调⽤B函数,则A函数叫主调函数,B叫被调⽤函数在这个代码⽰例中,main函数就可以称为主调函数,prinfStar函数就可以称为被调函数。
第6章 C语言和汇编语言混合编程(C55x DSP)
第6章 C语言和汇编语言混合编程
2. 编译模式 使用C编译器,在进入汇编程序时,C55x的CPL(编译模 式位)自动被置1,相对寻址模式使用堆栈指针SP。如果在汇 编程序中需要使用相对直接寻址模式访问数据存储器,则必 须改成数据页DP直接寻址模式,这可以通过清CPL位实现。 在返回C调用程序前,CPL位必须重新置1。
序清单输入到这些文件当中,保存并将其添加到工程之中。
第6章 C语言和汇编语言混合编程
3. 编译链接工程和装载输出文件 编译链接工程,修改错误,直到无错误信息提示为止, 再装载输出文件。 4. 打开CPU寄存器视窗 在主菜单中选择View→Registers→CPU Registers命令, 打开CPU寄存器视窗,观察CPU寄存器的变化情况。
int s4; s4=sum(); s1=mac1(x,a,n); //*ar0=x[0],*ar1=a[0],t0=n,return is stored in t0
s2=mac2(x,a,n);
//*ar0=x[0],*ar1=a[0],t0=n,return is stored in ac0
第6章 C语言和汇编语言混合编程
“ _ ”。以下是C函数调用汇编子程序的例子。
第6章 C语言和汇编语言混合编程
//C源程序: extern int sum(int *); //参考一个汇编函数 int x[4]={0x1223,0x345,0x2345,0x3444}; //定义全局变量并初始化
int s;
void main() {
参数类型和寄存器安排顺序表。
第6章 C语言和汇编语言混合编程
表6-1 参数类型和寄存器安排顺序表
第6章 C语言和汇编语言混合编程
C语言程序设计教程 第6章
模块设计的原则
模块独立
规模适当
层次分明
2017/8/21
功能专一
12
独立性原则表现在模块完成独立的功能 , 和其它模块间的关系简单 , 各模块可以单独调 试。修改某一模块 , 不会造成整个程序的混乱。
每个模块有特定功能
每个模块完成一个相对独立的特定子功能。在对任务逐步 分解时,要注意对问题的综合。例如, 一些模块的相似的 子任务,可以把它们综合起来考虑,找出它们的共性,把它 们做成一个完成特定任务的单独模块。
返回值
另外请注意这样的判断,如写成‘ 最好只使用局部变量,这样将方便调试。 如果不需返回则可 调用函数时输入参数的格式要与之相同 return 0; A‟<capital<„Z‟是不行 注意不要与已有库函数重名 的 2017/8/21
24
“函数”的主要知识点
函数的定义 函数的参数和返回值 函数的调用 嵌套和递归 变量的作用域
2017/8/21
18
例6.2 设计算法:找出a,b两数中的较大者,并输出
分析: 这个问题分三个步骤: • 输入两个数; • 找出其中的大数; • 输出大数。
2017/8/21
19
开始
输入a,b
0 a<b 非0 交换a,b 输出a
结束
2017/8/21
图6.3 找出a,b两数中的较大者算法流程图
2017/8/21
34
函数返回值
函数返回值通过return语句获得 函数返回值的类型就是函数的类型 return y; 将变量y的值返回给调用者 return y+3; 将表达式的值返回给调用者
2017/8/21 35
return 的数据类型与函数的类型矛盾时,自动 将数据转换成函数的类型
C语言题库第6章指针
第六章指针一、单项选择1.若已定义char s[10];则在下面表达式中不表示s[1]的地址是()。
A.&s[1]B.&s[0]+1C.s+1D.s++2.下面程序段的运行结果是()。
char a[ ]=”language” , *p ;p=a ;while (*p!='u') { printf(“%c”,*p-32); p++ ; }nguagengUAGENGUAGENG3.下面能正确进行字符串赋值操作的是( )A.char s[5]={'A','B','C','D','E'};B.char s[5]={"ABCDE"};C.char *s ; s="ABCDE" ;D.char *s; scanf("%s",s) ;4.设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下能正确执行并得到有意义的结果的赋值语句是( )。
A.p2=c;B.c=*p1+*p2;C.p1=p2;D.c=*p1*(*p2);5.已有函数max(a,b),为了让函数指针变量p指向函数max,正确的赋值方法是( )。
A.*p=max(a,b);B.*p=max;C.p=max;D.p=max(a,b);6.以下正确的叙述是( )。
A.C语言允许main函数带形参,且形参个数和形参名均可由用户指定B.当main函数带有形参时,传给形参的值只能从命令行中得到C.若有说明: int main(int argc,char **argv),则argc的值必须大于1D.C语言允许main函数带形参,形参名只能是argc和argv7.若有定义:int (*p)[4];则标识符p( )。
A.是一个指针数组名B.定义不合法C.是一个指向整型变量的指针D.是一个指针,它指向一个含有四个整型元素的一维数组8.设有程序段:char s[ ]="china"; char *p ; p=s ;则下面叙述正确的是()。
C语言作业题(第5至6章)-20111008
【1】下面程序用“顺序查找法”查找数组a中是否存在某一关键字。请填空。
#include <stdio.h>
voidmain( )
{ int a[9]= {25,57,48,37,12,92,86,33},i,x;
scanf (″%d″,&x);
; i=0;
while(a[i]! =x)i++;
printf(″%d\n″,n);
}
【6】下面程序的功能是从三个红球、五个白球、六个黑球中任意取出八个球,且其中必须有白球,输出所有可能的方案。请填空。
#include<stdio.h>
void main()
{ int i,j,k;
printf(″\n hong bai hei \n″);
for (i=1;i<=3;i++)
{ int m=0,n=0;
char c;
while (([1]!='\n’))
{ if(c>='A’&&c<='Z’) m++;
if(c>=பைடு நூலகம்a’&&c<='z’) n++;
}
printf ("%d\n",m<n ?[2]);
}
[1]A) c=getchar() B)putchar()C) c=getch()D)scanf("%c",c)
for (; m++)
{ x=m/100;
y=;
z=m%10;
if (x*100+y*10+z==x*x*x+y*y*y+z*z*z)
河南理工大学C语言课后习题答案精解第六章
a[1][1] a[1][2] a[1][3] 1 0 -1
a[2][1] a[2][2] a[2][3] 2 1 0
a[3][1] a[3][2] a[3][3]
0 1 2
0 1
0
第六章 数组
2. 写出程序的运行结果
(4) 程序四:
#include <stdio.h> main( ) { int i, s; i的ASCII码为105 char s1[100], s2[100]; printf(“input string1:\n”); n的ASCII码为110 gets(s1); printf(“input string2:\n”); gets(s2); s=-5 i=0; while((s1[i]==s2[i]) && (s1[i]!=„\0‟)) i++; if((s1[i] ==„\0‟) && (s2[i]==„\0‟)) s=0; 输入数据: aid else s=s1[i]-s2[i]; printf(“%d\n”,s); and }
B.a[a[4]]
C. a[a[3]]
D. a[a[5]]
第六章 数组
1. 选择题 (6) 要求定义包含8个int类型元素的一维数组,以下错误的定义 语句是 A A. int N=8; B. #define N 3 int a[N]; int a[2*N+2]; C. int a[ ]={0,1,2,3,4,5,6,7} D. int a[1+7]={0}
第六章 数组
3. 程序填空 (3)把一个整数转换成 #include <stdio.h> #define M 80 void main() { long int n=1234567; char s[M]; int j=0; while ( n!=0 ) { s[j]= n%10+’0’; n/=10; j++; } s[j]='\0' ; printf("\n%s",s); }
《C语言程序设计》第6章习题答案
1、选择题(1)A(2)C(3)A(4)B(5)B(6)D(7)D(8)B(9)D(10)B2、填空题(1)a=10,b=20a=20,b=10(2)**pp=603、程序设计题(1)#include<stdio.h>char *month_name(int n);void main(){int n;printf("\nPlease enter 1 integer:");scanf("%d",&n);printf("%d month :%s\n",n,month_name(n));}char *month_name(int n){static char*name[]={"illegal month","Jan","Feb","Mar","Apr","May","Jun","July","Aug","Sept","Oct","Nov","Dec"};return ((n<1||n>12)?name[0]:name[n]);}(2)#include<stdio.h>#define N 10sort(int data[]){int i,j,min_a,temp;for(i=0;i<N;i++){min_a=i;for(j=i+1;j<N;j++)if(*(data+j)<*(data+min_a))min_a=j;if(min_a!=i){temp=*(data+min_a);*(data+min_a)=*(data+i);*(data+i)=temp;}}}main(){int i,j,data[N],temp;int min_a;printf("\nPlease input %d int:\n",N);for(i=0;i<N;i++)scanf("%d",&data[i]);sort(data);printf("After sorted:\n");for(i=0;i<N;i++)printf(" %d",data[i]);}(3)#include <stdlib.h>void reverse(char *c);void main(){char str[80];puts("Please enter 1 string\n");gets(str);reverse(str) ;puts("After reversed\n");puts(str);}void reverse(char *c){char *p,*q,temp;int size=0;for(p=c;*p!='\0';p++)size++;size=size/2;for(q=c,p--;q<c+size;q++,p--){temp=*q;*q=*p;*p=temp;}}(4)#include<stdio.h>#include<string.h>void sort(char *keyword[],int size);void print(char *keyword[],int size)void main(){char *keyword[]={"if","else","case","switch","do","whlie","for","break","continue"};sort(keyword,9);print(keyword,9);}void sort(char *keyword[],int size){int i,j,min_location;char *temp;for(i=0;i<size-1;i++){min_location=i;for(j=i+1;j<size;j++)if(strcmp(keyword[min_location],keyword[j])>0) min_location=j;if(min_location!=i){temp=keyword[i];keyword[i]=keyword[min_location];keyword[min_location]=temp;}}}void print(char *keyword[],int size){int i;for(i=0;i<size;i++)printf("\n%s",*(keyword+i));}(5)#include<stdio.h>void fun_char(char str1[],char str2[],char str3[]);void main(){char str1[80],str2[80],str3[80],c,i;printf("\nPlease enter 2 string:");scanf("%s%s",str1,str2);fun_char(str1,str2,str3);printf("Third string is %s.",str3);}void fun_char(char *str1,char *str2,char *str3){int i,j,k,flag;i=0,k=0;while(*(str1+i)!='\0'){j=0;flag=1;while(*(str2+j)!='\0'&&flag==1){if(*(str2+j)==*(str1+i)) flag=0;j++;}if(flag){*(str3+k)=*(str1+i); k++;}i++;}*(str3+k)='\0';}(6)#include<stdio.h>int count_word(char *str);void main(){char str1[80],c,res;puts("\nPlease enter a string:");gets(str1);printf("There are %d words in this sentence",count_word(str1)); }int count_word(char *str){int count ,flag;char *p;count=0;flag=0;p=str;while(*p!='\0'){if(*p==' ')flag=0;else if(flag==0){flag=1;count++;}p++;}return count;}(7)#include<stdio.h>#include<string.h>char *encrypt(char *string);char *decrypt(char *string);main(){char item[80];char *point;char *pEncrypted;char *pDecrype;printf("Please enter the string need to encrypt:\n");gets(item);point=item;pEncrypted=encrypt(point);printf("\nThe string after encrypted is:\n%s\n",pEncrypted); pDecrype=decrypt(pEncrypted);printf("\nThe string after decrypted is:\n%s\n",pDecrype);free(pEncrypted);free(pDecrype);}char *encrypt(char *string){char *q,*t;q=(char *)malloc(sizeof(char)*80);if(!q){printf("No place to malloc!");return 0;}t=q;while(*string!='\0'){*q=*string-2;string++;q++;}*q='\0';return t;}char *decrypt(char *string){char *q,*t;q=(char *)malloc(sizeof(char)*80); if(!q){printf("No place to malloc!");return 0;}t=q;while(*string!='\0'){*q=*string+2;string++;q++;}*q='\0';return t;}。
C语言程序设计第6章 练习题
一、单项选择题题目1在下面的函数声明语句中存在着语法错误的就是( )。
a、AA(int, int)b、AA(int a; int b)c、AA(int a, int)d、AA(int a, int b)题目2如果一个函数定义仅允许为所在的程序文件调用,则应在该函数定义的最前面添加的关键字为( )。
a、externb、staticc、defaultd、auto题目3假定一个函数定义为“extern char* f1(char*x){return x;}”,表示该函数作用域的关键字为( )。
a、externb、charc、intd、char*题目4假定一个函数的原型语句为“int ff(int* x);”,一个整型数组为a[10],则下面函数调用表达式不正确的就是( )。
a、ff(a)b、ff(a[0])c、ff(&a[0])d、ff(a+3)题目5假定一个函数原型语句为“int f1(int a[],int n);”,与数组参数等价的表示为( )。
a、int** ab、int& ac、int* ad、int a题目6假定一个函数的参数说明为const int a,则在函数体中不能进行的操作就是( )。
a、a==0b、a=10c、printf("%d",a)d、intx=a题目7在函数体中定义的变量具有( )。
a、文件作用域b、局部作用域c、函数作用域d、全局作用域题目8在函数外定义的变量,若带有作用域关键字static,则它具有( )。
a、全局作用域b、文件作用域c、函数作用域d、局部作用域题目9在函数体中定义一个静态变量时,选用的存储属性关键字为( )。
a、staticb、registerc、externd、auto题目10假定一个函数原型为“void ff(int a[],int n)”,则对应的函数指针类型为( )。
a、*ff(int[],int)b、void(*ff)(int*a,int)c、void*ff(int*a,int)d、int (*ff)(int*a,int)二、判断题题目11函数定义格式中的参数表被称为实参表。
c第6章 任务
第6章任务
6.3 目视检查
目视检查中的问题
1. 目视检查相当的专注。长时间的工作枯燥无味, 觉醒水平会降低; 2. 觉醒水平低或者缺乏动力导致不能发现潜在的问 题或无法有效识别缺陷; 3. 潜在的无事心理影响会使效果更糟; 4. 目视检查极易受人为因素影响; 5. 通常趁着两项检查工作中间稍事休息来恢复心理 和生理状态;
体力工作的特点
• 体力工作必须要求有良好的力量和技能,还必须要良好的运动控制和 准确的实施。 • 体力工作特点:
1. 2. 3. 4. 5. 6. 与身高、体重、体型密切关系; 人性化、 与运用体力的方法、方式有关; 标准化 实际工作中尽量减少体力工作的负荷; 工具设备、工作场所的设计满足人体测量学的要求; 体力工作要发挥团队精神,团结的力量大; 体力工作在飞机维修中一般是技能性工作任务。
• 身体就是一系列在某些点相连的能够做出各种动作的物理连接(骨 骼),肌肉提供有精细的或粗略的运动的驱动力。 • 随着年龄的增长,肌肉骨骼系统会变得僵硬,肌肉会变得无力,工作 中人就会容易受伤,难以恢复。
第6章任务
6.1体力工作
航空维修中的体力工作
1. 飞机设计考虑飞机维修时的“人为因素”,确保飞机能 适应大多数的维修人员的生理机能特征,使飞机维修工 作方便可行,维修区域更易于接近,工作位置更加舒适 安全,方便工作者能使出足够的力气来松开或者紧固零 部件;
–佩戴眼镜 –行业%%
航空维修中的目视检查
• 目视检查:判断飞机系统以及部件是否老化或者有无缺陷 的基本方法。 • 维修人员靠视觉观察被检查物件,还必须对现象进行判断, 必须接受培训,提高判断能力; • 目视检查要求维修人员能够发现缺陷并判断缺陷的类型和 严重程度。 • 维修人员要广泛接收“适航指令、服务通告、服务信函” 等文件信息,还要有警觉性: “蓝冰”
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第六章
6-1 数组A[10][5][15]一共有多少个元素?
解:10×5×15 = 750 个元素
6-2在数组a[20]中第一个元素和最后一个元素是哪一个?
解:第一个元素是a[0],最后一个元素是a[19]。
6-3 用一条语句定义一个有五个元素的int型数组,并依次赋予1~5的初值。
解:源程序:int IntegerArray[5] = { 1,2,3,4,5 };或:int IntegerArray[] = { 1,2,3,4,5 };
6-4 已知有一个数组名叫oneArray,用一条语句求出其元素的个数。
解:源程序:nArrayLength = sizeof(oneArray) / sizeof(oneArray[0]);
6-5 用一条语句定义一个有5×3个元素的二维int型数组,并依次赋予1~15的初值。
解:源程序:int theArray[5][3] = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 };或:int theArray[5][3] = { {1,2,3},{4,5,6},{7,8,9},{10,11,12},{13,14,15} };
6-6 运算符*和&的作用是什么?
解:*称为指针运算符,是一个一元操作符,表示指针所指向的对象的值;&称为取地址运算符,也是一个一元操作符,是用来得到一个对象的地址。
6-7 什么叫做指针?指针中储存的地址和这个地址中的值有何区别?
解:指针是一种数据类型,具有指针类型的变量称为指针变量。
指针变量存放的是另外一个对象的地址,这个地址中的值就是另一个对象的内容。
6-8 定义一个整型指针,用new语句为其分配包含10个整型元素的地址空间。
解:源程序:int *pInteger = new int[10];
6-9 在字符串”Hello,world!”中结束符是什么?
解:是NULL字符。
6-10 声明一个有5个元素的整型数组,在程序中提示用户输入元素值,最后再在屏幕上显示出来。
6-11 引用和指针有何区别?何时只能使用指针而不能使用引用?
解:引用是一个别名,不能为NULL值,不能被重新分配;指针是一个存放地址的变量。
当需要对变量重新赋以另外的地址或赋值为NULL时只能使用指针。
6-12 声明下列指针:float类型变量的指针pFloat,char类型的指针pstr和struct Customer型的指针pcus。
6-13 给定float类型的指针fp,写出显示fp所指向的值的输出流语句。
解:cout << "Value == " << *fp;
6-14 程序中定义一个double类型变量的指针。
分别显示指针占了多少字节和指针所指的变量占了多少字节。
解:double *counter;
cout << "\nSize of pointer == "sizeof(counter);
cout << '\nSize of addressed value == "<<sizeof(*counter);
6-15 const int * p1 和int * const p2的区别是什么?
解:const int * p1 声明了一个指向整型常量的指针p1,因此不能通过指针p1来改变它所指向的整型值;int * const p2声明了一个指针型常量,用于存放整型变量的地址,这个指针一旦初始化后,就不能被重新赋值了。
6-16 声明一个int型变量a,一个int型指针p,一个引用r,通过p把a的值改为10,通过r把a的值改为5
解:void main()
{int a; int *p = &a; int &r = a; *p = 10; r = 5}
6-17 下列程序有何问题,请仔细体会使用指针时应避免出现这个的问题。
#include
<iostream.h>
int main()
{int *p; *pInt = 9; cout << "The value at p: " << *p; return 0; }
解:指针p没有初始化,也就是没有指向某个确定的内存单元,它指向内存中的一个随机地址,给这个随机地址赋值是非常危险的。
6-18 下列程序有何问题,请改正;仔细体会使用指针时应避免出现的这个问题。
#include <iostream.h>
int Fn1();
int main()
{int a = Fn1();cout << "the value of a is: " << a; return 0; }
int Fn1()
{int * p = new int (5); return *p; }
解:此程序中给*p分配的内存没有被释放掉。
改正:#include <iostream.h>
int* Fn1();
int main()
{int *a = Fn1();cout << "the value of a is: " << *a; delete a; return 0; }
int* Fn1()
{int * p = new int (5); return p;
}
6-19 声明一个参数为int型,返回值为long型的函数指针;声明类A的一个成员函数指针,其参数为int型,返回值long型。
解:long (* p_fn1)(int);
long ( A::*p_fn2)(int);
6-20 实现一个名为SimpleCircle的简单圆类,其数据成员int *itsRadius为一个指向其半径值的指针,设计对数据成员的各种操作,给出这个类的完整实现并测试这个类。
6-21 编写一个函数,统计一个英文句子中字母的个数,在主程序中实现输入、输出。
6-22 编写函数void reverse(string &s),用递归算法是字符串s倒序。
6-23 设学生人数N=8,提示用户输入N个人的考试成绩,然后计算出平均成绩,显示出来。
6-24 基于char*设计一个字符串类Mystring ,并且具有构造函数、析构函数、拷贝构造函数,重载运算符+、=、+=、[],尽可能地完善它,使之能满足各种需要。
(运算符重载功能为选做,参见第8章)
6-25 编写一个3×3矩阵转置的函数,在main()函数中输入数据
6-26 编写一个矩阵转置的函数,矩阵的维数在程序中由用户输入。
6-27 定义一个Employee类,其中包括表示姓名、地址、城市和邮编等属性,包括setName()和display()等函数。
display()使用cout语句显示姓名、地址、城市和邮编等属性,函数setName()改变对象的姓名属性,实现并测试这个类。
6-28 分别将例6-10程序和6-16程序中对指针的所有使用都改写为与之等价的引用形式,比较修改前后的程序,体会在哪些情况下使用指针更好,哪些情况下使用引用更好。
6-29 运行下面的程序,观察执行结果,指出该程序是如何通过指针造成安全性隐患的,思考如何避免这种情况的发生。
#include<iostream>
Using namespace std;
Int main()
{
Itn arr[]={1,2,3};
Double*p=reinterpret_cast<double*>(&arr[0]);
*p=5;
Cout<<arr[0]<<””<<arr[1]<<””<<arr[2]<<endl;
Return 0;
}
6-30 static_cast,const_cast和reinterpret_cast各自应在哪些情况下使用?。