华中科技大学c++第3次上机作业

合集下载

华中科技大学 类的上机答案

华中科技大学 类的上机答案

第四章上机第一套第一题:class Rectangle{private:double left;double top;double right;double bottom;public:Rectangle(double a=0,double b=0,double c=0,double d=0 );~Rectangle(){};void Assign(double a,double b,double c,double d);void Show();double getLeft(){return left;};double getTop(){return top;};double getRight(){return right;};double getBottom(){return bottom;};double Area();double Perimeter();};Rectangle::Rectangle(double a,double b,double c,double d){left=a; top=b; right=c;bottom=d;}void Rectangle::Assign(double a,double b,double c,double d){left=a; top=b; right=c;bottom=d;}void Rectangle::Show(){cout<<"left-top point is ("<<left<<","<<top<<")"<<'\n';cout<<"right-bottom point is ("<<left<<","<<top<<")"<<'\n';}double Rectangle::Area(){return fabs((right-left)*(bottom-top));}double Rectangle::Perimeter(){return 4*(right-left);}第二题char mid;Person::Person(char *id, char *name, char sex,int birthday,char *homeadd){ strcpy(IdPerson,id);strcpy(Name,name);Sex=sex;Birthday=birthday;strcpy(HomeAddress,homeadd);}Person::Person(){IdPerson[0]='\0';Name[0]='\0';Sex=mid;Birthday=0;HomeAddress[0]='\0';}Person::Person(Person&Ps){cout<<""<<endl;strcpy(IdPerson,Ps.IdPerson);strcpy(Name,);Sex=Ps.Sex;Birthday=Ps.Birthday;strcpy(HomeAddress,Ps.HomeAddress);}第三题class Timedate{private: int year,month,date;int hh,mm,ss;public: Timedate(int=2000,int=1,int=1);void putdate(int y,int m,int d);void puttime(int n,int m,int s);void list();};Timedate::Timedate(int y,int m,int d ){year=y; month=m; date=d;hh=12; mm=30; ss=0;}void Timedate::putdate(int y,int m, int d){year=y; month=m; date=d;} void Timedate::puttime(int h,int m,int s){hh=h; mm=m; ss=s;第四题#include<iostream>#include<cmath>using namespace std;const double PI=3.14159265;class Circle{private:double r;double Circumference;double Area;public:Circle(double a=0);Circle(Circle &);void SetR(double R);~Circle(){};double GetR(){return r;};double GetCircumference(){return Circumference;};double GetAreaCircle(){return Area;};};Circle::Circle(double a){r=a;Area=PI*r*r;Circumference=2*PI*r;}Circle::Circle(Circle &cl){r=cl.r; Area=cl.Area; Circumference=cl.Circumference;}void Circle::SetR(double R){ r=R; Area=PI*r*r; Circumference=2*PI*r;}第二套上机题目第一题;class Circle{private:double radius;public:double area();double circumference();void Set(double r1);Circle(double r=0):radius(r){}};double Circle::circumference(){return 2*PI*radius;}void Circle::Set(double r1){radius=r1;}double Circle::area(){return PI*radius*radius;}class Box{private :double length;public:void Set(double l1);Box(double l=0):length(l){}double area();double circumference();};double Box::circumference(){return 4*length;}void Box::Set(double l1){length=l1;}double Box::area(){return length*length;}class NewStyle{public:Circle a;Box b;NewStyle(Circle a1,Box b1);double S();double L();void Set(Circle a2,Box b2);};NewStyle::NewStyle(Circle a1,Box b1){a=a1;b=b1;}void NewStyle::Set(Circle a2,Box b2){a=a2;b=b2;}double NewStyle::S(){return a.area()-b.area();}double NewStyle::L(){return a.circumference()+b.circumference();}第二题:date::date(int Year,int Month,int Day){year=Year; month=Month; day=Day;}void date::setdate(int Year,int Month,int Day){year=Year; month=Month; day=Day;}int date::get_year(){return year;}int date::get_month(){return month;}int date::get_day(){return day;}card::card(int Book, int Reader,date Borrow_day,int Expiry ):book(Book),reader(Reader),borrow_day(Borrow_day),expiry(Expiry){}date card::get_borrow_day(){return borrow_day;}date card::get_return_day(){date return_day;return_day.setdate(borrow_day.get_year(),borrow_day.get_month(),borrow_day.get_day()+ expiry);int i=return_day.get_month(),a;int year=return_day.get_year();int day=return_day.get_day();if(i==1||i==3||i==5||i==7||i==8||i==10||i==12) a= 31;else if(i!=2) a =30;else if((year%4==0&&year%100!=0)||(year%400==0)) a=29;else a=28;while(day>a){i++;day-=a;if(i==1||i==3||i==5||i==7||i==8||i==10||i==12) a= 31;else if(i!=2) a =30;else if((year%4==0&&year%100!=0)||(year%400==0)) a=29;else a=28;}while(i>12){year++;i-=12;}return_day.setdate(year,i,day);return return_day;}int card::get_book(){return book;}int card::get_reader(){return reader ;}int card::get_expiry(){return expiry;}。

华中科技大学-C语言程序设计_上机2019

华中科技大学-C语言程序设计_上机2019
• 课后习题 • 上机指导书
华中科技大学信息学院平台课—C语言程序设计
8
第五次上机
• 程序编写 ➢ 输入 n 个整数( n<10),排序后输出。排序的原则由函数 的一个参数决定,参数值为 1,按递减顺序排序,否则按递 增顺序排序。 ➢ 课后习题15
➢ 插入排序
• 课后习题 • 上机指导书
华中科技大学信息学院平台课—C语言程序设计
7
第四次上机
• 1. 已知五位数a2b3c能被23整除,编程求此五位数。 • 2. 编写函数GetMaxMin,求3个整形数据的最大值和最小值,
main函数完成输入3个整数值,调用所编函数计算最大值和最小 值,在main函数中输出最大和最小值。 • 3. 掌握程序调试方法,包括断点、单步、观察变量。(验证第四 章一(1-3))
➢ 输入一个华氏温度,要求输出摄氏温度。公式为c=5(F-32)/9
。取2位小数。
• 课后习题
➢ 五、程序3
➢ 表达式的值
• 上机指导书
华中科技大学信息学院平台课—C语言程序设计
6
第三次上机
• 程序编写 ➢ 第3章 二 4、6、8、12、14
• 课后习题ቤተ መጻሕፍቲ ባይዱ
• 上机指导书
华中科技大学信息学院平台课—C语言程序设计
华中科技大学信息学院平台课—C语言程序设计
3
上机要求
• 教学方式上机需要实验报告(上机前准备好
),给出测试内容(包括定义程序目标、设
计程序),写出代码
• 上机调试,记录出现问题,给出解释
• 用不同颜色笔修改上机报告中的程序
• 交上机报告
华中科技大学信息学院平台课—C语言程序设计
4
第一次上机

大学C 上机实验题目(版)

大学C 上机实验题目(版)

20XX年复习资料大学复习资料专业:班级:科目老师:日期:实验前言(建议认真阅读)一、上机实验的目的上机实验的目的是提高学生的分析问题、解决问题的能力和动手能力,通过实践环节理解C++语言的基本结构和程序设计方法。

通过亲手编程掌握C++语言编程的方法。

二、实验基本内容为了使学生在上机实验时目标明确,本实验指导书针对课程内容编写了五个实验。

学生在课内机时先完成指导书中标有“*”号的程序,理解所学的知识,在此基础上再编写其他应用程序。

指导书中的五个个实验如下:1. 函数与编译处理2. 指针与引用3. 类和对象4. 继承和派生类5. 多态性三、实验提交(特别提醒)1. 实验题目以附件形式提交,每个附件限一个源程序,附件以实验编号-题号-自己学号.cpp命名;如学号为20XXXX20XXXX20XXXX34的同学提交实验1的第5题,则附件命名方式为:1-5-20XXXX20XXXX20XXXX34.cpp,错误提交的将视为未提交。

2. 提交时间定为该次实验课的一周内,过期不再接收。

四、评分和作弊处理1. 要求提交实验题总数为6题(带“*”号),占期末总评成绩的20XX%;2. 存在抄袭和被抄袭的作业,无论抄袭与被抄袭者,本门课程平时成绩以零分记。

存在两次及两次以上抄袭和被抄袭者,本门课程以不及格记。

五、实验课要求(重点强调)1. 严禁QQ、MSN等即时软件工具聊天;2. 严紧接听手机、发送短信;3. 严紧玩游戏。

实验1 函数与编译处理一、实验目的1. 掌握函数声明、定义和使用的方法;2. 掌握形参与实参之间的对应关系;3. 掌握函数调用时,形参、实参之间的“值传递”和“引用传递”的区别;4. 掌握函数递归调用的方法;5. 掌握全局变量、局部变量、静态变量的使用方法;6. 掌握文件包含的使用方法。

二、实验内容1. 定义两个函数swap1和swap2,目的是实现两个整数的次序交换,其中swap1的参数是传递值参数,swap2的参数是引用参数,在程序中分别调用这两个函数,其输出结果如下所示:初始值:x=1,y=2调用swap1后的结果:x=1 y=2调用swap2后的结果:x=2 y=12. 编写一个函数,用来计算从键盘上输入的整数的阶乘。

华中科技大学微机原理第三次作业

华中科技大学微机原理第三次作业

华中科技⼤学微机原理第三次作业《计算机原理及应⽤》第三次课外作业题⼀、计算题:1、⼗进制数240.75的⼆进制数、⼗六进制数和BCD码分别是多少?答:(1111 0000.11)B ; (F0.C)H ; (0010 0100 0000. 0111 0101)BCD2、设X=C3H,Y=5AH。

试计算:{(X或Y)与(X异或Y)}。

答:化为⼆进制:X=(1100 0011)B, Y=(0101 1010)B所以:(X或Y)=(1101 1011)B=(DB)H(X异或Y)=(1001 1001)B=(99)H⼆、填空题:1、512×4位的存储器分别需要9根地址线和4根数据线?8K×8位的存储器⼜分别需要13根地址线和8根数据线?2、下述机器数形式可表⽰的数值范围是:单字节⽆符号整数0到255 ;单字节有符号整数-128到+127 。

(请⽤⼗进制形式写出)3、⼋⽚16K×4的存储器可以设计为32K 存储容量的16位存储器?4、宏汇编语⾔程序被汇编时,指令语句产⽣代码指令,指⽰性(伪指令)语句不产⽣代码指令,宏指令语句可能产⽣也可能不产⽣代码指令。

5、变址寻址的有效地址是变址寄存器的内容与形式地址代数和。

三、问答题:1、Intel系列的CPU单元⼀般由哪两个控制单元组成?它们分别起什么作⽤?答:由执⾏单元和总线接⼝单元组成。

执⾏单元的功能是负责执⾏指令,执⾏的指令从BICU 的指令队列缓冲器中取得,执⾏指令的结果或执⾏指令所需要的数据,都由EU 向BICU 发出请求,再由BICU对存储器或外设存取。

总线接⼝控制单元BICU的功能是负责完成CPU与存储器或I/O设备之间的数据传送。

2、在Intel8086体系结构中,在存储原则上堆栈是遵循什么原则的内存专⽤区域?若设SP=0056H ,如果⽤栈操作指令存⼊9个字节数据,则SP 值为多少?若⼜⽤栈操作指令取出4个字节数据,则SP 值⼜变为多少?答:堆栈遵循先⼊后出原则;SP=004DH ;SP=0052H3、请画出8086⾮屏蔽中断响应流程图。

华中科技大学计算机学院C实验报告实验三

华中科技大学计算机学院C实验报告实验三

课程实验报告课程名称:面向对象程序设计实验名称:面向对象的整型栈编程院系:计算机科学与技术专业班级:CS1209班学号:___________姓名:一扌旨导教师 : ____ 李春花________2015 年01月22 日一、需求分析1. 题目要求整型栈是一种先进后出的存储结构,对其进行的操作通常包括判断栈是否为空、向栈顶 添加一个整型元素、出栈等。

整型栈类型及其操作函数采用面向对象的C++语言定义,请将完成上述操作的所有函数采用 C++编程,然后写一个main 函数对栈的所有操作函数进行测 试。

class STACK{int *con st elems; //申请内存用于存放栈的元素 const int max;〃栈能存放的最大元素个数int pos; //栈实际已有元素个数,栈空时pos=0;public:STACK(int m);//初始化栈:最多m 个元素STACK(co nst STACK&s); virtual int size ( ) con st; virtual operator int ( ) con st; virtual int operator] ] (int x) con st; virtual STACK & operator«(i nt e); virtual STACK & operator»(i nt &e); //virtual STACK& operator=(const STACK&s); //赋 s 给栈,并返回被赋值的栈 virtual void prin t( ) con st;virtual ~STACK(); //打印栈//销毁栈};2. 需求分析采用面向对象的C++语言定义,构建整型栈并对其进行判断栈是否为空、向栈顶添加一个 整型元素、出栈等操作。

、系统设计 概要设计用结构实现栈,此结构包括指向栈的指针,最大容量,和当前的元素个数等三个元素 要求是栈的元素是栈元素类型是整形。

三级C语言上机南开100题_修订word版

三级C语言上机南开100题_修订word版

*******************************************************************************☆题目1请编写一个函数jsValue(int m,int k,int xx[]),该函数的功能是:将大于整数m且紧靠m的k 个素数存入数组xx传回。

最后调用函数writeDat()读取10组数据,分别得出结果且把结果输出到文件out.dat中。

部分源程序存在文件prog1.c中。

例如:若输入17 5 则应输出:19,23,29,31,37。

请勿改动主函数main()和写函数writeDat()的内容。

int isP(int m){int i;for(i=2;i<m;i++)if(m % i==0)return 0;return 1;}void num(int m,int k,int xx[]){ int s=0;for(m=m+1;k>0;m++)if(isP(m)) { xx[s++]=m; k--;}}☆题目2已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a 中,请考生编制一函数jsVal(),其功能是:如果四位数各位上的数字均是0或2或4或6或8,则统计出满足此条件的个数cnt,并把这些四位数按从大到小的顺序存入数组b中。

最后main( )函数调用写函数writeDat()把结果cnt以及数组b中符合条件的四位数输出到OUT.DAT文件中。

void jsVal(){ int i,j,qw,bw,sw,gw;for(i=0;i<MAX;i++){ qw=a[i]/1000; bw=a[i]/100%10;sw=a[i]%100/10; gw=a[i]%10;if(qw&&qw%2==0&&bw%2==0&&sw%2==0&&gw%2==0) b[cnt++]=a[i];}for(i=0;i<cnt-1;i++)for(j=i+1;j<cnt;j++)if(b[i]<b[j]) { qw=b[i]; b[i]=b[j]; b[j]=qw;}}******************************************************************************★题目3(字符型题)函数ReadDat( )实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中;请编制函数StrOR( ),其函数的功能是:以行为单位依次把字符串中所有小写字母o左边的字符串内容移到该串的右边存放,然后把小写字母o删除,余下的字符串内容移到已处理字符串的左边存放,之后把已处理的字符串仍按行重新存入字符串数组xx中。

C语言上机作业试题5套含答案

C语言上机作业试题5套含答案

第一次上机作业(2021):要求:独立完成,上机调试通事后上交作业提交邮件主题命名:班级学号姓名(第1次作业),例如:电1301班2王鹏(第1次作业)以附件形式将每次作业的所有程序源程序紧缩打包后提交,紧缩文件命名格式同上。

程序必需采用缩进格式1.大写字母转换成小写字母从键盘输入一个大写英文字母,输出相应的小写字母。

例:输入G输出g2.求平方根输入一个实数x,计算并输出其平方根(保留1 位小数)。

例:输入17输出The square root of is3.温度转换设计一个程序将华氏温度转换成摄氏温度c = 5/9(f-32)a)输入华氏温度(实型)b)输出的摄氏温度结果保留两位小数例:Please input Fahrenheit temperature:The corresponding Celsius temperature is4. 计算旅途时刻输入二个整数time1 和time2,表示火车的起身时刻和抵达时刻,计算并输出旅途时刻。

