语言程序设计教程第四章练习题解析

合集下载

c语言程序设计教程第二版课后答案

c语言程序设计教程第二版课后答案

c语言程序设计教程第二版课后答案【篇一:c语言程序设计(第2版)-- 课后题答案】p> 参考答案第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 is21+35equal 523.34214. aaa项目实训题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。

(1)main(){ int a=7;float x=2.5,y=4.7;printf(%f\n,x+a%3*(int)(x+y)%2/4);}(2)main(){ int a=2,b=3;float x=3.5,y=2.5;printf(%f\n,(float)(a+b)/2+(int)x%(int)y);}第三章顺序结构程序设计一选择题a c d c c二操作题1. x=3,a=2,b=32. z=12.7000002 13 3 2 bb cc abc n3. 1 2 1a2 1 2三.编程题编程题解:#include stdio.hmain(){float sj,gz,yfgz;printf(time,salary:);scanf(%f,%f,sj,gz);yfgz=sj*gz*0.9;printf(total salary:%f\n,yfgz);}本程序运行结果为:time,salary:4,3crtotal salary:10.8000002.编写一个程序求出任意一个输入字符的ascii码解:#include stdio.hmain(){char c;printf(input a string:);scanf(%c,c);printf(%c ascii is %d\n,c,c);}本程序运行结果为:input a string:acra ascii is 973、编写一个程序用于水果店售货员算帐:已知苹果每斤2.50元,鸭梨每斤1.80元,香蕉每斤2元,橘子每斤1.6元,要求输入各类水果的重量,打印出应付3解:main(){float p,y,x,j,ys,g,fk;printf(apple,pear,banana,orange(weight)=);scanf(%f,%f,%f,%f,p,y,x,j);ys=2.5*p+1.8*y+2*x+1.6*j;printf(fu kuan=);scanf(%f,g);fk=g-ys;printf(result:\n);printf(fukuan=%6.2fyuan\nshoukuan=%6.2fyuan\nzhaohui=%6. 2fyuan\n,g,ys,fk);}本程序运行结果为:apple,pear,banana,orange(weight)=1,2,3,4fu kuan=100result:fukuan=100.00yuanshoukuan= 18.50yuanzhaohui= 81.50yuan项目实训1.假设银行定期存款的年利率rate为2.25%,并已知存款期为n 年,存款本金为capital元,试编程计算n年后可得到本利之和deposit。

C语言程序设计-第四章简单计算器小程序-分支程序设计

C语言程序设计-第四章简单计算器小程序-分支程序设计

P1 逻辑运算符 P2

逻辑运算符 P2
课堂练习: 求下面逻辑表达式的值: 2>1 && 4 && 7<3+!0
值为0
等价于((2>1)&&4)&&(7<(3+(!
1 条件运算符和条件表达式 1.2 逻辑运算—逻辑运算的重要规则
a&&b:当a为0时,不管b为何值,结果为0
课堂练习:有下面定义的语句和逻辑表达式: int a=0,b=10,c=0,d=0 a && b && (c=a+10,d=100) 逻辑表达式执行后,a,b,c,d的值各为多少?
任务实现效果演示 例题源代码:switchcalculator.c
相关知识 1. switch语句 2. break语句
1 switch多分支选择结构
❖ 尽管用if…else if结构可以实现多分支,注但意当:分常支量较表多达时式,必程须序是结整构型较、复字杂符。型或枚举类型,不能是 实型表达式,每个case关键字后的常量表达式应互不相同
值为0 等价于i==(k>j),值为1
1 条件运算符和条件表达式 1.2 逻辑运算—逻辑运算符与逻辑表达式
&&(逻辑与)、||(逻辑或)、!(逻辑非)(单目)
逻辑表达式的一般形式:
优先级: 1.由低到高: ||→ && → !; 2.多种运算符一起: = →|| →&& →关系运算符 →算术运算符→ !。
【】 简单计算器小程序:由用户输入运算数和四则运算符(+、-、*、/),输出计算结果。
【】

c语言《程序设计基础》课后习题参考答案与解析

c语言《程序设计基础》课后习题参考答案与解析

c语言《程序设计基础》课后习题参考答案与解析《程序设计基础》习题参考答案与部分解析第1章 C 语言概述一、填空a) C源程序的基本单位是函数。

b) 一个C程序中至少应包括一个 main函数。

c) 在C语言中,输出操作是有库函数 printf( )函数完成。

二、单选题1、A2、C3、B解析:第1题答案:A 。

因为一个C程序总是从main函数开始执行的,而不论main函数在程序中的位置。

且到main函数结束。

第2题答案:C 。

因为 main函数没有限制必须位于程序的最前面。

C程序书写自由,一行内可写几个语句。

在对一个C 程序进行编译的过程中,无法检查注释当中的拼写错误。

不过C语言本身并没有输入输出语句,输入输出是由函数完成的。

第3题答案:B。

因为一个C语言程序是由若干个函数组成的。

但至少包含一个main 函数,且main函数的位置不限。

三、编程题1、编写一个输出“Welcome to C!”信息的小程序。

解:程序如下#include “stdio.h”main( ){1printf(“Welcome to C!”) ;}2、已知三角形的三边长分别为3,4,5,试用海轮公式编程求其面积。

海伦公式为:S?= ,其中s= (a+b+s)/2 ;解:程序如下#include “math.h”#include “stdio.h”main( ){int a , b , c ; /* a ,b,c 3个整型变量表示三角形的3条边。

*/float s ,s1 ; /* s1作为面积变量,s 作为中间变量是都应该是实形*/a=3 ; b= 4; c=5 ;s= (a+b+c)/2.0 ;s1= sqrt(s*(s-a)*(s-b)*(s-c)); /* sqrt函数完成开平方根功能。

*/printf(“area=%f\n”,s1);}2第2章程序设计基础知识一、单选题1、C2、A3、C4、A5、C6、C7、D8、C9、D 10、A 11、D 12、A 13、C 14、C 15、B A 16、B 17 D解析:1. 答案:C。

