C程序设计与应用基础第三章重载习题答案

合集下载

c++程序设计原理与实践第三章课后答案

c++程序设计原理与实践第三章课后答案

“std_lib_facilities.h”这个头文件是《c++程序设计原理与实践》一直用到的头文件,要将此头文件放在你的文件目录中,下面我给出这个头文件://// This is a standard library support code to the chapters of the book// "Programming -- Principles and Practice Using C++" by Bjarne Stroustrup//#ifndef STD_LIB_FACILITIES_GUARD#define STD_LIB_FACILITIES_GUARD 1#include <iostream>using namespace std;//------------------------------------------------------------------------------// The call to keep_window_open() is needed on some Windows machines to prevent// them from closing the window before you have a chance to read the output.inline void keep_window_open(){cin.get();}//------------------------------------------------------------------------------#endif // STD_LIB_FACILITIES_GUARD将上述代码拷贝到记事本中,把后缀.txt改为.h,放在你的根目录即可引用。

第三章对象,类型和值第6 题#include"std_lib_facilities.h"int main(){int a;int b;int c;int t;cout<<"请您输入三个数:\n";cin>>a>>b>>c;if(a>b)//如果a大于b,将a,b交换.{t=a;a=b;b=t;}if(a>c){t=a;a=c;c=t;}if(b>c){t=b;b=c;c=t;}cout<<a<<","<<b<<","<<c<<endl;}下面是vc6.0的运行结果:第7题#include <iostream>#include<string>using namespace std;//------------------------------------------------------------------------------int main(){cout << "请您输入三个字符串:\n";string first;string second;string third;string space;cin >> first >> second>>third; // 读入三个字符串。

C语言教材第三章课后部分习题答案

C语言教材第三章课后部分习题答案

C语言教材第三章课后部分习题答案( 第三版谭浩强)3.6写出以下程序运行的结果。

main(){char c1=’a’,c2=’b’,c3=’c’,c4=’\101’,c5=’\116’;printf(“a%cb%c\tc%c\tabc\n”,c1,c2,c3);printf(“\t\b%c %c”,c4,c5);}解:aaㄩbbㄩㄩㄩccㄩㄩㄩㄩㄩㄩabcAㄩN3.7要将"China"译成密码,译码规律是:用原来字母后面的第4个字母代替原来的字母.例如,字母"A"后面第4个字母是"E"."E"代替"A"。

因此,"China"应译为"Glmre"。

请编一程序,用赋初值的方法使cl、c2、c3、c4、c5五个变量的值分别为,’C’、’h’、’i’、’n’、’a’,经过运算,使c1、c2、c3、c4、c5分别变为’G’、’l’、’m’、’r’、’e’,并输出。

解:#include <stdio.h>main(){ char c1=’C’,c2=’h’,c3=’i’,c4=’n’,c5=’a’;c1+=4;c2+=4;c3+=4;c4+=4;c5+=4;printf("密码是%c%c%c%c%c\n",c1,c2,c3,c4,c5); }运行结果:密码是Glmre3.9求下面算术表达式的值。

(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)2.5(2)3.53.10写出程序运行的结果。

main(){int i,j,m,n;i=8;j=10;m=++i;n=j++;printf(“%d,%d,%d,%d”,i,j,m,n);}解:9,11,9,103.12写出下面表达式运算后a的值,设原来a=12。

C语言程序设计(第3版)第3章习题参考答案

C语言程序设计(第3版)第3章习题参考答案

习题三参考答案(1)从键盘输入一个年份值,判断是否闰年。

设iYear为某一年份,iYear为闰年的条件为:iYear可以被4整除且不可以被100整除,或者iYear可以被400整除。

#include "Stdio.h"#include "Conio.h"int main(void){int iYear;printf("please input the year:");scanf("%d",&iYear);if(iYear%400==0||(iYear%4==0&&iYear%100!=0))printf("%d is leap",iYear);elseprintf("%d is not leap",iYear);getch();return 0;}(2)从键盘输入三个整数,按由小到大的顺序输出。

#include "stdio.h"main(){int i,j,k,max;scanf("%d%d%d",&i,&j,&k);max=i>j?i:j;max=max>k?max:k;printf("max=%d",max);getch();}(3)假设星期一至星期五每工作一小时的工资是20元,星期六和星期日每工作一小时的工资是平时的3倍,其中工资的4.5%是税金。

试编一程序从键盘输入星期序号(1,2,3,4,5,6,7,分别表示星期一至星期天)和工作小时数,计算该日的工资及应交税金。

#include "Stdio.h"#include "Conio.h"int main(void){int iWeek,iHours ;float fSalary,fTaxes;printf("please input the week number(1-7):");scanf("%d",&iWeek);printf("please input the work hours(1-12):");scanf("%d",&iHours);switch(iWeek){case 1:case 2:case 3:case 4:case 5:fSalary=20*iHours;fTaxes=fSalary*0.045;break;case 6:case 7:fSalary=3*20*iHours;fTaxes=fSalary*0.045;break;}printf("the salary is %f ,the taxes is %f",fSalary,fTaxes);getch();return 0;}(4)从键盘输入三角形的三条边长,判断是否构成三角形,如能则求出三角形的周长和面积并输出;如不能,输出不能构成三角形的信息。