(输入的有效的时刻范围是0000 到2359,不需要考虑起身时刻晚于抵达时刻的情形。

)例:输入712 1411 (起身时刻是7:12,抵达时刻是14:11)输出The train journey time is 6 hours 59 minutes.5. 数字加密输入一个四位数,将其加密后输出。

方式是将该数每一名上的数字加9,然后除以10 取余,做为该位上的新数字,最后将第1 位和第3 位上的数字互换,第2 位和第4 位上的数字互换,组成加密后的新数。

例:输入1257输出The encrypted number is 4601试探题:你可否编程找出谁做的好事?有四位同窗中的一名做了好事,不留名,夸奖信来了以后,校长问这四位是谁做的好事。

⏹A说:不是我。

⏹B说:是C。

⏹C说:是D。

⏹D说:他乱说。

已知三个人说的是实话,一个人说的是谎话。

此刻要依照这些信息,找出做了好事的人。

华科C语言第三次作业参考答案

华科C语言第三次作业参考答案

一、有一个字符串,包含n个字符。

将此字符串从第m个字符开始的全部字符复制成为另一个字符串。

最后输出合成的字符串。

void main( ){char str1[100],str2[100];int m;printf("请输入起始串:");gets(str1);printf("请输入连接串:");gets(str2);printf("请输入连接位置:");scanf("%d",&m);if(m>strlen(str1))printf("输入连接位置有误!");else{strcpy(str1+m,str2);printf("合成串为%s:",str1);}}二、求出某一个字符在某一字符串中最后一次出现的位置。