《C语言程序设计教程》第三版课后习题参考答案

《C语言程序设计教程》第三版课后习题参考答案

《C语言程序设计教程》第三版课后习题参考答案C语言程序设计教程第三版课后习题参考答案第一章:C语言概述1.1 C语言的特点答案:C语言是一种通用的、面向过程的程序设计语言,具有高效、简洁、灵活等特点。

它提供了丰富的程序设计元素和功能,适用于各种不同的应用领域。

1.2 C语言程序的基本结构答案:C语言程序由预处理指令、函数声明、函数定义、变量声明和语句组成。

其中,预处理指令用来引入头文件或定义宏,函数声明用来声明函数的名称和参数,函数定义用来实现函数的功能,变量声明用来声明变量的类型和名称,语句用来表达具体的计算过程。

1.3 C语言的数据类型答案:C语言提供了多种数据类型,包括基本类型(整型、浮点型、字符型等)和派生类型(数组、指针、结构体等)。

每种数据类型在内存中占据一定的存储空间,并具有特定的取值范围和操作规则。

1.4 C语言的运算符和表达式答案:C语言支持各种运算符和表达式,例如算术运算符(+、-、*、/等)、关系运算符(>、<、==等)、逻辑运算符(&&、||、!等)等。

通过运算符和表达式可以进行各种数值计算和逻辑判断。

第二章:基本数据类型与运算2.1 整型数据类型答案:C语言提供了不同长度的整型数据类型,包括有符号整型(int、long等)和无符号整型(unsigned int、unsigned long等)。

整型数据类型可以表示整数值,并具有不同的取值范围。

2.2 浮点型数据类型答案:C语言提供了浮点型数据类型(float、double等),用来表示带小数部分的实数值。

浮点型数据可以表示较大或较小的数值,并具有一定的精度。

2.3 字符型数据类型答案:C语言提供了字符型数据类型(char),用来表示单个字符。

字符型数据可以用于表示各种字符(包括字母、数字、符号等)。

2.4 布尔型数据类型答案:C语言不直接支持布尔型数据类型,但可以使用整型数据类型来表示布尔值(0表示假、非零表示真)。

《C语言程序设计》第4章习题答案

《C语言程序设计》第4章习题答案

1、选择题(1)C(2)D(3)B(4)D(5)C(6)B(7)B(8)C(9)A(10)C(11)C(12)B 2、填空题(1)①int men[10] ;②float step[4]={1.9,-2.33,0,20.6};③_int grid[4][10] ;(2)①int m[10]={9,4,7,49,32,-5};②0 9③scanf("%d",m[1]);④m[0] =39;⑤m[0] =a[3]+a[5];(3)①3 ②5 ③8 ④8 ⑤9 ⑥12 ⑦9(4)①int a[10]={9,4,12,8,2,10,7,5,1,3}; ②0 9 ③8 8(5)103、程序填空题(1)array[20]20&array[i ]20max=array[i];min=array[i];sum+array[i];sum/20(2)-5.77000021(3)ABCDEFGHIJKLEFGHIJKLABFDEFGHIJKLABFDEFGHI4、程序设计题(1)#define SIZE 100#include<stdio.h>void main(){int a[SIZE+1],i,j;for(i=2;i<=100;i++)a[i]=i;for(i=2;i<=100;i++)for(j=i+1;j<=100;j++)if(a[i]!=0&&a[j]%a[i]==0)a[j]=0;printf("\n");j=0;for(i=2;i<=100;i++){if(a[i]!=0){printf("%-4d",a[i]);j++;}if(j==10){j=0;printf("\n");}}}(2)#define S 14#include"stdio.h"void main(){int a[S][S],i,j,n;printf("please enter n:");scanf("%d",&n);for(i=1;i<=n;i++){a[i][i]=1;a[i][1]=1;}for(i=3;i<=n;i++)for(j=2;j<i;j++)a[i][j]=a[i-1][j-1]+a[i-1][j];for(i=1;i<=n;i++){for(j=1;j<=n-i;j++)printf(" ");for(j=1;j<=i;j++)printf(" %3d",a[i][j]);printf("\n");}}(3)#define SIZE 80#include<stdio.h>void main(){char str1[SIZE+SIZE],str2[SIZE];int i,j;puts("Please enter 2 string:");scanf("%s",str1);scanf("%s",str2);i=0;while(str1[i]!='\0')i++;j=0;while(str2[j]!='\0'){str1[i]=str2[j];i++;j++;}str1[i]='\0';printf("%s\n",str1);}(4)#define SIZE 80#include<stdio.h>#include<string.h>void main(){char string[SIZE];int len,i,j,flag;long number;puts("Please enter a digital string:");scanf("%s",string);len=strlen(string);if(string[0]=='-'){flag=-1;i=1;}else{flag=1;i=0;}number=string[i]-'0';for(i++;i<len;i++)number=number*10+(string[i]-'0');number=flag*number;printf("%d\n",number);}(5)#define SIZE 40#include<stdio.h>void main(){int m,n,i,j;float price[SIZE],sum;printf("\nPlease input M and N:");scanf("%d%d",&m,&n);m=m-n;printf("Please input %d price :",n);sum=0;for(i=0;i<n;i++){scanf("%f",&price[i]);sum=sum+price[i];}printf("Aver are %10.2f.",sum/n);while(m>0){for(i=0;i<n-1;i++)price[i]=price[i+1];printf("\nPlease input one price:"); scanf("%f",&price[n-1]);m--;sum=0;for(i=0;i<n;i++){sum=sum+price[i];}printf("Aber are %10.2f",sum/n);}}。

c语言程序设计第四版第四章答案谭浩强

c语言程序设计第四版第四章答案谭浩强

