华中科技大学 刷题C++ 题目 答案
华中科技大学2003-2006级信息学院《C语言程序设计》考试试题及答案(DOC)

2003级信息学院《C语言程序设计》考试试题系班级姓名学号成绩一. 判断下列语句或程序的对错。
(“×”表示错,“√”表示对)(10分)1int x=y=z=20; ( ×) y,z需要在前定义2 #define M 50; ( ×) 不能有分号3 printf(“%\t”,(40,50,60)); ( √)4float a[100],*p;p=a++; ( ×) 数组名是地址常量,不能做++操作5char str[20];str[20]=0; ( ×) str[20]单元不可用6int data[4]={0,1,2,3,4}; ( ×) 0,1,2,3,4是5个元素,与data[4]不匹配7int x=’\014’; ( √)8int xyz.1=2; ( ×) xyz.1不是合法的标识符(变量名)9char *p=”c:\test\prg.c”; ( ×) 修改为c:\\test\\prg.c10int *p;*p=20; ( ×) 指针不能用常量进行赋值二. 计算下列表达式的值(10分)设unsigned int a=15,b=21,c=5,d=1;float f;(1) f=b/c ( 4.0 ) b/c是整数除,先得到4,然后赋值给f(2) !(a+b)+c-1&&b+c/2 ( 1 )(3) a^b+b&0x55+c<<3|015 ( 0x000f )(4) d*=c--%b++ ( 5 )(5) a%=(c%=2) ( 0 )三.程序改错(10分)1从键盘上输入三个字符串,然后按字典(从小到大)顺序进行输出# include <stdio.h># include<string.h>void swap(char *,char *);//函数声明需要分号结束main(){char a[80],b[80],c[80];scanf(“%s%s%s”,&a,&b,&c); //去掉&号,数组名即表示地址if(a>b)swap(a,b); strcmp(a,b)>0 a,b比较需要用字符串比较函数if(b>c)swap(b,c); strcmp(b,c)>0 b,c比较需要用字符串比较函数printf(“%s\n%s\n%s\n”,a,b,c);}void swap(char *pstr1,char *pstr2){char *p; //char p[80];p=pstr1; //strcpy(p,pstr1);字符串赋值需要用拷贝函数pstr1=pstr2; //strcpy(pstr1,pstr2);pstr2=p; //strcpy(pstr2,p);}(2)求某班30个学生数学成绩的最高分和平均分.# include <stdio.h>flaot process(float *p1,int n,int *p2); 添加函数声明main(){float a[30],aver;int ;for(m=0;m<30;m++)scanf(“%f”,&a[m]);max=process(a,30,&aver);pr intf(“max=%f,ave=%f\n),max,aver);}float process(float *p1,int n,int *p2){char x;int temp; //float temp 与函数返回类型匹配for(x=0;x<=n;x++) //for(x=0;x<n;x++) 不能要等号{if (p1[x]>temp)temp=p1[x];*p2+=p1[x];}p2=p2/n; //*p2=*p2/n;return temp;}四.程序填空(1)有一分数系列:2/1,3/2,/5/3,8/5,13/8,21/13……求出这数列的前50项和# include <stdio.h>main(){int m;float__ ________; // t,s=0,a=2,b=1for(m=1;___ _______;m++) //m<=50{s=s+a/b;t=a;a=_a+b_____;b=_t_;}printf(“sum=%f\n:,s);(2)按如图所示格式打印杨辉三角形的前10行11 11 2 11 3 3 11 4 6 4 1………main(){int m,n,a[10][10];for(m=0;m<10;m++){a[m][0]=1;__________________; a[m][m]=1;}for(__m=2___;m<10;m++)for(___n=1____;__n<m__________;n++)a[m][n]=a[m-1][n-1]+a[m-1][n];for(m=0;m<10;m++){for(n=0;__n<=m_____________;n++)printf(“%6d”,a[m][n]);_printf(“%5d”,a[m][n]);}}五.写输出结果(1)#include <stdio.h>void main(){int m,n,p,s;s=0;for(m=1;m<=4;m++){for(n=1;n<=m;n++){ p=1;for(n=1;n<=m;n++)p=p*n;}s=s+p;}printf(“s=%d\n”,s);S = 33; //1!+2!+3!+4!;(2)# include <stdio.h>void auto_static();int g_val;main(){int m;for(m=0;m<5;m++)auto_static();}void auto_static(){int au=0;static int st=0;printf(“au=%d,st=%d,g_val=%d\n”,au++,++st,g_val++);}au=0,st=1,g_val=0au=0,st=2,g_val=1au=0,st=3,g_val=2au=0,st=4,g_val=3au=0,st=5,g_val=4(3)# include <stdio.h>main(){int i,j,a[][3]={2,4,6,1,2,3};int *p[2]={a[0],a[1]};for(i=0;i<2;i++){for(j=0;j<3;j++)printf(“%3d\t”,*(p[i]+j));printf(“\n”);}}2 4 61 2 3(4)# include <stdio.h># include <string.h>struct person{char name[20];int count;};void main(){struct person leader[3]={{“li”,0},{“zhang”,0},{“wang”,0}}; char name[20],m,n;for(m=1;m<7;m++){scanf(“%s”,name);for(n=0;n<3;n++)if(!strcmp(name,leader[j].name)){leader[j].count++;break;}}printf(“\n”);for(m=0;m<3;m++){printf(“%s:%d\n”,leader[m].name,leader[m].count);}}当程序运行时,键入情况如下:liwangleiliwangzhang写出程序的输出结果。
华中科技大学 刷题C++ 题目 答案