#include<stdio.h>#include<string.h>void main( ){ char str[100];char c;int i,locate=-1;printf("请输入字符串:");gets(str);printf("请输入匹配字符:");c=getchar();for(i=strlen(str)-1;i>=0;i--){if(str[i]= =c){ locate=i;break;}}if(locate= =-1)printf("字符串中未出现匹配字符");elseprintf("匹配字符最后一次出现在第%d个字符位置.",locate+1);3.编写一个程序,读入一段正文,并读入一个单词,然后删除正文中出现的单词。

最后显示正文结果。

(例如正文是123abc4567abc89,单词是abc,结果是123456789)void main(){char str1[200],str2[50];char *ptr;printf("请输入正文内容:\n");gets(str1);printf("请输入匹配字符串:\n");gets(str2);do{ptr=strstr(str1,str2);if(ptr!=NULL)strcpy(ptr,ptr+strlen(str2));}while(ptr!=NULL);printf("请输出最终内容:%s\n",str1);}。

第三次华中科技大学C程序设计上机作业

第三次华中科技大学C程序设计上机作业
using namespace std; int main() { char a[5];
cin.getline(a,6); cout<<a<<endl; return 0; }
3. #include <iostream>
using namespace std; int main() { char c[]="I am a student";
cout<<c<<endl; return 0; }
4. 在下面程序中输入 China ,要求输出 China #include <iostream> using namespace std; int main() { char a[5],*p;
int i; p=&a[0]; for(i=0;i<=4;i++)
{cout<<"您已借书"<<t<<"天"<<endl; cout<<"您未超期"<<'\t'; cout<<"请注意在"<<w<<"天之内还书"<<endl;} }
提高题:(选做)
把有序的一两个整型数组 a 和 b 合并,要求合并后的数组依然有序。 #include<iostream> using namespace std; int main(){ int a[9]={1,4,5,9,10,12,15,22,35},b[5]={7,8,23,27,50},c[14]; for(int ai=0,bi=0,ci=0; ci<14; ci++){ if(bi>=5||a[ai]<b[bi]&&ai<9) c[ci]=a[ai++]; else if(ai>=9||a[ai]>b[bi]&&bi<5) c[ci]=b[bi++]; cout<<c[ci]<<" "; } cout<<endl;