C语言程序设计(第3版)第3章补充习题及答案

C语言程序设计(第3版)第3章补充习题及答案
char c=’A’;
x=(a&&b)&&(c<’B’);
执行该程序段后,x的值为( )
AtureB falseC 0D 1
(9)以下程序的输出结果是( )
main()
{
int a=0,i=1;
switch(i)
{
case 0:
case 3:a+=2;
case 1:
case 2:a+=3;
default:a+=5;
(2)下面程序的输出结果是
iX=3
iX>3

#include "stdio.h"
main()
{intiX=3;
switch(iX)
{case 1:
case 2:printf("iX<3\n");
case 3:printf("iX=3\n");
case 4:
case 5:printf("iX>3\n");
}
}
(3)以下程序的运行结果是iM=3,iN=4,iT=3。
#include "stdio.h"
main()
{int iM,iN,iT,iA=2,iB=3;
iM=(++iA==--iB)?––iA:++iB;
iN=++iA;
iT=iB;
printf("iM=%d,iN=%d,iT=%d\n",iM,iN,iT);
(4)对switch后括号内的表达式,叙述正确的是C。
A.只能是数字B.可以是浮点数
C.只能是整型数据或字符型数据D.以上叙述都不对

c语言第四版答案第三章,《C语言程序设计》课后习题答案(第三章)

c语言第四版答案第三章,《C语言程序设计》课后习题答案(第三章)

c语⾔第四版答案第三章,《C语⾔程序设计》课后习题答案(第三章)3.3 请写出下⾯程序的输出结果.结果:575 767.856400,-789.12396267.856400,-789.12396267.86,-789.12,67.856400,-789.123962,67.856400,-789.1239626.785640e+001,-7.89e+002A,65,101,411234567,4553207,d68765535,17777,ffff,-1COMPUTER, COM3.4 ⽤下⾯的scanf函数输⼊数据,使a=3,b=7,x=8.5,y=71.82,c1='A',c2='a',问在键盘上如何输⼊?main(){inta,b;floatx,y;charc1,c2;scanf("a=%d b=%d,&a,&b);scanf("x=%f y=%e",&x,&y);scanf("c1=%c c2=%c",&c1,&c2);}解:可按如下⽅式在键盘上输⼊:a=3 b=7x=8.5 y=71.82c1=A c2=a(说明:在边疆使⽤⼀个或多个scnaf函数时,第⼀个输⼊⾏末尾输⼊的"回车"被第⼆个scanf函数吸收,因此在第⼆\三个scanf函数的双引号后设⼀个空格以抵消上⾏⼊的"回车".如果没有这个空格,按上⾯输⼊数据会出错,读者⽬前对此只留有⼀初步概念即可,以后再进⼀步深⼊理解.)3.5 ⽤下⾯的scanf函数输⼊数据使a=10,b=20,c1='A',c2='a',x=1.5,y=-3.75,z=57.8,请问在键盘上如何输⼊数据?scanf("%5d%5d%c%c%f%f%*f%f",&a,&b,&c1,&c2,&y,&z);解:main(){inta,b;floatx,y,z;charc1,c2;scanf("%5d%5d%c%c%f%f",&a,&b,&c1,&c2,&x,&y,&z);}运⾏时输⼊:10 20Aa1.5 -3.75+1.5,67.8(注解:按%5d格式的要求输⼊a与b时,要先键⼊三个空格,⽽后再打⼊10与20。

c运算符的重载习题答案

c运算符的重载习题答案

1.概念填空题1.1运算符重载是对已有的运算符赋予多重含义,使同一个运算符在作用于不同类型对象时导致不同的行为。

运算符重载的实质是函数重载,是类的多态性特征。

1.2可以定义一种特殊的类型转换函数,将类的对象转换成基本数据类型的数据。

但是这种类型转换函数只能定义为一个类的成员函数而不能定义为类的友元函数。

类类型转换函数既没有参数,也不显式给出返回类型。

类类型函数中必须有return 表达式的语句返回函数值。

一个类可以定义多个类类型转换函数。

1.3运算符重载时其函数名由operator运算符构成。

成员函数重载双目运算符时,左操作数是对象,右操作数是函数参数。

2.简答题运算符重载的规则。

2.2简述重载单目运算符++、--,前置和后置时的差别。

2.3 C++中重运算符是否都可以重载?是否都可以重载成类的成员函数?是否都可以重载成类的友元函数?2.4 构造函数作为类型转换函数的条件是什么。

3.选择题3.1在下列运算符中,不能重载的是(B)A.!B. sizeofC. newD. delete3.2 不能用友员函数重载的是(A)。

A.=B.==C.<=D.++3.3下列函数中,不能重载运算符的函数是(B)。

A.成员函数B.构造函数C.普通函数D.友员函数3.4如果表达式++i*k时中的”++”和”*”都是重载的友元运算符,则采用运算符函数调用格式,该表达式还可表示为(B)。

A.operator*(i.operator++(),k) B.operator*(operator++(i),k)C.i.operator++().operator*(k) D.k.operator*(operator++(i))3.5已知在一个类体中包含如下函数原型:VOLUME operator-(VOLUME)const;下列关于这个函数的叙述中,错误的是(B )。

A.这是运算符-的重载运算符函数B.这个函数所重载的运算符是一个一元运算符C.这是一个成员函数D.这个函数不改变数据成员的值3.6在表达式x+y*z中,+是作为成员函数重载的运算符,*是作为非成员函数重载的运算符。

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( ){printf(“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章程序设计基础知识一、单选题1、C2、A3、C4、A5、C6、C7、D8、C9、D 10、A 11、D 12、A 13、C 14、C 15、B A16、B 17 D解析:1. 答案:C。

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

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

3.1 阅读下列程序,写出执行结果1. #include <iostream.h>#include <math.h>int f( int ) ;void main(){ int i;for( i = 0; i < 3; i ++ )cout << f( i ) << endl;}int f( int a ){ int b = 0 , c = 1;b ++; c++;return ( a + pow( b, 2 ) + c );}2. void func(int a, int b, int c = 3, int d = 4 ); #include <iostream.h>void main(){ func( 10, 15, 20, 30 );func( 10, 11, 12 );func( 12, 12 );}void func( int a, int b, int c, int d ){ cout << a << '\t' << b << '\t' << c << '\t' << d << endl; }3.#include <iostream.h>void func( int, int, int * ) ;void main(){ int x, y, z;func( 5, 6, &x );func( 7, x, &y );func( x, y, &z );cout << x << " ," << y << ", "<< z << endl;}void func( int a , int b , int *c ){ b += a ; *c = b – a ; }4.#include <iostream.h>void func( int, int, int & );void main(){ int x=0 , y=1 , z=2;func( 1 , 2 , x );func( x + y , y , y );func( z , x + y , z );cout << x << " ," << y << ", "<< z << endl ;}void func( int a , int b , int &c ) { b += a ; c = b – a ; }5. #include <iostream.h>int f2( int, int );int f1( int a , int b ){ int c ;a += a ;b += b ;c = f2( a+b , b+1 );return c;}int f2( int a , int b ){ int c ;c = b % 2 ;return a + c;}void main(){ int a = 3 , b = 4;cout << f1( a , b ) << endl;}6. #include <iostream.h>int age( int n ){ int f;if( n == 1 ) f = 10 ;else f = age( n-1 ) + 2;return f ;}void main(){ cout << "age : " << age( 5 ) << endl; }7. #include <iostream.h>int f1( int a , int b ) { return a + b ; }int f2( int a , int b ) { return a - b ; }int f3( int( *t )( int , int ) , int a , int b ) { return ( *t )( a, b ) ; }void main(){ int ( *p )( int, int );p = f1 ;cout << f3( p, 4, 8 ) << endl;p = f2 ;cout << f3( p, 8, 4 ) << endl;}8.#include <iostream.h>int sub( int, int );int a = 1 ;void main(){ int m = 1, n = 2, f;f = sub( m, n );cout << a << '\t' << f << endl;f = sub( m, n ) ;cout << a << '\t' << f << endl;}int sub( int c, int d ){ static int m = 2, n = 5 ;cout << m << '\t' << n << '\t' << endl;a = ++ a ; c = m ++ ; d = n ++;return c + d ;}3.2 思考题1.函数的作用是什么?如何定义函数?什么叫函数原型?2.什么叫函数值的返回类型?什么叫函数的类型?如何通过指向函数的指针调用一个已经定义的函数?请写一个验证程序说明。

C++程序设计(第2版)第三章习题解答

C++程序设计(第2版)第三章习题解答

第三章函数习题一.基本概念与基础知识自测题3.1 填空题3.1.1 被定义为形参的是在函数中起(1)作用的变量,形参只能用(2)表示。

实参的作用是(3),实参可以用(4)、(5)、(6)表示。

答案:(1)自变量(2)变量名(3)将实际参数的值传递给形参(4)具有值的变量(5)常量(6)表达式3.1.2 局部域包括(1)、(2)和(3)。

使用局部变量的意义在于(4)。

答案:(1)块域(2)函数域(3)函数原型域(4)局部变量具有局部作用域使得程序在不同块中可以使用同名变量3.1.3 静态局部变量存储在(1)区,在(2)时候建立,生存期为(3),如定义时未显式初始化,则其初值为(4)。

答案:(1)全局数据区(2)编译(3)全局生存期(4)全03.1.4局部变量存储在(1)区,在(2)时候建立,生存期为(3),如定义时未显式初始化,则其初值为(4)。

答案:(1)栈(2)在函数或块开始执行时(3)函数或块的执行期(4)随机值3.1.5 编译预处理的作用是(1),预处理指令的标志是(2)。

多文件系统中,程序由(3)来管理,用户自定义头文件中通常定义一些(4)。

答案:(1)将源程序文件进行处理,生成一个中间文件,编译系统对此中间文件进行编译并生成目标代码(2)#(3)工程文件(4)用户构造的数据类型(如枚举类型),外部变量,外部函数、常量和内联函数等具有一定通用性或常用的量3.1.6设有函数说明如下:int f(int x, int y){ return x%y+1; }假定a=10,b=4,c=5,下列语句的执行结果分别是(1)和(2)。

(1) cout<<f(a,b)+f(a,c); (2) cout<<f(f(a+c,b),f(b,c));解答:(1)答案:4(2)答案:53.1.7下列程序的输出结果分别为(1)和(2)。

(1)#include<iostream>using namespace std;int a,b;void f(int j){static int i=a; //注意静态局部变量int m,n;m=i+j; i++; j++; n=i*j; a++;cout<<"i="<<i<<'\t'<<"j="<<j<<'\t';cout<<"m="<<m<<'\t'<<"n="<<n<<endl;}int main(){a=1; b=2;f(b); f(a);cout<<"a="<<a<<'\t'<<"b="<<b<<endl;return 0;}解:答案:i=2 j=3 m=3 n=6 (对应蓝色)i=3 j=3 m=4 n=9 (对应绿色)a=3 b=2(2)#include<iostream>using namespace std;float sqr(float a){return a*a;}float p(float x,int n){cout<<"in-process:"<<"x="<<x<<'\t'<<"n="<<n<<endl;if(n==0) return 1;else if(n%2!=0) return x*sqr(p(x,n/2));else return sqr(p(x,n/2));}int main(){cout<<p(2.0,13)<<endl;return 0;}图解递归,共五层,返回值是回归时产生:答案:in-process:x=2 n=13in-process:x=2 n=6in-process:x=2 n=3in-process:x=2 n=1in-process:x=2 n=081923.2 简答题3.2.1 函数的实参和形参怎样对应?实参和形参数目必须一致吗?什么情况下可以不同?答:实参和形参的个数和排列顺序应一一对应,并且对应参数应类型匹配(赋值兼容),当有缺省参数时可以不同。

c语言程序设计第三章答案

c语言程序设计第三章答案

c语言程序设计第三章答案第三章:运算符与表达式一、算术运算符在C语言中,算术运算符用于在表达式中执行各种数学运算。

常见的算术运算符有加法运算符(+)、减法运算符(-)、乘法运算符(*)和除法运算符(/)等。

1. 加法运算符(+)加法运算符用于将两个操作数相加,并返回它们的和。

例如,表达式a + b将返回a和b的和。

2. 减法运算符(-)减法运算符用于从第一个操作数中减去第二个操作数,并返回它们的差。

例如,表达式a - b将返回a和b的差。

3. 乘法运算符(*)乘法运算符用于将两个操作数相乘,并返回它们的积。

例如,表达式a * b将返回a和b的积。

4. 除法运算符(/)除法运算符用于将第一个操作数除以第二个操作数,并返回它们的商。

例如,表达式a / b将返回a除以b的商。

二、关系运算符关系运算符用于比较两个操作数并返回一个布尔值(真或假)。

常见的关系运算符有大于(>)、小于(<)、大于等于(>=)、小于等于(<=)、等于(==)和不等于(!=)等。

1. 大于运算符(>)大于运算符用于检查第一个操作数是否大于第二个操作数。

如果是,则返回真(1),否则返回假(0)。

例如,表达式a > b将返回真或假。

2. 小于运算符(<)小于运算符用于检查第一个操作数是否小于第二个操作数。

如果是,则返回真(1),否则返回假(0)。

例如,表达式a < b将返回真或假。

3. 大于等于运算符(>=)大于等于运算符用于检查第一个操作数是否大于或等于第二个操作数。

如果是,则返回真(1),否则返回假(0)。

例如,表达式a >= b 将返回真或假。

4. 小于等于运算符(<=)小于等于运算符用于检查第一个操作数是否小于或等于第二个操作数。

如果是,则返回真(1),否则返回假(0)。

例如,表达式a <= b 将返回真或假。

5. 等于运算符(==)等于运算符用于检查两个操作数是否相等。

华南理工大学《C++程序设计基础》第三章练习题及参考答案

华南理工大学《C++程序设计基础》第三章练习题及参考答案

(C) int Function(a, b);
(D)void Function (int a; int b);
11. 下列带有默认参数的函数原型声明中,正确的是(
)。
(A) float fun(int a=0, int b, int c, int d=0);
(B) float fun(int a=0, int b, int c, int d);
(C) float fun(int , int , int =0, int );
(D) float fun(int , int , int , int =1); 12. 若有函数调用语句:fun(a+b,(x,y),(x,y,z));此调用语句中的实参个数为( )。
(A) 3
(B) 4
(C) 5
(D) 6
)。
(A)解释
(B)汇编
(C)编辑
(D)编译
2. 执行下列语句后,i,j,k 的值为(
)。
int i=1,j=1,k=1; ( --j , i++) || ++k;
(A) 2,0,1
(B) 2,0,2
(C) 1,1,1
(D) 1,0,2
3. 下列关于 switch 语句的描述中,正确的是(

(A) switch 语句中 default 字句可以没有,也可有一个
(B) switch 语句中每个语句序列中必须有 break 语句
(C) switch 语句中 default 字句只能放在最后 (D) switch 语句中 case 子句后面的表达式可以是整型表达式
4. C++语言中 while 和 do—while 循环的主要区别是(

C#程序设计课后习题答案--第三章

C#程序设计课后习题答案--第三章

实验报告1.创建窗体应用程序,程序运行时,在“年份”文本框输入一个正整数,单击“判断”按钮,就能在标签控件中显示判断结果;单击“退出”按钮则结束程序运行。

图 1.1 题目部分代码图 1.2 结果2.创建控制台应用程序,输入一个奇数后,输出图案,最顶部一行的星号个数为输入的数。

图 2.1 判断奇数代码图 2.2 输出星号倒三角形代码图 2.3 结果1图 2.4 结果23. 创建控制台应用程序,利用下边的多项式计算出π值,要求最后一项的值小于10−6.π4=1−13+15−17+⋯+14n −3−14n −1图 3.1 代码图 3.2 结果4. 创建控件台应用程序,利用下边的公式计算e 的近似值,要求最后一项的值小于10−6。

e =∑1n!kn=0图 4.1 代码图 4.2 结果5.已知两个三位数abc和cba之和为1333(既abc+cba=1333),编写控制台应用程序,求出三个数字a、b、c。

图 5.1 代码图 5.2 结果6.创建控制台应用程序,求解猴子吃桃问题,猴子第一天摘下桃子若干,当即吃了一个后又多吃了一个;第二天又将剩下的桃子吃掉一半后再多吃一个,;以后每天都吃掉前一天剩下的一半零一个。

到第10天想再吃时,只剩下一个桃子。

求猴子在第一天共摘下多少个桃子?图 6.1 代码图 6.2 结果7.马克思曾经做过这样一道数学趣味题:有30个人在一家小饭馆用餐,其中每个男人花了3先令,每个女人花了2先令,每个孩子花了1先令,总共花了50先令。

问男人、女人、孩子各有多少人?本题有多个解,编写控制条应用程序求出所有解。

图7.1 代码图7.2 代码8.体操比赛的评分规则是:由7位裁判为每个运动员打分,去掉一个最高分,去掉一个最低分,求出的平均分即为运动员的得分。

编写控制台应用程序,计算运动员得分。

图8.1 代码图8.2 结果9.所谓“水仙花数”指的就是这样的一个3位数,其各位数的立方和等于该数。

例如,153=13+53+33.编写控制台应用程序,计算输出所有的水仙花数。

c语言程序设计第三章答案

c语言程序设计第三章答案

第三章习题答案一、选择题(带**号的题选作)1) 以下叙述中正确的是()A) C语言的基本组成单位是语句B) C程序中的每一行只能写一条语句C) 简单C语句必须以分号结束D)C语句必须在一行内完成2)下列叙述中错误的是A)计算机不能直接执行用C语言编写的源程序B)C程序经C编译程序编译后,生成后缀为.obj的文件是一个二进制文件C) 后缀为.obj的文件,经连接程序生成后缀为.exe的文件是一个二进制文件 D)后缀为.obj和.exe的二进制文件都可以直接运行3) 计算机能直接执行的程序是()A)源程序 B)目标程序 C)汇编程序 D)可执行程序4)以下叙述中错误的是A)C语言是一种结构化程序设计语言B)结构化程序有顺序、分支、循环三种基本结构组成C)使用三种基本结构构成的程序只能解决简单问题D)结构化程序设计提倡模块化的设计方法5)对于一个正常运行的C程序,以下叙述中正确的是A)程序的执行总是从main函数开始,在main函数结束B)程序的执行总是从程序的第一个函数开始,在main函数结束C)程序的执行总是从main函数开始,在程序的最后一个函数中结束D)程序的执行总是从程序的第一个函数开始,在程序的最后一个函数中结束6)以下叙述中正确的是A)C语言程序将从源程序中第一个函数开始执行B)可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行C)C语言规定必须用main作为主函数名,程序将从此开始执行,在此结束D)main可作为用户标识符,用以命名任意一个函数作为主函数7) 以下关于C语言的叙述中正确的是A) C语言中的注释不可以夹在变量名或关键字的中间B) C语言中的变量可以再使用之前的任何位置进行定义C) 在C语言算术的书写中,运算符两侧的运算数类型必须一致D) C语言的数值常量中夹带空格不影响常量值的正确表示8)以下叙述中错误的是A)C程序在运行过程中所有计算都以二进制方式进行B)C程序在运行过程中所有计算都以十进制方式进行C)所有C程序都需要编译链接无误后才能运行D)C程序中整型变量只能存放整数,实型变量只能存放浮点数9)以下叙述中正确的是A) C程序中的注释只能出现在程序的开始位置和语句的后面B) C程序书写格式严格,要求一行内只能写一个语句C) C程序书写格式自由,一个语句可以写在多行上D) 用C语言编写的程序只能放在一个程序文件中10)C语言源程序名的后缀是A).exe B).C C).obj D).cp11)以下叙述中错误的是A)在程序中凡是以“#”开始的语句行都是预处理命令行B)预处理命令行的最后不能以分号表示结束C)#define MAX是合法的宏定义命令行D)C程序对预处理命令行的处理是在程序执行的过程中进行的12) 以下选项中不能作为C语言合法常量的是 ( )A) ‘cd’ B) 0.1e+6 C) “a” D)‘\011’13)一下选项中,能用作数据常量的是A)o115 B)0118 C)1.5e1.5 D)115L14) 以下选项中不属于字符常量的是A)'C' B)"C" C)'\xCC0' D)'\072' 15)以下合法的字符型常量是A)’\x13’B)’\018’C)”65” D)”\n”16) 以下不合法的字符常量是A)'\018' B)'\”' C) '\\' D) ‘\xcc' 17) 以下不合法的数值常量是A)011 B)1e1 C) 8.0E0.5 D) 0xabcd 18)以下选项中能表示合法常量的是A)整数:1,200 B)实数:1.5E2.0C)字符斜杠:‘\’ D)字符串:"\007"19) C源程序中不能表示的数制是()A) 二进制 B) 八进制 C) 十进制 D) 十六进制20) 以下选项中,合法的一组C语言数值常量是A)028 B)12. C).177 D)0x8A.5e-3 OXa23 4c1.5 10,000-0xf 4.5e0 Oabc 3.e521)以下不合法的用户标识符是A)j2_KEY B)Double C) 4d D) _8_22)一下选项中合法的标识符是A)1_1 B)1-1 C)_11 D)1_ _23) 以下选项中,能用作用户标识符的是A)void B)8_8 C)_0_ D)unsigned 24)按照C语言规定的用户标识符命名规则,不能出现在标识符中的是A)大写字母 B)连接符 C)数字字符 D)下划线25)可在C程序中用做用户标识符的一组标识符是A)and B)Date C)Hi D)case _2007 y-m-d Dr.Tom Bigl26) 以下C语言用户标示符中,不合法的是A)_1 B)AaBc C)a_b D)a--b 27)以下选项中不合法的标识符是A)print B)FOR C)&a D)_00 28)下列定义变量的语句错误的是()。