int m=a;
if(b<m)
m=b;
if(c<m)
m=c;
return m;
}
/********** End **********/
void main(void)
{
int a,b,c;
cout<<"输入三个整数a,b,c=";
cin>>a>>b>>c;
year=Y;
month=M;
day=D;
}
SetD(int Y,int M,int D){
year=Y;
month=M;
day=D;
}
int getDay(); void show(); };
int Date::getDay(){
int n,i,k=0;
if ((year%100!=0&&year%4==0)||year%400==0)i=1;
#include <iostream>
using namespace std;
/**********Program**********/
class Date{
int year,month,day;
public:
Date(){
year=0;
month=0;
day=0;
}
Date(int Y,int M,int D){
en[i]=s[i]-21;
else en[i]=s[i];
i++;
return en[i-1];
}
/********** End **********/
华中科技大学C++程序题集合1

HUST C++程序设计题答案集1 致华科的小学弟小学妹,这篇文档是学长我辛辛苦苦刷到一百分的程序题(各种单枪匹马深夜作战),留着吧,将来写到不会的时候拿出来查查(具体方法:Ctrl + H,输入关键字查询,会有你想要的答案。
)当然,这里面的程序仅作参考,如果你有更好的想法,呃,就用你自己的吧。
祝学业有成。
你们的苦逼的学长XX/*------------------------------------------------------- 【程序设计】--------------------------------------------------------- 题目:定义一个日期类Date,包括年、月、日三个数据成员,以及一个判断闰年的成员函数输出结果见图:样张.JPG-------------------------------------------------------*/ #include <iostream>using namespace std;class Data {public:Data(){};Data(int,int,int);boolLeapYear();void Print();private:int year;int month;int day;};/**********Program**********/bool Data::LeapYear(){if((year%4==0&&year%100!=0)||(year%400==0))return 1;else return 0;}Data::Data(inty,intm,int d){year=y;month=m;day=d;}/********** End **********/void Data::Print(){cout<<year<<"/"<<month<<"/"<<day;if(LeapYear())cout<<" is a leap year"<<endl;elsecout<<" is not a leap year"<<endl;}void main(){Data d1(2012,8,9),d2(2009,12,8);d1.Print();d2.Print();}/*------------------------------------------------------- 【程序设计】---------------------------------------------------------题目:设计一个点类Point,再设计一个矩形类,矩形类使用Point类的两个坐标点作为矩形的对角顶点,并可以输出4个坐标值和面积。
华科研究生C++复习50题和答案

复习范围:所有讲过的内容。
下面的复习题基本涵盖所有考试内容,请认真作答,并重在理解。
考试时间:2014.4.26 14:30——17:00简答题1.什么是程序?什么是程序设计?什么是程序设计语言?程序是用程序设计语言表示的计算机的解题算法或解题任务。
程序设计是将解题任务转变为程序的过程。
程序设计语言是由一些符号所构成的集合,这些符号可用于定义、组织并完成各种各样的计算任务。
2.类型的强弱指的是什么?什么是无类型语言、强类型语言、弱类型语言?C++语言属于哪种?强类型定义语言:一种总是强制类型定义的语言,要求变量的使用要严格符合定义,所有变量都必须先定义后使用。
java、.NET、C++等都是强制类型定义的。
也就是说,一旦一个变量被指定了某个数据类型,如果不经过强制转换,那么它就永远是这个数据类型了。
与其相对应的是弱类型语言:数据类型可以被忽略的语言。
它与强类型定义语言相反, 一个变量可以赋不同数据类型的值。
3.什么是抽象数据类型?C++是通过什么方式实现抽象数据类型的?由一组对象和一组在这些对象上的操作所组成,利用数据抽象机制把一个数据类型的表示和操作汇集起来,封装在一起,定义成一个新的数据类型,这种新的数据类型统称为抽象数据类型。
引入类类型。
4.C++中标识符的命名规则是什么?什么是合法的标识符,什么是不合法的标识符1、大小写英文字母,下划线(_),以及阿拉伯数字组成。
2、标识符的第一个字符必须是大小写英文字母或者下划线,而不能是数字。
合法命名非法命名wiggles $Z]** /* $、] 和* 都是非法字符*/cat2 2cat /* 不能以数字开头*/Hot_Tub Hot-Tub /* - 是非法字符*/taxRate tax rate /* 不能有空格*/_kcab don't /* ' 是非法字符*/5.什么是引用机制?指针和引用有什么区别和联系?允许程序正文中通过引用为已有名字的内存单元声明新的名字,这个新名字成为该内存单位已有名字的引用名,俗称别名。
华工C++习题及其解答(第3版)

习题1及其解答1.1选择题1.一个最简单的C++程序,可以只有一个( c )。
(a) 库函数(b) 自定义函数(c) main函数(d) 空函数2.用C++语言编制的源程序要变为目标程序必须要经过( d )。
(a) 解释(b) 汇编(c) 编辑(d) 编译3. C++程序中的简单语句必须以( b )结束。
(a) 冒号(b) 分号(c) 空格(d)花括号4.有说明 int a=0; double x=5.16; 以下语句中,( c )属于编译错误。
(a) x=a/x; (b) x=x/a; (c) a=a%x; (d) x=x*a;5. 执行C++程序时出现的“溢出”错误属于( c )错误。
(a) 编译(b) 连接(c) 运行(d) 逻辑6.下列选项中,全部都是C++关键字的选项为( c )。
(a) while IF Static (b) break char go(c) sizeof case extern (d) switch float integer7. 按C++标识符的语法规定,合法的标识符是( a )。
(a) _abc (b) new (c) π(d) “age“8.C++语句中,两个标识符之间( a )不能..作为C++的分隔符。
(a) 数字(b) ; (c) : (d) +9.下列正确的八进制整型常量表示是( b )。
(a) 0a0 (b) 015 (c) 080 (d) 0x1010.下列错误的十六进制整型常量表示是( c )。
(a) 0x11 (b) 0xaf (c) 0xg (d) 0x1f11.在下列选项中,全部都合法的浮点型数据的选项为( b )。
(a) -1e3.5 15. 2e-4 (b) 12.34 -1e+5 0.1E-12(c) 0.2e-2 -12345. e-5 (d) 5.0e(1+4) 0.1 8e+212.下列正确的字符常量为( d )。
(a) “a”(b) ‟(c) a (d) (101)13.下列选项中,( d )不能..交换变量a和b的值。
华工C++第二章习题及其解答

习题 2及其解答2.1选择题1.已知 int i=0, x=1, y=0 ; 在下列选项使i 的值变成1的语句是( c )。
(a) if( x&&y ) i++ ; (b) if( x==y ) i++ ; (c) if( x||y ) i++ ; (d) if( !x ) i++ ;2.设有函数关系为y=⎪⎩⎪⎨⎧>=<-010001x x x ,下面选项中能正确表示上述关系为( c )。
(a) y = 1 ; (b) y = -1 ;if( x >= 0 ) if( x != 0 )if( x == 0 ) y = 0 ; if( x > 0 ) y = 1 ; else y = -1; else y = 0;(c) if( x <= 0 ) (d) y = -1 ; if( x < 0 ) y = -1 ; if( x <= 0 )else y = 0 ; if( x < 0 ) y = -1 ; else y = 1 ; else y = 1 ; 3.假设i=2,执行下列语句后i 的值为( b )。
switch( i ) { case 1 : i ++ ; case 2 : i -- ; case 3 : ++ i ; break ; case 4 : -- i ; default : i ++ ; } (a) 1(b) 2(c) 3(d) 44.已知int i=0,x=0; 下面while 语句执行时循环次数为( d )。
while( !x && i< 3 ) { x++ ; i++ ; } (a) 4(b) 3(c) 2(d) 15.已知int i=3;下面do_while 语句执行时循环次数为( b )。
do{ i--; cout<<i<<endl;}while ( i!= 1 ); (a) 1(b) 2(c) 3(d) 无限6.下面for 语句执行时循环次数为( b )。
C++模拟题华中科技大学

C++模拟试卷一、单选题(每题2分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的。
1. 下面选项中不属于面向对象程序设计特征的是(C) 。
A)继承性B)多态性C)相似性D)封装性2. 有如下程序段:int i=1;while(1){i++;if (i==10) break;if(i%2==0) cout<<’*’;}执行这个程序段输出字符*的个数是(C)A. 10B. 3C. 4D.53. 假定一个二维数组的定义语句为“int a[3][4]={{3,4},{2,8,6}};”,则元素a[2][1]的值为(A)。
A)0 B) 4 C)8 D)64. 下列有关数组的叙述中,正确的是( B )A)C++中数组的存储方式为列优先存储B)数组名可以作为实参赋值给指针类型的形参C)数组下标索引从1开始,至数组长度n结束D)数组指针的语法形式为:类型名*数组名[下标表达式];5. 若有下面的函数调用:fun(a+b, 3, max(n-1, b));其中实参的个数是(A)A)3 B)4 C)5 D)66. 以下哪一关键字可用于重载函数的区分( C )A)extern B)static C)const D)virtual7. 下面程序的输出结果是( B )#include <iostream>using namespace std;int i = 0;int fun(int n){static int a = 2;a++;return a+n;}void main(){int k = 5;{int i = 2;k += fun(i);}k += fun(i);cout << k;}A)13 B)14 C)15 D)168. 下面的程序段的运行结果为( D )char str[] = "job", *p = str;cout << *(p+2) << endl;A)98 B)无输出结果C)字符’b’的地址D)字符’b’9. 下面的程序段的运行结果为( D )char str[] = "job", *p = str;cout << *(p+2) << endl;A)98 B)无输出结果C)字符’b’的地址D)字符’b’10. 以下程序的输出结果是:(D )#include <iostream>using namespace std;int fun(char *s){ char *p=s;while (*p!='\0') p++;return (p-s);}void main(){cout<<fun("abc")<<endl;}A.0 B. 1 C. 2 D. 311. 实现运行时多态的机制是(A)A)虚函数B)重载函数C)静态函数D)模版函数12. 假定AA为一个类,a为该类私有的数据成员,GetV alue( )为该类公有函数成员,它返回a的值,x为该类的一个对象,则访问x对象中数据成员a的格式为(X )。
华中科技大学数据结构(C语言版第2版_李云清)习题答案2012-12