华中科技大学C语言实验与课程设计上机实验报告汇总(1~8全部)

华中科技大学C语言实验与课程设计上机实验报告汇总(1~8全部)

华中科技大学C语言实验与课程设计实验报告计算机科学与技术学院指导老师:目录1 表达式和标准输入输出实验 (3)2 流程控制实验 (11)3 函数程序与结构实验 (20)4 编译预处理实验 (28)5 数组实验 (35)6 指针实验 (42)7 结构与联合实验 (52)8 文件实验 (61)华中科技大学C语言实验与课程设计实验报告CS1408赵晓雁1 表达式和标准输入与输出实验1.1 实验目的(1) 熟练掌握各种运算符的运算功能,操作数的类型,运算结果的类型及运算过程中的类型转换,重点是C语言特有的运算符,例如位运算符,问号运算符,逗号运算符等;熟记运算符的优先级和结合性。

(2)掌握scanf 和printf 函数的用法。

(3)掌握简单C程序(顺序结构程序)的编写方法。

1.2 实验内容及结果1.2.1.源程序改错下面给出了一个简单C语言程序例程,用来完成以下工作:(1)输入华氏温度f,将它转换成摄氏温度C后输出;(2)输入圆的半径值r,计算并输出圆的面积s;(3)输入短整数k、p,将k的高字节作为结果的低字节,p的高字节作为结果的高字节,拼成一个新的整数,然后输出;在这个例子程序中存在若干语法和逻辑错误。

要求参照2.1.3和2.1.4的步骤对下面程序进行调试修改,使之能够正确完成指定任务。

程序代码:#include<stdio.h>#define PI 3.14159;voidmain( void ){int f ;short p, k ;double c , r , s ;/* for task 1 */printf(“Input Fahrenheit:” ) ;scanf(“%d”, f ) ;c = 5/9*(f-32) ;printf( “ \n %d (F) = %.2f (C)\n\n ”, f, c ) ;/* for task 2 */printf("input the radius r:");scanf("%f", &r);s = PI * r * r;printf("\nThe acreage is %.2f\n\n",&s);/* for task 3 */printf("input hex int k, p :");scanf("%x %x", &k, &p );3处的语句,使之实现两数对调的操作。

华中科技大学C++上机实验答案(全)

华中科技大学C++上机实验答案(全)

实验一/*要求从键盘输入三个不等的整数后按ENTER键,在屏幕上由大到小的输出。

*/ #include<iostream>using namespace std;int main(){int a,b,c,max,min;cout<<"请输入三个不同的整数:"<<endl;cin>>a>>b>>c;if(a>b){max=a;min=b;}else{max=b;min=a;}if(c>max)cout<<c<<'\t'<<max<<'\t'<<min<<endl;else if(c<min)cout<<max<<'\t'<<min<<'\t'<<c<<endl;else cout<<max<<'\t'<<c<<'\t'<<min<<endl;return 0;}实验二//输入两个数,将它们交换后输出。