C语言第3章课后习题答案

C语言第3章课后习题答案

程序如下: 程序如下: 习题3-13】答案 【习题 】 #include <stdio.h> void main( ) { float money; int national, count; printf(" printf("Input national or external: "); scanf("%d" scanf("%d",&national); printf(" printf("Input count of product: "); scanf("%d" scanf("%d",&count); if(national) /* 国内销售 */ if(count<=80) money=count*350.0; else money=count*350.0-(countmoney=count*350.0-(count-80.0)*20.0; else /* 国外销售 */ if( count<=1000) money=count*900.0; else money=count*900.0-(countmoney=count*900.0-(count-1000.0)*15.0; printf("total=%f" printf("total=%f",money); }
【习题3-14】方法 习题 】方法2
#include<stdio.h> void main() { char chr; char password; chr=getchar(); if(chr>='U'&&chr<='Z'||chr>='u'&&chr<='z') { password=chr+6password=chr+6-26; } else { password=chr+6; } printf("The character's password is %c",password); }

c语言第三章题库及详解答案

c语言第三章题库及详解答案

c语言第三章题库及详解答案1. 以下哪个是C语言中的合法标识符?A. 3variableB. variable3C. _variableD. variable#答案:B, C2. C语言中,哪个关键字用于定义变量的存储类型?A. staticB. registerC. autoD. all of the above答案:D3. 以下哪个语句可以正确声明一个整型变量?A. int var;B. var int;C. int var=;D. int = var;答案:A4. 在C语言中,哪个运算符用于计算两个数的乘积?A. *B. /C. +D. -答案:A5. 以下哪个表达式的结果是非零的?A. 5 % 3B. 5 / 3C. 5 + 3D. 5 - 3答案:A6. 以下哪个选项是C语言中的逻辑运算符?A. &&B. ||C. !D. all of the above答案:D7. C语言中,哪个关键字用于定义函数?A. functionB. defC. voidD. int答案:D8. 以下哪个是C语言中的条件语句?A. ifB. switchC. caseD. default答案:A9. 在C语言中,哪个关键字用于实现循环?A. whileB. doC. forD. all of the above答案:D10. 以下哪个是C语言中的数组声明?A. int array[10];B. int [10] array;C. both A and BD. neither A nor B答案:C11. C语言中,哪个函数用于输入?A. printf()B. scanf()C. getchar()D. gets()答案:B12. 以下哪个是C语言中的字符串常量?A. "Hello World"B. 'Hello World'C. hello worldD. Hello World答案:A13. 在C语言中,哪个函数用于输出?A. printf()B. scanf()C. puts()D. sprintf()答案:A14. 以下哪个是C语言中的递归函数调用?A. func();B. func(func());C. func(1);D. func(func);答案:B15. C语言中,哪个关键字用于定义结构体?A. structB. unionC. enumD. typedef答案:A16. 以下哪个是C语言中的位运算符?A. &B. |C. ^D. all of the above答案:D17. 在C语言中,哪个关键字用于定义枚举类型?A. enumB. structC. unionD. typedef答案:A18. 以下哪个是C语言中的指针变量?A. int *ptr;B. int ptr;C. ptr int;D. int (*ptr)();答案:A19. C语言中,哪个函数用于计算数组的长度?A. sizeof()B. length()C. size()D. count()答案:A20. 在C语言中,哪个关键字用于定义联合体?A. unionB. structC. enumD. typedef问题及答案到此结束。

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