数据结构(C语言版)(第2版)习题解析揭安全李云清杨庆红编著江西师范大学计算机信息工程学院联系方式:*****************2012年12月第1章绪论1.1什么是数据结构?【答】:数据结构是指按一定的逻辑结构组成的一批数据,使用某种存储结构将这批数据存储于计算机中,并在这些数据上定义了一个运算集合。
1.2 数据结构涉及哪几个方面?【答】:数据结构涉及三个方面的内容,即数据的逻辑结构、数据的存储结构和数据的运算集合。
1.3 两个数据结构的逻辑结构和存储结构都相同,但是它们的运算集合中有一个运算的定义不一样,它们是否可以认作是同一个数据结构?为什么?【答】:不能,运算集合是数据结构的重要组成部分,不同的运算集合所确定的数据结构是不一样的,例如,栈与队列它们的逻辑结构与存储结构可以相同,但由于它们的运算集合不一样,所以它们是两种不同的数据结构。
1.4 线性结构的特点是什么?非线性结构的特点是什么?【答】:线性结构元素之间的关系是一对一的,在线性结构中只有一个开始结点和一个终端结点,其他的每一个结点有且仅有一个前驱和一个后继结点。
而非线性结构则没有这个特点,元素之间的关系可以是一对多的或多对多的。
1.5 数据结构的存储方式有哪几种?【答】:数据结构的存储方式有顺序存储、链式存储、散列存储和索引存储等四种方式。
1.6 算法有哪些特点?它和程序的主要区别是什么?【答】:算法具有(1)有穷性(2)确定性(3)0个或多个输入(4)1个或多个输出(5)可行性等特征。
程序是算法的一种描述方式,通过程序可以在计算机上实现算法。
1.7 抽象数据类型的是什么?它有什么特点?【答】:抽象数据类型是数据类型的进一步抽象,是大家熟知的基本数据类型的延伸和发展。
抽象数据类型是与表示无关的数据类型,是一个数据模型及定义在该模型上的一组运算。
对一个抽象数据类型进行定义时,必须给出它的名字及各运算的运算符名,即函数名,并且规定这些函数的参数性质。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
radius=r;
}
SetCC(Point pp,int r){
p1.SetP(pp.getX(),pp.getY());
radius=r;
}
double getArea();
void show();
}; double Circle::getArea()
if(x>1&&x<1.6)
fx=sin(x)+x;
if(x>1.6&&x<3)
fx=1+sqrt(x);
/********** End **********/
cout<<"当x="<<x<<"时,函数值为"<<fx<<endl;
return 0;
}
题目:
从键盘上输入任意整数,逆序输出其各位数字,同时求出其位数及各位数字之和。
}
int main()
{
Point p1(9,2),p2; //9为x坐标,2为y坐标
Circle c1(p1,7),c2; //7为半径p1为圆心点
c1.show();
cout<<"圆的面积="<<c1.getArea()<<endl;
p2.SetP(1,1);//改变圆心坐标
c2.SetCC(p2,4);//以p2为圆心坐标,改变c2的半径
#include <iostream>
using namespace std;
/**********Program**********/
char s[10];
int i=0;
char encryptionCH(char x)
{
s[i]=x;
char en[10];
if(s[i]>='A'&&s[i]<='U'||s[i]>='a'&&s[i]<='u')
y=yy;
}
int getX(){
return x;
} int getY()
{
return y;
}
};
class Circle{
double radius; Point p1;
public: Circle(){
p1.SetP(0,0);
radius=0;} Circle(Point pp,int r){
电文加密的算法是:将字母A变成F,a变成f,B变成G,b变成g,依次类推,
V变成A,W变成B,等等。其他字符不变。
从键盘输入一串电文,用函数将其加密,再在主函数中输出加密后的串。
输出结果见图:样张.JPG
-------------------------------------------------------*/
if (k=1)
return n;
}
/********** End **********/
void Date::show()
{
cout<<year<<"/"<<month<<"/"<<day<<endl;
}
int main()
{
Date d1(2009,2,1),d2; //d1为2009年2月1日
{
char s;
do
{
s=cin.get();
cout<<encryptionCH(s);
}while(s!='\n');
}
题目:
编写一个函数min,返回三个整数形参中的最小值。
-------------------------------------------------------*/
#include <iostream>
c2.show();//显示c2
cout<<"圆的面积="<<c2.getArea()<<endl;
return 0;
}
题目:定义shape类,有三个表示长度的整型数据成员,分别为l、w、h。
编一个基于对象的程序,写一个成员函数is,可判定其形状:
当l、w、h均不为0时,判定形状为柱体,返回值为1;
V变成A,W变成B,等等。其他字符不变。
从键盘输入一串电文,用函数将其加密,再在主函数中输出加密后的串。
输出结果见图:样张.JPG
-------------------------------------------------------*/
#include <iostream>
using namespace std;
和表示圆心坐标的点类对象。圆类成员函数包括构造函数、求面积的函数和输出显示圆心
坐标及圆半径的函数。
输出结果见样张.JPG
-------------------------------------------------------*/
#include <iostream>
using namespace std;
using namespace std;
/**********Program**********/
int min(int a,int b,int c){
int m=a;
if(b<m)
m=b;
if(c<m)
m=c;
return m;
}
/********** End **********/
void main(void)
const double PI=3.14159;
/**********Program**********/
class Point{
int x,y;
public: Point(){x=y=0;
}
Point(int xx,int yy){
x=xx;
y=yy;
}
SetP(int xx,int yy){
x=xx;
if (month==5&&day<=31) {n=120+day+i;k=1;}
if (month==6&&day<=30) {n=151+day+i;k=1;}
if (month==7&&day<=31) {n=181+day+i;k=1;}
if (month==8&&day<=31) {n=212+day+i;k=1;}
s=cin.get();
cout<<encryptionCH(s);
}while(s!='\n');
}
题目:
定义一个日期类Date,包含年、月、日三个数据成员(int),定义带有3个参数的构造函数,
以及一个求日期是当年的第几天的成员函数和输出日期的成员函数,
日期的显示格式为年/月/日。编写主函数进行测试。
en[i]=s[i]+5;
else if(s[i]>='V'&&s[i]<='Z'||s[i]>='v'&&s[i]<='z')
en[i]=s[i]-21;
else en[i]=s[i];
i++;
return en[i-1];
}
/********** End **********/
void main()
/**********Program**********/
char s[10];
int i=0;
char encryptionCH(char x)
{
s[i]=x;
char en[10];
if(s[i]>='A'&&s[i]<='U'||s[i]>='a'&&s[i]<='u')
en[i]=s[i]+5;
d1.show();
cout<<d1.getDay()<<endl;
d2.SetD(2012,3,1); //d2为2012年3月1日
d2.show();
cout<<d2.getDay()<<endl;
return 0;
}
题目:
定义一个点类Point包括x坐标和y坐标(int)。定义一个圆类Circle,有数据成员半径
(每年各月天数分别为31,28,31,30,31,30,31,31,30,31,30,31,闰年2月为29天,
闰年的条件year%4==0&&year%100!=0)||year%400==0))
输出结果见样张.JPG
-------------------------------------------------------*/
if (month==9&&day<=30) {n=243+day+i;k=1;}
if (month==10&&day<=31){n=273+day+i;k=1;}
if (month==11&&day<=30) {n=304+day+i;k=1;}