#include<iostream>using namespace std;int main(){int a,b,temp;cout<<"输入a,b:";cin>>a>>b;cout<<"a="<<a<<'\t'<<"b="<<b<<endl;temp=a;a=b;b=temp;cout<<"a="<<a<<'\t'<<"b="<<b<<endl;return 0;}//求一个三角形的面积(例题程序)#include<iostream>#include<cmath>using namespace std;int main(){float a,b,c,s,area;cout<<"a,b,c=";cin>>a>>b>>c;s=(a+b+c)/2.0;area=sqrt(s*(s-a)*(s-b)*(s-c));cout<<"area="<<area<<endl;return 0;}//求一个三角形的面积(修改后的程序)#include<iostream>#include<cmath>using namespace std;int main(){int a,b,c,s,area;cout<<"a,b,c=";cin>>a>>b>>c;if(a<b+c&&b<a+c&&c<a+b){s=(a+b+c)/2.0;area=sqrt(s*(s-a)*(s-b)*(s-c));cout<<"area="<<area<<endl;}else cout<<"不能够成三角形"<<endl;return 0;}/*用sizeof运算符计算C++中char,short,int,long,float,double等基本数据类型所占的字节数,并按以下格式输出:sizeof(char)=1 bytesizeof(short)=2 bytessizeof(int)=4 bytes……..*/#include<iostream>using namespace std;int main(){cout<<"sizeof(char)="<<sizeof(char)<<"byte"<<endl;cout<<"sizeof(short)="<<sizeof(short)<<"byte"<<endl;cout<<"sizeof(int)="<<sizeof(int)<<"byte"<<endl;cout<<"sizeof(long)="<<sizeof(long)<<"byte"<<endl;cout<<"sizeof(float)="<<sizeof(float)<<"byte"<<endl;cout<<"sizeof(double)="<<sizeof(double)<<"byte"<<endl;return 0;}//修改后的程序#include<iostream>using namespace std;int main(){cout<<"char"<<'\t'<<sizeof(char)<<"byte"<<endl;cout<<"short"<<'\t'<<sizeof(short)<<"byte"<<endl;cout<<"int"<<'\t'<<sizeof(int)<<"byte"<<endl;cout<<"long"<<'\t'<<sizeof(long)<<"byte"<<endl;cout<<"float"<<'\t'<<sizeof(float)<<"byte"<<endl;cout<<"double"<<'\t'<<sizeof(double)<<"byte"<<endl;return 0;}//用数组列表输出#include<iostream>using namespace std;int main(){char datatype[]="char\tshort\tint\tlong\tfloat\tdouble";cout<<datatype<<endl;cout<<sizeof(char)<<'\t'<<sizeof(short)<<'\t'<<sizeof(int)<<'\t'<<sizeof(long)<<'\t'<<siz eof(float)<<'\t'<<sizeof(double)<<endl;return 0;}/*编写满足下列要求的程序:根据输入的球半径,分别计算球的表面积、体积和质量(假设球的密度为7.8kg/dm3),并输出计算结果。

华科历年上机真题以及解答part3

华科历年上机真题以及解答part3

//3(1)无冗余的接受键盘输入的n个字符串,并将其无冗余的放入对应的字符数组中,再按照每行一串的格式输出这些字符串。

(2)以单个字符串为数据域,按字典顺序将n个字符串生成为一棵二叉搜索树,并且规定左子树(数据域)小于右子树(数据域)。

(3)先序遍历该二叉树,并输出结果。

#include <stdio.h>#include <stdlib.h>#include <string.h>typedef struct node{char *data;struct node *lchild,*rchild;}BNode,*BTree;void Insert(BTree *t,char *data){if(!(*t)){(*t) = (BTree)malloc(sizeof(BNode));(*t)->data = data;(*t)->lchild = NULL;(*t)->rchild = NULL;}else{if(strcmp((*t)->data,data)>0)Insert(&((*t)->rchild),data);elseInsert(&((*t)->lchild),data);}}void PreOrder(BTree t){if(t){printf("%s\n",t->data);PreOrder(t->lchild);PreOrder(t->rchild);}}void main(){char **str;int n,count,i;char ch;BTree t=NULL;printf("please input n:");scanf("%d",&n);str = (char **)malloc(n*sizeof(char *));fflush(stdin);for(i=0;i<n;i++){count = 0;str[i] = (char *)malloc(sizeof(char));while((ch= getchar())!=' ' && ch != '\n'){count++;str[i] = (char *)realloc(str[i],count*sizeof(char));str[i][count-1]=ch;}str[i] = (char *)realloc(str[i],(count+1)*sizeof(char));str[i][count]='\0';}for(i=0;i<n;i++)Insert(&t,str[i]);printf("PreOder output:\n");PreOrder(t);fflush(stdin);getchar();}//输入一串数,然后,建立链表,排序输出。

C++上机作业(三)

C++上机作业(三)

C++上机作业(三)——分支结构【任务一】根据用户输入的学生成绩(0~100),判断成绩的等级(〈60 不及格,<=60且<70及格,〈=70且〈80中等,<=80且〈90良好,〈=90且<=100优秀)。

要求:使用if条件结构实现【任务二】输入一个年度,判断是否是闰年.例如,2000是闰年,1900不是闰年,1904是闰年。

要求:使用分支结构语句实现。

【任务三】输入一个5位正整数,输出它是不是回文数。

回文数是这样一种数,它的逆序数和它本身相等。

例如,12321的逆序数是12321,和它本身相等,所以它是回文数.又例如25128的逆序数是82152,所以它不是回文数。

要求:使用分支结构语句实现。