第三章重载1、请完成下列填空题1)在C++中,只能重载为类的成员函数的运算符是_=_、__[]__、__()__、__->__。

2)利用成员函数对二元运算符重载,其左操作数为___This___,右操作数为___成员函数参数___。

3)单目运算符作为类成员函数重载时___没有___的参数;双目运算符作为___类成员函数___重载时需声明其右操作数,作为___友元函数___重载时需声明全部操作数。

4)设a和b是两个整型变量,a+b表示这两个变量的和:设c和d为浮点型变量,c+d也表示这两个变量的和。

这里的运算符+具有不同的用途,这是__运算符重载___的例子。

5)重载的运算符仍然保持其原来的优先级、___结合性___和___语法结构___。

6)C++中不能重载的运算符有、__*___、___::___、___?:___和___sizof___。

2、编程题1)字符串连接需要两个操作数,即两个要被连接的字符串。

请按照以平方式实现operator +操作:string1=string2+string3答案:#include <>#include <>class String{public:String(int size=80){length=size;buf=new char[length+1];*buf='\0';}String(char *s){length=strlen(s);buf=new char[length+1];strcpy(buf,s);}String(const String& str){length=strlen;buf=new char[length+1];strcpy(buf,;}~String(){delete[]buf;}String& operator =(const String& str){length=;strcpy(buf,;return *this;}void Print(){cout<<buf<<endl;}friend String operator +(const String& str1,const String& str2){String temp(strlen+strlen+1);strcpy,;strcat,;return temp;}private:char *buf;int length;};void main(){String str1,str2("Hello,"),str3("everyone!");str1=str2+str3;();}2)给th类:class Three-d{public:Three_d(int I,int j,int k){x=I;y=j;z=k;}.Three_d()){x=0;y=0;z=0;}V oid Get(int &I,int &j,int &k({I=x;j=y;k=z;}private:int x,y,z;};针对给出的类,重载"+"、"++"与"一"运算符(只重载前缀方式即可)。