第四章什么是算术运算什么是关系运算什么是逻辑运算解:略。

C语言中如何表示“真”和“假”系统如何判断一个量的“真”和“假”解:设有一个逻辑表达式,若其结果为“真”,则以1表示;若其结果为“假”,则以0表示。

但是判断一个逻辑量的值时,以0代表“真”,以非0代表“假”。

例如3&&5的值为“真”,系统给出3&&5的值为1。

写出下面各逻辑表达式的值。

设a=3,b=4,c=5。

(1) a+b>c&&b==c(2) a||b+c&&b-c(3) !(a>b)&&!c||1(4) !(x=a)&&(y=b)&&0(5) !(a+b)+c-1&&b+c/2解:(1) 0(2) 1(3) 1(4) 0(5) 1有3个整数a、b、c,由键盘输入,输出其中最大的数。

解:方法一#include <>main(){ int a,b,c;printf("请输入3个整数:");scanf("%d,%d,%d",&a,&b,&c);if(a<b)if(b<c) printf("max=%d\n",c);else printf("max=%d\n",b);else if(a<c) printf("max=%d\n",c);else printf("max=%d\n",a);}方法二:使用条件表达式,可以使程序更加简明、清晰。

程序如下:#include <>main(){ int a,b,c,temp,max;printf("请输入3个整数:");scanf("%d,%d,%d",&a,&b,&c);temp=(a>b)a:b; /* 将a和b中的大者存人temp中 */max=(temp>c)temp:c; /* 将a和b中的大者与c比较,取最大者*/printf("3个整数的最大数是%d\n”,max);}有一函数:写一程序,输入x值,输出y值。

C语言程序设计教程第四章练习题解析

C语言程序设计教程第四章练习题解析
4对:在C++中在复合语句中定义变量为合法,但在C语言中就是非法得
12、C语言程序得基本单位就是( )、
A.程序行
B、语句
C、函数
D、字符
答案:C
解析:函数就是C语言程序得基本单位
13、C语言中决定函数返回值得类型得就是()、
A、return语句中得表达式类型
B、调用函数得主调函数类型
C。调用函数时临时
intd=1;
intfun(intp)
{
staticintd=5;
d+=p;
printf("%d ",d);
return d;
}
voidmain()

ﻩint a=3;
ﻩprintf("%d \n",fun(a+fun(d)));

A.699
B、66 9
C、61515
D、6 615
答案:C
解析:首先调用fun(d),将全局变量d=1带入,此时fun()函数内得静态局部变量d得值就是1,d+=p后d得值就是6,输出d得值,返回d得值;
A、当调用时,会调用内部函数
B、当调用时,会调用外部函数
C.当调用时,会调用两次,先调用内部函数再调用外部函数
D、都不调用,会报错
答案:A
解析:当内部函数与外部函数重名时,会优先调用内部函数
6、在C语言中,声明外部函数需要添加得关键字就是()
A、extern
B、static
C、this
D.auto
答案:A

ﻩintd=5;
ﻩd+=p++;
ﻩprintf(”%d”,d);
}

C语言程序设计教程第四章练习题解析

C语言程序设计教程第四章练习题解析

单项选择题一、关于C语言中的函数,以下描述正确的选项是()A.函数的概念能够嵌套,但函数的挪用不能够嵌套B.函数的概念不能够嵌套,但函数的挪用能够嵌套C.函数的概念和函数的嵌套均不能够嵌套D.函数的概念和函数的挪用均不能够嵌套答案:B解析:函数的概念不能够嵌套,但函数的挪用能够嵌套2、概念一个函数:exce((v1, v2), (v3,v4,v5),v6); 在该函数调历时,实参的个数为()个答案:A解析:(v1, v2),(v3,v4,v5)和v6一共三个实参3、关于C语言中print()函数与scanf()函数,以下描述中正确的选项是()()函数能够向任何地址输出数据()只向操纵台输出数据()只能输入英文字母和数字()函数能够识别输入的空格答案:B解析:printf()是向操纵台输出的函数4、在C语言中,内部函数需要添加的关键字是()答案:B解析:在概念内部函数时,需要在函数的返回值类型前面添加static关键字(又称为静态函数)。

五、当调历时,会挪用内部函数A.当调历时,会挪用内部函数B.当调历时,会挪用外部函数C.当调历时,会挪用两次,先挪用内部函数再挪用外部函数D.都不挪用,会报错答案:A解析:当内部函数与外部函数重名时,会优先挪用内部函数六、在C语言中,声明外部函数需要添加的关键字是()答案:A解析:声明外部函数的方式是在函数的返回值类型前面添加extern关键字7、关于C语言中的局部变量,以下描述中错误的选项是()A.局部变量确实是在函数内部声明的变量B.局部变量只在函数内部有效C.局部变量只有当它所在的函数被调历时才会被利用D.局部变量一旦被挪用,其生存周期持续到程序终止答案:D解析:当函数挪用终止时局部变量就会失去作用八、关于C语言中的全局变量,以下描述中正确的选项是()A.全局变量的作用域必然比局部变量的作用域范围大B.静态类别变量的生存周期贯穿于整个程序的运行期间C.函数的形参都属于全局变量D.未在概念语句中赋初值的auto变量和static变量的初值都是随机值答案:B解析:选项1不对:假设是程序中只有一个主函数,那么在整个程序运行中,局部变量都在起作用;选项3不对:除C++的引用类型参数,所有函数的形参都是局部变量;选项4不对:static变量概念时就存储地全局区,初始化为0;九、当全局变量与局部变量重名时,那么在调历时()A.局部变量会被屏蔽B.全局变量会被屏蔽C.都可不能挪用,系统会报错D.会挪用两次,先挪用局部变量,再挪用全局变量答案:B解析:当局部变量与全局变量重名时,全局变量会被屏蔽。

C语言程序设计教程李含光版第4章习题解答