【任务四】从键盘上输入一个年份值和一个月份值,判断该月的天数。

(说明:一年有12个月,大月的天数是31,小月的天数是30。

2月的天数比较特殊,遇到闰年是29天,否则为28天。

)要求:使用分支结构语句实现。

【任务五】:输入三个整数x、y、z,请把这三个数由小到大输出。

要求:使用分支结构语句实现。

【任务六】:输入一个不多于5位的正整数,要求:1.输出它是几位数;2.逆序打印出各位数字。

例如,输入256,则先输出3,再输出652.要求:使用分支或循环结构语句实现。

【任务七】:编写程序实现:商店卖西瓜,20斤以上的每斤0.85元;重于15斤轻于等于20斤的,每斤0。

90元;重于10斤轻于等于15斤的,每斤0。

95元;重于5斤轻于等于10斤的,每斤1.00元;轻于或等于5斤的,每斤1。

05元。

输入西瓜的重量和顾客所付钱数,输出应付货款和应找钱数。

要求:使用分支结构语句实现。

【任务八】:编写程序计算购买图书的总价格:用户输入图书的定价和购买图书的数量,并分别保存到一个float和一个int类型的变量中,然后根据用户输入的定价和购买图书的数量,计算合计购书金额并输出。

其中,图书销售策略为:正常情况下按9折出售,购书数量超过10本打85折,超过100本打8折。

第三次c++上机作业

第三次c++上机作业

第三次上机作业1.输入正整数n,计算n的阶乘。

#include <iostream>using namespace std;int main (){intn,i;double result=0; //result是结果cout<<"请输入正整数:"<<endl; cin>>n;if(n<1){cout<<"输入错误!"<<endl;return 1; //A}result=1; //Bfor(i=2;i<n;i++) result*=i;cout<<result<<endl;return 0;}(1)分别输入数据 -2, 1 ,5, 10, 20 调试运行程序,并记录程序结果。

(2) 删除程序中//A 处的赋值语句 return 1; 重新以上述数据调试运行程序,结果是否正确,如果不正确,该如何修改?答:结果正确,无需修改,(3) 删除程序中//B处的语句 result=1;重新以上述数据调试运行程序,结果是否正确,如果不正确,该如何修改?答:不正确,可将最开始的double result=0修改为double result=1即可。

(4) 将程序中语句 double result=0; 改为 int result=0; 重新以上述数据调试运行程序,结果如何?为什么?答:输入-2和一和5 是结果一样,正确。

输入10时输出为3628800结果正确。

输入20时答案错误。

原因:输入10时,整型量和实型量表达方式不一样,实质一样;输入20时输出数据超出整型变量的表达范围,所以出现错误。

2.范例:编程计算求π的近似值。

#include <iostream>#include <cmath>using namespace std;void main (){longint i=0;double sum=0,term,pi;do{i+=1;term=1.0/(i*i);sum+=term;}while(term>1e-12);pi=sqrt(sum*6);cout<<"pi="<<pi<<endl;}(1)输入程序编译后使用Debug跟踪,单步执行程序,记录以下变量值的变化。

华中科技大学c++第3次上机作业

华中科技大学c++第3次上机作业

华中科技大学《计算机基础与程序设计(C++)》实验报告实验名称:第三次上机实验实验学时:4:学号:班级:电气实验日期:2017/3/27 教师批阅签字:一、实验目的●掌握三种循环语句的使用。

●学会使用continue 和break。

●掌握多重循环的设计。

●掌握常用算法的应用。

二、实验容1.在vc环境下编写下述程序代码,编译调试然后用不同的数据测试直至得到完全正确的结果。

并解释出错原因。

#include<iostream>#include<cmath>using namespace std;int main( ){float x0,x1,a;cout<<"输入一个正数:";cin>>a;if(a<0)cout<<a<<"不能开平方!"<<endl;else ;{x0=a/2;x1=(x0+a/x0)/2;while (abs(x1-x0)>=1e-5){x0=x1;x1=(x0+a/x0)/2;}cout<< a<<"的平方根为:"<<x1<<endl;}return 0;语法错误:1.最后缺少花括号。

逻辑错误:1.else后面有分号,导致花括号中的语句不受else限制。

2.abs所提供的精度为整数更改后的程序:#include<iostream>#include<cmath>using namespace std;int main( ){float x0,x1,a;cout<<"输入一个正数:";cin>>a;if(a<0)cout<<a<<"不能开平方!"<<endl;else{x0=a/2;x1=(x0+a/x0)/2;while (fabs(x1-x0)>=1e-5){x0=x1;x1=(x0+a/x0)/2;}cout<< a<<"的平方根为:"<<x1<<endl;}return 0;}2.下列程序的功能是:计算一对兔子,从出生后第3个月起每个月都生一对兔子。

第三次上机作业

第三次上机作业

一、类的相关知识练习(理解类的基本结构,掌握类的基本使用方法)1、参照教材例4-1(P106)2、参照教材例4-2(P112)3、定义个矩形类(Rectangle),并对其进行测试。