答案:#include <>class Three_d{public:Three_d(int i,int j,int k){x=i;y=j;z=k;}Three_d(){x=0;y=0;z=0;}void Get(int &i,int &j,int &k){i=x;j=y;k=z;}void Print(){cout<<'('<<x<<','<<y<<','<<z<<')'<<endl;}Three_d& operator++(){x++;y++;z++;return *this;}Three_d& operator--(){x--;y--;z--;return *this;}friend Three_d operator + (Three_d& t1,Three_d& t2);private:int x,y,z;};Three_d operator +(Three_d& t1,Three_d& t2){return Three_d+,+,+;}void main(){Three_d obj1(1,2,3),obj2(13,12,11),obj3;++obj1;();--obj2;();obj3=obj1+obj2;();}3)开发多项式类Polynomial,多项式的每一项用数组表示,每项包含一个系数和一个指数。

例如:2x4的指数为4,系数为2。

试开发一个完整的Polynomial类,包括构造函数、析构函数、”get"函数和”set”函数,以及下述重载的运算符:①重载加法运算符+,将两个多项式相加;②重载减法运算符-,将两个多项式相减:③重载乘法运算符*,将两个多项式相乘:④重载加法赋值运算符+=,减法赋值运算符-=,以及乘法赋值运算符*=。