C语言程序设计教程李含光版第4章习题解答
1
{ unsigned int p=0; while(s!=0) { p=p+s%10; s=s/10; } return p; } (2) . #include<stdio.h> #include<stdlib.h> #include<math.h> void f1(float,float,float,float); void f2(float,float,float,float); void f3(float,float,float,float); int main() { float a,b,c,d; scanf("%f %f %f",&a,&b,&c); if(a==0) { printf("不是一元二次方程\n"); exit(0); } d=b*b-4*a*c; if(d>0) f1(a,b,c,d); else if(d==0) f2(a,b,c,d); else f3(a,b,c,d); return 0; } void f1(float a,float b,float c,float d) { float x1,x2; { x1=(-b+sqrt(d))/(2*a); x2=(-b-sqrt(d))/(2*a); printf("%.2f ,%.2f\n",x1,x2); } } void f2(float a,float b,float c,float d)
3
(4) . #include<stdio.h> #define RATE 0.053 double fun(float); void display(float,int); int main() { float dep; int season; scanf("%f %d",&dep,&season); display(dep,season); return 0; } double fun(float d) { return d*RATE; } void display(float d,int s) { int i; printf("季度 利息 余额\n"); printf("-------------------------------\n"); for(i=1;i<=s;i++) { printf("%-4d %-.2f %-.2f\n",i,fun(d),fun(d)*i+d); printf("-------------------------------\n"); } } (5) . #include<stdio.h> double fun(void); int main() { printf("%lf\n",fun()); return 0; } double fun(void) { double s=0; int n=1; while((double)(2*n-1)/((2*n)*(2*n))>1e-4) { s=s+(double)(2*n-1)/((2*n)*(2*n)); n++;

C语言程序设计第四版第四章答案谭浩强.doc

C语言程序设计第四版第四章答案谭浩强.doc
break;
case 3: printf( * *%d,%d,%d "9hundred9ten9indiv);
printf(n\n反序数字为:”);
printf(H%d%d%d\nM,indiv,ten,hundred);
break;
case 2: printf(n%d,%dH,ten,indiv);
解:计算利润时,要特别注意不同利润的不同提成比例。例如,利润为15万元,其中有10万元按10%的比例提成,另外5万元则按7.5%提成。
(1)用if语句编程序。
#include <stdio.h>
main()
{long i;
float bonus,bonl^bon2^bon4^bon6^bonl0;
bonl=100000*0.1;
printf(M\n反序数字为:”);
printf(fl%d%d\nf\indiv,ten);
break;
case 1: printf(n%dn,indiv);
printf(M\n反序数字为:”);
printf(H%d\nM,indiv);
break;
}
}
4.10企业发放的奖金根据利润提成。利润I低于或等于10万元时,奖金可提成10%;利 润高于10万元,低于20万元(100()00vlW200000)时,其中10万元按10%提成,高于10万元的部分,可提成7.5%;200000<1^400000时,其中20万元仍按上述办法提成(下 同),高于20万元的部分按5%提成;400000<1^600000时,高于40万元的部分按3%提 成;600000 <1^1000000时,高于60万的部分按1.5%提成;1>1000000时,超过100万元 的部分按1%提成。从键盘输入当月利润I,求应发放奖金总数。要求:(1)用if语句编程序; ⑵用switch语句编程序。

c语言程序设计第四章习题答案

c语言程序设计第四章习题答案

第四章选择结构1:实现输入一个字符的大小写字母的转换#include<stdio.h>void main(){char x='a';printf("输入x:\n");scanf("%c",&x);if( x>='A' && x<='Z'){x=x+32; /*是大写,转换为小写,至于为什么要+32吗,请看看大小写字母的ASCII码差值*/}elseif( x>='a' && x<='z'){x=x-32; /*是小写,转换为大写*/}/*其它不用理*/printf("%c\n",x);}2:输入一个大写字母实现,输出字母表中的前后字母,但是当时A 或是Z时提示输出的“没有前面的字母”,“没有后面的字母”#include<stdio.h>void main(){char x;printf("输入一个大写字母x:\n");scanf("%c",&x);if (x=='A'){printf("没有前面的字母");}if( x=='Z'){ printf("没有后面的字母");}else// (x>'A'||x<'Z'){printf("%c, %c",x-1,x+1);}}3:实现的是对百分制的评等级#include<stdio.h>void main(){float x;printf("请输入学生的成绩x的值\n");scanf("%f",&x);if(x>=90&&x<=100){printf("等级为A ");}else{if (x>=80&&x>=89){printf("等级为B ");}elseif (x>=70&&x<=79){printf("等级为C ");}elseif (x>=60&&x<=69){printf("等级为D ");}else{printf("等级为E ");}}}4:知道今天的日期,年月日,求出明天的年月日#include <stdio.h>int main(){int year,month,day;int maxdays[]={31,28,31,30,31,30,31,31,30,31,30,31};printf("请输入年月日,中间用空格隔开!\n");scanf("%d %d %d",&year,&month,&day);if(year%400==0 || (year%4==0 && year%100!=0)) maxdays[1]=29;//闰年二月最大值是29if(month>12 || month<1){printf("日期不合法!\n");return 0;}if(day>maxdays[month-1]){printf("日期不合法!\n");return 0;}day++;if(day>maxdays[month-1]){day=1;month++;if(month>12){month=1;year++;}}printf("明天的日期是:%d-%d-%d\n",year,month,day);return 0;}5:输入三角形的三条边的长度,判断能否构成三角形,并且判断三角形的形状。

C语言程序设计教程第四章练习题解析(1)