说明:1)定义类的成员变量(长、宽),成员函数(计算周长、面积) 2)使用构造函数、析构函数、函数重载、默认参数3)在此基础上定义长方体类(或在长方形基础上进行修改、扩充) #include <iostream>using namespace std;class Rectangle{public:Rectangle(int cc=0,int kk=0){c=cc;k=kk;}Rectangle(Rectangle &p);int zhouchang();int mianji();~Rectangle() {}private:int c,k;};Rectangle::Rectangle(Rectangle &p){c=p.c;k=p.k;}int Rectangle::zhouchang(){return (c+k)*2;}int Rectangle::mianji(){return c*k;}class Rect{public:Rect(int cc=0,int kk=0,int gg=0){c=cc;k=kk;g=gg;}Rect(Rect &q);int zc();int mj();int bmj();~Rect() {}private:int c,k,g;};Rect::Rect(Rect &q){c=q.c;k=q.k;g=q.g;}int Rect::zc(){return (c+k+g)*4;}int Rect::mj(){return c*k*g;}int Rect::bmj(){return (c*k+k*g+c*g)*2;}int main(){Rectangle t1(2,3);cout<<"周长:"<<t1.zhouchang()<<endl; cout<<"面积:"<<t1.mianji()<<endl; Rectangle t2=t1;cout<<"周长:"<<t2.zhouchang()<<endl; cout<<"面积:"<<t2.mianji()<<endl; Rect q(2,3,4);cout<<"长方体周长:"<<q.zc()<<endl; cout<<"长方体体积:"<<q.mj()<<endl; cout<<"长方体表面积:"<<q.bmj()<<endl; Rect m=q;cout<<"长方体周长:"<<m.zc()<<endl; cout<<"长方体体积:"<<m.mj()<<endl; cout<<"长方体表面积:"<<m.bmj()<<endl; return 0;}。

C_上机实验(含作业)总的目的、要求和评分标准

C_上机实验(含作业)总的目的、要求和评分标准

上机实验(含作业)总的目的、要求和评分标准一、实验目的实验作为教学的一个重要环节,其目的在于更深入地理解和掌握课程教学中的有关基本概念,应用基本技术解决实际问题,从而进一步提高分析问题和解决问题的能力。

C程序设计课程实践性很强,即要求独立编写程序,学会独立上机调试程序。

学会独立上机调试程序。

也就是要善于发现程序中的错误,并且能很快地排除这些错误,使程序能正确运行。

计算机技术是实践性很强的技术,要求从事这一领域的人不仅能了解和熟悉有关理论和方法,还要求自己动手实践。

对程序设计来说,要求会编写程序并上机调试通过。

因此调试程序本身是程序设计课程的一个重要的内容和基本要求,应给予充分的重视。

调试程序的经验固然可以借鉴他人的现成经验,但更重要的是通过自己的直接实践来积累,而且有些经验是只能“会意”难以“言传”。

因此,在实验时不但要达到通过程序完成每一次的实验任务,而且应当在已通过的程序基础上作进一步的修改、提高和完善。

甚至于“自设障碍”,即把正确的程序改为有错的(如用scanf函数为输入变量输入数据时,漏写“&”符号,double变量使用格式符“%f”;使数组下标出界;使整数溢出等等),观察和分析所出现的情况。

这样的学习才会有真正的收获。

实验目的可归纳如下:⒈验证自己已建立起来的概念或所编写的程序是否正确;⒉加深对课堂所学内容的理解和语法规则的记忆;⒊理解和掌握运用计算机高级语言进行编程的思想方法;⒋掌握常用算法的设计与应用实现;⒌熟悉Turbo C 2.0程序开发环境,掌握C程序常用的调试手段;⒍学会上机调试程序的方法,不断积累调试经验,提高排错能力;⒎使自己具有独立的应用编程和熟练的程序调试能力。

二、要求:⒈做好每一次上机前的准备以提高上机效率:①预先认真阅读相关实验内容,做到心中有明确的目的要求和任务,要有备而来;②按照实验内容规定的习题题目,事先在实验预习报告上编写好源程序及运行程序所需的典型数据,并经人工静态检查认为无误;手编程序应书写整齐,应在每个题目之间留出一定的空间,以备记录上机调试情况和运行结果等;对程序中自己有疑问的地方,应作出记号,以便上机时给以注意。

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

华中科技大学《计算机基础与程序设计(C++)》实验报告实验名称:第三次上机实验实验学时:4姓名:学号:班级:电气实验日期:2017/3/27 教师批阅签字:一、实验目的●掌握三种循环语句的使用。

●学会使用continue 和break。

●掌握多重循环的设计。

●掌握常用算法的应用。

二、实验内容1.在vc环境下编写下述程序代码,编译调试然后用不同的数据测试直至得到完全正确的结果。

并解释出错原因。

#include<iostream>#include<cmath>using namespace std;int main( ){float x0,x1,a;cout<<"输入一个正数:";cin>>a;if(a<0)cout<<a<<"不能开平方!"<<endl;else ;{x0=a/2;x1=(x0+a/x0)/2;while (abs(x1-x0)>=1e-5){x0=x1;x1=(x0+a/x0)/2;}cout<< a<<"的平方根为:"<<x1<<endl;}return 0;语法错误:1.最后缺少花括号。

逻辑错误:1.else后面有分号,导致花括号中的语句不受else限制。

2.abs所提供的精度为整数更改后的程序:#include<iostream>#include<cmath>using namespace std;int main( ){float x0,x1,a;cout<<"输入一个正数:";cin>>a;if(a<0)cout<<a<<"不能开平方!"<<endl;else{x0=a/2;x1=(x0+a/x0)/2;while (fabs(x1-x0)>=1e-5){x0=x1;x1=(x0+a/x0)/2;}cout<< a<<"的平方根为:"<<x1<<endl;}return 0;}2.下列程序的功能是:计算一对兔子,从出生后第3个月起每个月都生一对兔子。

小兔子长到第3个月后每个月又生一对兔子,假设兔子不存在死亡问题,请问从第1个月到第20个月,每个月有多少对兔子?要求输出时按行列方式每行显示5个数据。

如下图:编译调试该程序看是否正确,不正确的话修改之直至完全满足要求。

并解释出错原因。

int main(){int fib0=0,fib1=1,fib2;int n;cout<<setw(5)<<fib0<<fib1<<endl;for(n=1;n<=20;n++){ fib2=fib0+fib1;cout<<setw(5)<<fib2;fib1=fib2;fib0=fib1;if(n%5==0) cout<<endl;}return 0;}语法错误:1.缺少头文件(iostream以及iomanip)以及命名空间。