答案:#include <>#include <>class Polynomial{public:Polynomial();Polynomial operator+(const Polynomial&)const;Polynomial operator-(const Polynomial&)const;Polynomial operator*(const Polynomial&);Polynomial& operator+=(const Polynomial&);Polynomial& operator-=(const Polynomial&);Polynomial& operator*=(const Polynomial&);void EnterTerms();void PrintPolynomial( )const;private:int exponents[100];int coefficients[100];void polynomialCombine(Polynomial&);};Polynomial::Polynomial(){for(int i=0;i<100;i++){coefficients[i]=0;exponents[i]=0;}}void Polynomial::PrintPolynomial() const{int start;bool zero=false;if(coefficients[0]){cout<<coefficients[0];start=1;zero=true;}else{if(coefficients[1]){cout<<coefficients[1]<<'x'; //常量不存在,输出指数为1的项if((exponents[1]!=0)&&(exponents[1]!=1))cout<<'^'<<exponents[1];zero=true;}start=2;}for(int x=start;x<100;x++) //输出其他各项if(coefficients[x]!=0){cout<<setiosflags(ios::showpos)<<coefficients[x]<<resetiosflags(ios::showpos)<<'x';if((exponents[x]!=0)&&(exponents[x]!=1))cout<<'^'<<exponents[x];zero=true;}if(!zero) //多项式为空cout<<'0';cout<<endl;}Polynomial Polynomial::operator+(const Polynomial& r) const{Polynomial temp;bool exponentExists;[0]=coefficients[0]+[0]; //计算常量之和for(int s=1;(s<100)&&[s]!=0);s++){[s]=[s];[s]=[s];}for(int x=1;x<100;x++) //计算其他各项之和{exponentExists=false;for(int t=1;(t<100)&&(!exponentExists);t++)if(exponents[x]==[t]){[t]+=coefficients[x];exponentExists=true;}if(!exponentExists){[s]=exponents[x];[s]+=coefficients[x];s++;}}return temp;}Polynomial &Polynomial::operator+=(const Polynomial &r){*this=*this+r;return *this;}Polynomial Polynomial::operator-(const Polynomial &r)const {Polynomial temp;bool exponentExists;[0]=coefficients[0][0];for(int s=1;(s<100)&&(exponents[s]!=0);s++){[s]=coefficients[s];[s]=exponents[s];}for(int x=1;x<100;x++){exponentExists=false;for(int t=1;(t<100)&&(!exponentExists);t++)if[x]==[t]){[t]-=coefficients[x];exponentExists=true;}if(!exponentExists){[s]=[x];[s]-=[x];s++;}}return temp;}Polynomial &Polynomial::operator-=(const Polynomial& r) {*this=*this-r;return *this;}Polynomial Polynomial::operator*(const Polynomial& r) {Polynomial temp;int s=1;for(int x=0;(x<100)&&(x==0||coefficients[x]!=0);x++) for(int y=0;(y<100)&&(y==0||[y]!=0);y++)if(coefficients[x]*[y])if((exponents[x]==0)&&[y]==0))[0]+=coefficients[x]*[y];else{[s]= coefficients[x]*[y];[s]=exponents[x]+[y];s++;}polynomialCombine(temp); //合并同类项return temp;}void Polynomial::polynomialCombine(Polynomial& w) {Polynomial temp=w;int exp;for(int x=0;x<100;x++){[x]=0;[x]=0;}for(x=1;x<100;x++){exp=[x];for(int y=x+1;y<100;y++)if(exp==[y]){[x]+=[y];[y]=0;[y]=0;}}w=temp;}Polynomial &Polynomial::operator*=(const Polynomial& r) {*this=*this*r;return *this;}void Polynomial::EnterTerms(){bool found=false;int numberOfTerms,c,e;cout<<"Enter number of polynomial terms:";cin>>numberOfTerms;for(int n=1;n<=numberOfTerms;n++){cout<<"Enter coefficient:";cin>>c;cout<<"Enter exponent:";cin>>e;if(c!=0){if(e==0){coefficients[0]+=c;continue;}for(int term=1;(term<100)&&(coefficients[term]!=0);term++)if(e==exponents[term]){coefficients[term]+=c;exponents[term]=e;found=true;}if(!found){coefficients[term]+=c;exponents[term]=e;}}}}void main(){Polynomial a,b,c,t;();();cout<<endl<<"First polynomial is:";();cout<<endl<<"Second polynomial is:";();cout<<endl<<"Adding the polynomials yields:";c=a+b;();cout<<endl<<"+=the polynomials yields:";t=a;a+=b;();cout<<endl<<"Subtracting the polynomials yields:";a=t;();cout<<endl<<"-=the polynomials yields:";a-=b;();cout<<endl<<"Multiplying the polynomials yields:";a=t;c=a*b;();cout<<endl<<"*=the polynomials yields:";a*=b;();cout<<endl;}4)C++在运行期间不会自动检查数组是否越界。

相关文档
最新文档