C语言程序设计教程第四章练习题解析(1)
A.3
B.4
C.5
D.6
答案:A
解析:(v1, v2),(v3,v4,v5)和v6一共三个实参
3、关于C语言中print()函数与scanf()函数,下列描述中正确的是()
A.printf()函数可以向任何地方输出数据
B.printf()只向控制台输出数据
C.scanf()只能输入英文字母和数字
D.scanf()函数可以识别输入的空格
s=2;
else
s=n-fun(n-1);
return s;
}
void main()
{
printf("%ld\n", fun(3));
}
A.1
B.2
C.3
D.4
答案:A
解析:fun()函数传入3时,返回3-fun(2);fun()函数传入2时,返回2。所以fun(3)返回3-2=1。
23、在C语言中,函数的隐含存储类别是()。
12、C语言程序的基本单位是()。
A.程序行
B.语句
C.函数
D.字符
答案:C
解析:函数是C语言程序的基本单位
13、C语言中决定函数返回值的类型的是()。
A.return语句中的表达式类型
B.调用函数的主调函数类型
C.调用函数时临时
D.定义函数时所指定的函数类型
答案:D
解析:函数的返回值取决于定义函数时指定的返回值类型
28、下列程序的输出结果是()。
int b=2;
int func(int *a)
{
b += *a;
return b;
}
void main()
{
int a=2, res=2;

C++程序设计基础课后答案--第四章

C++程序设计基础课后答案--第四章

4.1 阅读下列程序,写出执行结果1.#include <iostream.h>void main(){ int i, conut=0, sum=0 ;float average ;int a[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 } ;for( i=0; i<10; i++ ){ if( a[i] % 2 == 0 ) continue ;sum += a[ i ] ;conut ++ ;}average = sum / conut ;cout << "conut = " << conut << '\t' << "average = " << average << endl ;}2.#include <iostream.h>void main(){ int a[9] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 } ;int *p = a , sum = 0 ;for( ; p<a+9; p++ )if( *p % 2 == 0 ) sum += *p ;cout << "sum = " << sum << endl ;}3.const int n = 5 ;#include <iostream.h>#include <iomanip.h>void main(){ int a[n][n]={ 0 }, i, j, k ;for( k=1 , i=0 ; i<n ; i++ )for( j=i; j>= 0; j-- , k++ )a[j][i - j ] = k ;for( i=0 ; i<n ; i++ ){ for( j=0; j<n ; j++ )cout << setw( 3 ) << a[i][j] ;cout << endl ;}}4.int f(int [],int);#include <iostream.h>void main(){ int a[] = { -1, 3, 5, -7, 9, -11 } ;cout << f( a, 6 ) << endl ;}int f( int a[], int size ){ int i, t=1 ;for( i=0 ; i<size; i ++ )if( a[i]>0 ) t *= a[i] ;return t;}5.int f( int [][3], int, int ) ;#include <iostream.h>void main(){ int a[][3] = { 0, 1, 2, 3, 4, 5, 6, 7, 8 } ;cout << f( a, 3, 3 ) << endl ;}int f( int a[][3], int row, int col ){ int i, j, t=1 ;for( i=0; i<row; i ++ )for( j=0; j<col; j++ ){ a[i][j] ++ ;if( i == j ) t *= a[i][j] ;}return t ;}6.#include<iostream.h>void test1( int *a1 ){ a1 = new int( 5 ) ;cout << "*a1 = " << *a1 << endl ;}void test2(int * & a2){ a2 = new int( 5 ) ;cout << "*a2 = " << *a2 << endl ;}void main(){ int *p = new int( 1 ) ;test1( p ) ;cout << "test1: *p1 = " << *p << endl ;test2( p ) ;cout << "test2: *p2 = " << *p << endl ;}7.#include <iostream.h>void main(){ char s[] = "abccda" ;int i ; char c ;for( i = 1 ; ( c=s[i] ) != '\0'; i ++ ){ switch( c ){ case 'a' : cout << '%' ; continue ;case 'b' : cout << '$' ; break ;case 'c' : cout << '*' ; break ;case 'd' : continue ;}cout << '#' << endl ;}}8.#include <iostream.h>void main(){ char *str[] = { "c++", "basic", "pascal" } ;char **p ;int i ;p = str ;for( i=0 ; i<3 ; i++ )cout << *( p+i ) << endl ;}9.#include <iostream.h>void main(){ char s1[] = "Fortran" , s2[] = "Foxpro" ;char *p , *q ;p = s1 ; q = s2 ;while( *p && *q ){ if ( *p == *q )cout << *p ;p ++ ;q ++ ;}cout << endl ;}10.#include <string.h>#include <iostream.h>void main(){ char str[][10] = { "vb", "pascal", "c++" }, s[10] ;strcpy( s , ( strcmp( str[0] , str[1] ) < 0 str[0] : str[1] ) ) ;if( strcmp( str[2], s ) < 0 ) strcpy( s, str[2] ) ;cout << s << endl ;}4.2 思考题1.数组说明语句要向编译器提供什么信息?写出一维数组、二维数组说明语句的形式。

Java语言程序设计[郑莉]第四章课后习题答案解析

Java语言程序设计[郑莉]第四章课后习题答案解析

Java语言程序设计第四章课后习题答案1.子类将继承父类所有的属性和方法吗?为什么?答:不,子类不能直接访问从父类中继承的私有属性及方法,但可以对公有及保护方法进行访问。

2.方法的覆盖与方法的重载有何不同?答:覆盖是运用在子类中实现与父类相同的功能,但采用不同的算法或公式;在名字相同的方法中,要做比父类更多的事情;在子类中需要取消从父类继承的方法。

3.声明两个带有无参构造方法的两个类A和B,声明A的子类C,并且声明B为C的一个成员,不声明C 的构造方法。

编写测试代码,生成类C的实例对象,并观察结果。

//A类public class A {public A () {System.out.println ("输出A类");}}//B类public class B {public B () {System.out.println ("输出B类");}}//C类public class C extends A {B b = new B ();}//测试类public class test4_3 {public static void main (String args[]) {C c = new C();}}运行结果:4.声明一个基类A,它只有一种非默认构造方法;声明A的子类B,B具有默认方法及非默认方法,并在B的构造方法中调用基类A的构造方法。

//A类public class A {public A (String lin) {System.out.println("A类的非默认构造方法 "+lin);}}//B类public class B extends A{public B () {super ("Fuck your teacher");System.out.println ("B默认类构造方法");}public B (String lin) {super (lin);System.out.println ("B类非构造方法");}}//测试类public class test4_4 {public static void main (String args[]) {new B();System.out.println ();new B("Fuck my teacher");}}运行结果:5.声明一个类,它具有一种方法,此方法被重载三次,派生一个新类,并增加一种新的重载方法,编写测试类验证四种方法对于派生类验证四种方法对于派生类都有效。

自考教材《JAVA语言程序设计(一)》第四章习题解答

自考教材《JAVA语言程序设计(一)》第四章习题解答

4.2 举例说明如何声明、创建和初始化多维数组。
声明二维数组:类型 数组名[ ][ ] 类型[ ][ ]数组名 类型[ ]数组名[ ] 例如: 声明 Sting subStr[ ][ ]; String [ ] [ ] subStr; String[ ] subStr[ ]; 创建 (1)String subStr[ ][ ]=new String[3][5];(直接分配,平衡数组) (2)String subStr[ ][ ]=new String[3][ ];(从最高维开始对每一维分配不等长空间,非 平衡数组) subStr[0]=new String[4];//第 1 个子数组有 4 个元素 subStr[1]=new String[5];//第 2 个子数组有 5 个元素 subStr[2]=new String[2];//第 3 个子数组有 2 个元素 (3)int[ ][ ] x={{5,6,7},{8,9,10,11},{18,19,10,10},{2,98}};//直接赋值创建 初始化:数组创建后,如果没有初始化,则根据类型 java 会自动赋予默认值。一般用循环 语句对其动态初始化,例如,以下循环给三维整型数组 aa 初始化为三角数组。 int a[]=new int[5]; int aaa[][][]=new int [4][3][3]; for (int i=0;i<a.length;i++) { a[i]=i+1; } for (int i=0;i<aaa.length;i++) { for (int j=0;j<aaa[i].length;j++) { for (int k=0;k<aaa[i][j].length;k++) { aaa[i][j][k]=(i+j+1)*(k+1);} } }

c语言程序设计课后习题答案第四章

c语言程序设计课后习题答案第四章

/*习题4 4*/#include<stdio.h>main(){int x1,x2,i,n,x;double item,sum;printf("enter n:\n");scanf("%d",&n);x1=2;x2=1;sum=0;for(i=1;i<=n;i++){item=1.0*x1/x2;sum=sum+item;x=x1+x2;x2=x1;x1=x;}printf("sum=%.2lf\n",sum); }/*练习4-3*/#include<stdio.h>#include<math.h>main(){ int a=-1,t=-2;double eps,s=0,item=1;printf("enter eps:\n");scanf("%lf",&eps);while(fabs(item)>=eps){t=t+3;a=-a;item=a*1.0/t;s=s+item;}printf("s=%lf\n",s);}/*练习4-3*/#include<stdio.h>main(){ int n=-1,bujige=-1;double grade=0,sum=0,ave;printf("enter grade:\n");while(grade>=0){sum=sum+grade;if(grade<60)bujige=bujige+1;n=n+1;scanf("%lf",&grade);}ave=sum/n;printf("ave=%lf\n",ave);printf("bujige=%d\n",bujige);}/*练习4-4*/#include<stdio.h>main(){ int n=-1,bujige=-1;double chengji=0,sum=0,ave;printf("enter n ge zheng zheng shu \n");while(chengji>=0){sum=sum+chengji;n++;if(chengji>=0&&chengji<=60)bujige=bujige+1;scanf("%lf",&chengji);}ave=sum/n;printf("ave=%lf\n",ave);printf("bujige=%d\n",bujige);}/*练习4-7*/#include<stdio.h>main(){ int n,i,j,m;printf("enter zheng zheng shu n:\n");scanf("%d",&n);printf("enter n ge zheng zheng shu:\n");for(i=1;i<=n;i++){scanf("%d",&m);if(m==1)printf("1 bu shi su shu \n");else{ for(j=2;j<=m/2;j++)if(m%j==0)break;if(j>m/2)printf("%d shi su shu\n",m);elseprintf("%d bu shi su shu\n",m);}}}/*练习4-8*/#include<stdio.h>main(){ int n,i,j,jiecheng;double sum=0;printf("enter yi ge zheng zheng shu n:\n");scanf("%d",&n);for(i=1;i<=n;i++){ jiecheng=1;for(j=1;j<=i;j++)jiecheng=jiecheng*j;sum=sum+1.0/jiecheng;}printf("e=%.2lf\n",sum+1);}/*练习4-11*/#include<stdio.h>main(){ int n,mark,i,min;printf("enter yi ge zheng zheng shu n:\n");scanf("%d",&n);printf("enter n ge zheng shu\n");scanf("%d",&mark);min=mark;for(i=1;i<=n-1;i++){ scanf("%d",&mark);if(mark<min)min=mark;}printf("min=%d\n",min);} printf("min=%d",min);}#include<stdio.h>#include<math.h>main(){ int m;printf("enter yi ge zheng shu:\n ");scanf("%d",&m);m=fabs(m);while(m!=0){printf("%d",m%10);m=m/10;}printf("\n");}/*习题4-13*/#include<stdio.h>main(){ int i,j,sum=1;for(i=100;i<=200;i++){for(j=2;j<=i/2;j++)if(i%j==0)break;if(j>i/2){ printf("%6d",i);sum=sum+1;}if(sum>8){ printf("\n");sum=1;}}printf("\n");}/*习题4-14*/#include<stdio.h>main(){int x1=1,x2=1,i,x;printf("%6d%6d",x1,x2);for(i=1;i<=18;i++){x=x1+x2;printf("%6d",x);x1=x2;x2=x;}printf("\n");}/***/#include<stdio.h>main(){ int i,j,k;for(i=1;i<=4;i++){for(j=1;j<=4-i;j++)printf(" ");for(k=1;k<=2*i-1;k++)printf("*");printf("\n");}for(i=1;i<=3;i++){for(j=1;j<=i;j++)printf(" ");for(k=1;k<=7-2*i;k++)printf("*");printf("\n");}}。

解析java程序设计第四章课后答案

解析java程序设计第四章课后答案

第4章习题解答1.类的继承的主要好处是什么?Java中支持类的多继承形式吗?继承是一种由已有的类创建新类的机制。

利用继承,我们可以先创建一个拥有共有属性的一般类,根据该一般类再创建具有特殊属性的新类,新类自动拥有一般类的属性和行为,并根据需要可以增加新的属性和行为,或者改变父类的行为。

类的继承的主要好处是代码复用。

Java不支持类的多继承形式。

2.解释一下方法重载和方法覆盖的概念,并对两者加以对比。

如果子类中定义方法所用的名称、返回类型和参数表和父类中方法所使用的完全一样,但具体实现不同,则称子类方法覆盖了父类中的方法。

在同一类中,如果方法名称相同,但参数表不同,则称为方法重载。

3.编写一个学生和教师的数据输入和显示程序。

学生数据有编号、姓名、班号和成绩,教师数据有编号、姓名、职称和部门。

要求将编号、姓名输入和显示设计成一个类Person,并作为学生类Student和教师类Teacher的父类。

import java.util.*;class Person{private String name;private int id;public void input(){Scanner sc=new Scanner(System.in);name=sc.nextLine();id=sc.nextInt();}public void display(){System.out.println("}}class Student extends Person{private int classNo;private int score;public void input(){super.input();Scanner sc=new Scanner(System.in);classNo=sc.nextInt();score=sc.nextInt();}public void display(){super.display();System.out.println("classNo="+classNo+" score="+score); }public static void main(String[] args){Student s=new Student();s.input();s.display();}}4.创建Animal(动物):Mouse,Dog等的一个继承分级结构。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单选题1、关于C语言中的函数,下列描述正确的是()A.函数的定义可以嵌套,但函数的调用不可以嵌套B.函数的定义不可以嵌套,但函数的调用可以嵌套C.函数的定义和函数的嵌套均不可以嵌套D.函数的定义和函数的调用均不可以嵌套答案:B解析:函数的定义不可以嵌套,但函数的调用可以嵌套2、定义一个函数:exce((v1, v2), (v3,v4,v5),v6); 在该函数调用时,实参的个数为()个答案:A解析:(v1, v2), (v3,v4,v5)和v6一共三个实参3、关于C语言中print()函数与scanf()函数,下列描述中正确的是()()函数可以向任何地方输出数据()只向控制台输出数据()只能输入英文字母和数字()函数可以识别输入的空格答案:B解析:printf()是向控制台输出的函数4、在C语言中,内部函数需要添加的关键字是()答案:B解析:在定义内部函数时,需要在函数的返回值类型前面添加static关键字(又称为静态函数)。

5、当调用时,会调用内部函数A.当调用时,会调用内部函数B.当调用时,会调用外部函数C.当调用时,会调用两次,先调用内部函数再调用外部函数D.都不调用,会报错答案:A解析:当内部函数与外部函数重名时,会优先调用内部函数6、在C语言中,声明外部函数需要添加的关键字是()答案:A解析:声明外部函数的方式是在函数的返回值类型前面添加extern关键字7、关于C语言中的局部变量,下列描述中错误的是()A.局部变量就是在函数内部声明的变量B.局部变量只在函数内部有效C.局部变量只有当它所在的函数被调用时才会被使用D.局部变量一旦被调用,其生存周期持续到程序结束答案:D解析:当函数调用结束时局部变量就会失去作用8、关于C语言中的全局变量,下列描述中正确的是()A.全局变量的作用域一定比局部变量的作用域范围大B.静态类别变量的生存周期贯穿于整个程序的运行期间C.函数的形参都属于全局变量D.未在定义语句中赋初值的auto变量和static变量的初值都是随机值答案:B解析:选项1不对:如果程序中只有一个主函数,则在整个程序运行中,局部变量都在起作用;选项3不对:除了C++的引用类型参数,所有函数的形参都是局部变量;选项4不对:static变量定义时就存储地全局区,初始化为0;9、当全局变量与局部变量重名时,那么在调用时()A.局部变量会被屏蔽B.全局变量会被屏蔽C.都不会调用,系统会报错D.会调用两次,先调用局部变量,再调用全局变量答案:B解析:当局部变量与全局变量重名时,全局变量会被屏蔽。

10、在C语言中,关于变量的作用域,下列描述中错误的是()A.局部变量只在整个函数的运行周期中有效B.全局变量的作用域为整个程序的运行周期C.当全局变量与局部变量重名时,局部变量会屏蔽掉全局变量D.全局变量会覆盖掉所有与它重名的局部变量答案:D解析:当全局变量与局部变量重名时,全局变量会被屏蔽掉11、在C语言中,如果在一个函数的复合语句中定义了一个变量,则该变量()A.只在该复合语句中有效,在该复合语句外无效B.在该函数中任何位置都有效C.在本程序的原文件范围内均有效D.此定义方法错误,其变量为非法变量答案:D解析:1、2与3错:函数复合语句中定义的变量在该复合语句中引用;但如果函数含有该变量,则在函数中可以引用该变量4对:在C++中在复合语句中定义变量为合法,但在C语言中是非法的12、C语言程序的基本单位是()。

A.程序行B.语句C.函数D.字符答案:C解析:函数是C语言程序的基本单位13、C语言中决定函数返回值的类型的是()。

语句中的表达式类型B.调用函数的主调函数类型C.调用函数时临时D.定义函数时所指定的函数类型答案:D解析:函数的返回值取决于定义函数时指定的返回值类型14、若有函数调用语句:fun(a+b, (x,y), fun(n+k,d,(a,b))); 在此函数调用语句中实参的个数是()。

答案:A解析:a+b返回一个值,(x,y)返回一个值,fun(n+k,d,(a,b))返回一个值。

15、x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,正确的输入语句是()。

x,y,z;("%d%d%d",&x,&y,&z);("%d%d%d",x,y,z);("%d%d%d",&x,&y,&z);答案:B解析:读取键盘输入的数据要用scanf()函数,scanf()中的参数要传入变量的地址16、若变量已正确说明为float类型,要通过语句 scanf("%f %f %f",&a,&b,&c); 给a赋予,b赋予,c赋予,不正确的输入形式是()。

22 33; 22; 33答案:B解析:用scanf()读取从键盘输入的数据时,中间不能加逗号,要用空格隔开17、若有定义:int x,y; char a,b,c; 并有以下输入数据(此处\u代表空格):1\u2\uA\uB\uC,那么能给x赋整数1,给y赋整数2,给a赋字符A,给b赋字符B,给c赋字符C的正确程序段是()。

("x=%d y=%d",&x,&y);a=getchar();b=getchar();c=getchar();("%d %d",&x,&y);a=getchar();b=getchar();c=getchar();("%d%d%c%c%c,&x,&y,&a,&b,&c);("%d%d%c%c%c%c%c%c",&x,&y,&a,&a,&b,&b,&c,&c);答案:D解析:空格也会作为一个字符赋给字符变量。

18、对嵌套子程序调用说法正确的是()。

A.外层子程序可以调用所有的内层子程序B.内层子程序只可以调用包含本身的外层子程序,不可以隔层调用C.外分程序必须能完全套住内分程序D.以上说法均不正确答案:C19、C语言中函数能否嵌套调用和递归调用()A.二者均不可B.前者可,后者不可C.前者不可,后者可D.二者均可答案:D解析:两者调用都可以20、C语言规定,程序中各函数之间()。

A.既允许直接递归调用也允许间接递归调用B.不允许直接递归调用也不允许间接递归调用C.允许直接递归调用不允许间接递归调用D.不允许直接递归调用允许间接递归调用答案:A解析:各程序间既可以直接调用也可以间接调用。

21、有如下程序:long fib(int n){if (n>2)return fib(n-1)+fib(n-2);elsereturn 2;}void main(){printf("%d\n",fib(3));}该程序的输出结果是()。

答案:B解析:向fib()函数传入3时,返回fib(1)+fib(2)的值;向fib()函数传入1和2时,都返回2,所以fib(3)返回2+2=4。

22、以下程序的输出结果是()。

long fun(int n){long s;if (n==1 || n==2)s=2;elses=n-fun(n-1);return s;}void main(){printf("%ld\n", fun(3));}答案:A解析:fun()函数传入3时,返回3-fun(2);fun()函数传入2时,返回2。

所以fun(3)返回3-2=1。

23、在C语言中,函数的隐含存储类别是()。

D.无存储类别答案:C解析:为简化编程,C语言中允许在定义外部函数时省略关键字extern。

24、以下叙述中不正确的是()。

A.在不同的函数中可以使用相同名字的变量B.函数中的形式参数是局部变量C.在一个函数内定义的变量只在本函数范围内有效D.在一个函数内的复合语句中定义的变量在本函数范围内有效答案:D解析:函数内的复合语句中定义的变量仅仅在该复合语句中有效。

25、以下程序运行后,输出结果是()。

int func(int a, int b){static int m=0,i=2;i+=m+1;m=i+a+b;return m;}void main(){int k=4,m=1,p;p=func(k,m);printf("%d,",p);p=func(k,m);printf("%d\n",p);},15,16,17,8答案:C解析:函数体内的静态局部变量不随函数的调用结束而销毁,而是一直存在。

26、以下程序的输出结果是()。

int d=1;int fun(int p){static int d=5;d+=p;printf("%d ",d);return d;}void main(){int a=3;printf("%d \n",fun(a+fun(d)));}9 96 915 156 15答案:C解析:首先调用fun(d),将全局变量d=1带入,此时fun()函数内的静态局部变量d的值是1,d+=p后d的值是6,输出d的值,返回d的值;然后调用fun(a+6),将局部变量a=3带入,此时fun()函数内的静态局部变量d的值是6,d+=p后d赋值15,输出d的值,返回d的值。

27、在C语言中,若需一变量只在本文件中所有函数使用,则该变量的存储类别是()。

答案:D解析:static修饰全局变量时,表示该变量仅在本文件中可使用。

28、下列程序的输出结果是()。

int b=2;int func(int *a){b += *a;return b;}void main(){int a=2, res=2;res += func(&a);printf("%d\n",res);}答案:B解析:func()函数中,对全局变量b自增a的值,func()函数返回4;res+=4,res赋值为6。

29、请读程序:void main(){int a=1,b=2,c=3;++a;c+=++b;{int b=4,c;c=b*3;a+=c;printf("first:%d,%d,%d\n",a,b,c);a+=c;printf("Second:%d,%d,%d\n",a,b,c);}printf("third:%d,%d,%d\n",a,b,c);}该程序的输出是(): 12,4,12 Second: 26,4,12 third: 4,3,6: 14,4,12 Second: 26,12,12 third: 26,3,4: 14,4,12 Second: 26,4,12 third: 26,3,6: 14,4,12 Second: 26,6,12 third: 26,4,6答案:C解析:程序运行到第6行时,a=2,b=3,c=6;程序运行到第10行时,a=14,局部变量b=4,c=12;程序运行到第13行时,a=26,局部变量b=4,c=12;程序运行到第15行时,a=26,b=3,c=6。

相关文档
最新文档