2.return 0后的分号为中文分号。

逻辑错误:1. cout<<setw(5)<<fib1;最初只需要输出一个月而且无需换行2.前面已经输出一个月所以n<=19。

而且后面的换行也需要改为n+13.复制顺序错误,应该为fib0=fib1;fib1=fib2;改正后的程序:#include <iostream>#include <iomanip>using namespace std;int main(){int fib0=0,fib1=1,fib2;int n;cout<<setw(5)<<fib1;for(n=1;n<=19;n++){ fib2=fib0+fib1;cout<<setw(5)<<fib2;fib0=fib1;fib1=fib2;if((n+1)%5==0) cout<<endl;}return 0;}3.编程任意输入一个三位数,判断其是否是水仙花数(水仙花数是指这个数等于个位,十位和百位的立方和。

例如:153=13+53+33)要求:程序原代码,及运行结果截图。

(直接粘贴在此)#include <iostream>using namespace std;{cout<<"请输入需要判断的正整数"<<endl;int a,g,s,b;cin>>a;g=a%10;s=(a/10)%10;b=a/100;if (a==g*g*g+s*s*s+b*b*b)cout<<"该整数为水仙花数"<<endl;elsecout<<"该整数不是水仙花数"<<endl;return 0;}解决本题的算法思路描述。

首先要解决的是如何取得个十百三位的数字,然后用if语句进行判断。

调试过程的记载(包括出现的错误,以及修改过程)对十位和百位的数字进行提取的时候出现错误。

开始时:g=a%10; 改正后:g=a%10;s=a%100; s=(a/10)%10;b=a%1000; b=a/100;4.输出3到100以内的所有素数。

(要求每行显示8个数)提示:该题需要用到多重循环,外循环代表需要判断的数,从3到100,内循环判断该数是否是素数,参考教材的例4.9(判断一个数是否为素数)。

要求:程序原代码,及运行结果截图。

(直接粘贴在此)#include <iostream>#include <iomanip>using namespace std;int main(){int i,n,m=0,s=0,a;for (i=3;i<=100;i++){a=1;for (n=2;n<i;n++)if (i%n==0){a=0;break;}}if (a==1){cout<<setw(3)<<i;m=m+1;if (m%8==0)cout<<endl;}else;}return 0;}解决本题的算法思路描述运用双重循环语句进行,一个用来判断是否为素数,另外一个用来循环3-100.调试过程的记载(包括出现的错误,以及修改过程)a需要每次循环都赋值,最初放在循环外,导致只能输出3一个数字。

花括号位置错误,导致格式不正确。

5.连续输入n 个整数(n由键盘输入)统计其中正数、负数和零的个数。

要求:程序原代码,及运行结果截图。

(直接粘贴在此)#include <iostream>using namespace std;int main(){cout<<"请输入所需统计的数字的个数"<<endl;int i=1,z=0,f=0,l=0,n,a;cin>>n;cout<<"请输入所需统计的数据"<<endl;for (;i<=n;i++){cin>>a;if (a==0)l++;else if (a>0)z++;elsef++;}cout<<"统计的数据中正数、负数以及0的个数分别"<<z<<','<<f<<','<<l<<endl;return 0;}解决本题的算法思路描述首先判断输入数据的个数,然后运用for循环和if-else语句进行统计出现次数。

调试过程的记载(包括出现的错误,以及修改过程)未出现错误,但是最开始的程序未进行相关提示。

6.改写教材115 例18 ,规则为5局3胜制规则,其余条件不变。

要求:程序原代码,及运行结果截图。

(直接粘贴在此)#include <iostream>#include <cmath>using namespace std;int main(){int v1=0,v2=0,i,p1,p2;while (v1<3&&v2<3){cout<<"请输入两个小孩的划拳值,1代表石头,2代表剪刀,3代表布。

"<<endl;cin>>p1>>p2;switch (p1){case 1:cout<<"石头";break;case 2:cout<<"剪刀";break;case 3:cout<<"布";break;}cout<<'\t';switch (p2){case 1:cout<<"石头";break;case 2:cout<<"剪刀";break;case 3:cout<<"布";break;}cout<<'\n';if(p1==p2)continue;if(p1==1&&p2==2||p1==2&&p2==3||p1==3&&p2==1) v1++;elsev2++;}if (v1==3)cout<<"小孩1获胜"<<endl;elsecout<<"小孩2获胜"<<endl;return 0;}解决本题的算法思路描述通过修改while的循环条件即可实现五局三胜制只需要统计两个孩子的胜利次数,谁先到达三次即获胜调试过程的记载(包括出现的错误,以及修改过程)由于为书中例题,只需简单修改即可完成,故未出现错误7.改写教材龟兔赛跑程序,要求在指定距离的条件下比赛,其余规则不变。

要求:程序原代码,及运行结果截图。

(直接粘贴在此)#include<iostream>using namespace std;int main(){int s,sw=0,st=0,station=0,sleep=0,run=0;cout<<"输入比赛距离:";cin>>s;while(sw<s&&st<s){if(station==0){run++;sw+=3;st+=9;if(run==10){run=0;if(st>sw)station=1;else;}else;}else{sleep++;sw+=3;if(sleep==30){station=0;sleep=0;}else;}}if(sw>st)cout<<"乌龟胜"<<endl;else if(sw<st)cout<<"兔子胜"<<endl;elsecout<<"平局"<<endl;return 0;}解决本题的算法思路描述1.以时间为循环的控制条件,计算两者走相同路程时谁的时间少,运用累计时间的算法,有一者到达指定路程就停止计时,然后比较两者的路程。

相关文档
最新文档