华中科技大学c++第4次上机作业
华中科技大学 类的上机答案
第四章上机第一套第一题: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语言程序设计
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++第4次上机作业
华中科技大学c++第4次上机作业华中科技大学c++第4次上机作业科技大学《计算机基础与程序设计(C++)》实验报告实验名称:第四次上机实验实验学时:4姓名:学号:班级:电气实验日期:xx、4、13 教师批阅签字:一、实验目的l 掌握一维数组的定义、输入、输出和基本操作。
l 掌握二维数组的定义、输入、输出和基本操作。
l 掌握字符串的存储和访问。
l 使用数组处理解决实际问题的能力。
l 动态数组的访问二、实验内容1、阅读程序1)#include #includeusing namespace std;int main(){ int n=5; int i,a[n];for(i=0;i<n;i++)< p="">{ cin>>a[i]; cout<<="" p="" }return="">改正其中的错误,并解释错误原因。
错误:1、i后面的逗号为中文。
2、数组长度不能用变量表示。
修改后的程序:#include#includeusing namespace std;intmain(){ int n=5; int i,a[5]; for(i=0;i<n;i++)< p="">{ cin>>a[i]; cout<<="" p="" }return="">#includeusing namespace std;intmain(){ int i,a[5]={0,1,2,3,4}; for(i=0;i<=5;i++) cout<<="">确,如不确请修改正确,并解释原因。
错误:1、定义变量时的逗号为中文。
2、i最大值为4。
正确的程序:#include#includeusing namespace std;intmain(){ int i,a[5]={0,1,2,3,4}; for(i=0;i<=4;i++) cout<using namespace std;int main( ){charrstr[10 ]="abcdefgh",dstr[10];int i; for(i=0;rstr[i]!='\0'; i++)//循环条件可以写成 rstr[i]!=0; 或 rstrdstr[i]=rstr[i]; cout<<"输出字符串dstr:"<<dstr<<="" p="">否正确,如不正确请修改正确,并解释原因。
华科历年上机真题以及解答part4
07年的华科招收研究生上机试题一、编写一个程序输入一个5X6的矩阵存储并输出,并且求出每行的最大值和每行的总和要求把每行总和放入每行最大值的位置,最后把结果矩阵,每行最大值及其原下标及其总和输出。
#include<stdio.h>#include<stdlib.h>int getMat(int a[5][6],int n,int m){int i;int j;for (i=0;i<n;i++){for(j=0;j<m;j++){scanf("%d",&a[i][j]);}}return 0;}int getMax(int a[5][6],int n,int m,int b[5],int c[5],int d[5],int sum[5]){int i;int j;for(i=0;i<n;i++){b[i]=0;c[i]=0;d[i]=0;sum[i]=0;}for(i=0;i<n;i++){int max=a[i][0];int col=0;int r=0;for(j=0;j<m;j++){sum[i]+=a[i][j];if(max<a[i][j])max=a[i][j];r=i;col=j;}b[i]=max;c[i]=r;d[i]=col;}for(i=0;i<n;i++){a[c[i]][d[i]]=sum[i];}return 0;}void displayMat(int a[5][6]){int i;int j;for (i=0;i<5;i++){printf("\n");for(j=0;j<6;j++){printf("%d ",a[i][j]);}}printf("\n");}{int a[5][6];getMat(a,5,6);int c[5],d[5],b[5],sum[5];getMax(a,5,6,b,c,d,sum);printf("每行最大值:\n");for (int i=0;i<5;i++){printf("第%d行:\n最大值:%d\n列:%d\n和:%d\n",i+1,b[i],d[i],sum[i]);}printf("结果矩阵:\n");displayMat(a);return 0;}二、编写程序判断输入的任意字符,任意长度的字符串是否回文(顺读,逆读均相同),最后输出原字符串和判断结果。
大学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. 编写一个函数,用来计算从键盘上输入的整数的阶乘。
c 华科第四次作业讲解
华中科技大学《计算机基础与程序设计(C++)》实验报告实验名称:第四次上机实验实验学时:系别:专业:班级:姓名:马乾清学号:U201511417实验日期:教师批阅签字:一、实验内容1.编程用随机函数产生10 个互不相同的两位整数存放到一维数组中,并输出其中的素数。
2.编程将一组数据从大到小排序后输出,要求显示每个元素及它们在原数组中的下标。
3.编程输入10 个字符到一维字符数组s 中,将字符串逆序输出。
4.编写程序将4 阶方阵转置。
如下所示:5.编程输出10 行的杨辉三角形。
(使用二维数组并利用每个系数等于其上两系数之和。
)6.将一个字符串插入另一个字符串的指定位置。
7.现有10 个学生,期终考试有5 门课程。
求每个学生总成绩、平均成绩,并按总成绩高分到低分输出。
8.把有序的两个数组a 和b 合并,要求合并后的数组依然有序。
分析:两个数组合并时,可为每个数组安排一个指针,从第一个元素开始比较两个数组中对应的元素,将小的取出,顺序放入新的数组中;取出所指元素的指针,后移再比较,依次类推,直到其中一个数组的元素已全部放入新数组中,再把另一数组余下的元素全部顺序放入新数组中即可。
9.现有5 个小朋友编号为1,2,3,4,5,他们按自己的编号顺序围坐在一张圆桌旁,身上都有若干个糖果,现在做一个分糖果游戏。
从1 号小朋友开始,将他的糖果均分三份(如果有多余的,则将多余的糖果吃掉),自己留一份,其余两份分给相邻的两个小朋友。
接着2号、3 号、4 号、5 号小朋友也这如果做。
问一轮后,每个小朋友手上分别有多少糖果。
10.从键盘输入2 个字符串,45120判断其中较短的串是否是另一个串的子字符串。
11.修改例5.23 ,将其升序排序,然后折半查找是否有查找的书。
二、算法说明(用文字说明)1、①先用随即函数产生10个随机数②再用循环将这10个数放到一个数组中③最后用循环对这个数组中的每个元素判定其是否是素数,并将素数输出。
C语言上机实验
实验一(第1章实验)实验目的:1.掌握运行C语言程序的全过程。
2.熟悉编译环境。
3.初步熟悉C语言程序的语法规定。
4.了解简单函数的使用方法。
实验内容:1.编程且上机运行:求3个整数的和。
2.编程且上机运行:求2个数的和、差、积和商。
3.编程且上机运行:输入3个数,求最大值。
4.编程且上机运行:输入圆的半径,求圆的面积和周长。
5.在屏幕上输出:“hello world!”实验结果:实验二(第3章实验)1.实验目的:理解C语言的类型系统。
实验内容:写程序测试数据-2在类型char,int,unsigned int,long int,unsigned long int 中存储情况。
实验过程:实验结果:参见各种类型的存储实现描述。
2.实验目的:了解混合类型计算中类型的转换规则。
实验内容:写程序测试多种类型数据一起运算时类型的转换及表达式结果的类型。
注意unsigned int和int数据运算时类型转换的方向。
实验过程:/** 类型转换问题* 试问下面两个表达式等价吗?*/#include <stdio.h>#include <stdlib.h>int main() {unsigned int ui,uj;ui = 1;uj = 2;if (ui < uj)printf("\n%u < %u is true !\n", ui, uj);elseprintf("\n%u < %u is false !\n", ui, uj);if (ui - uj < 0)printf("\n%u - %u <0 is true !\n", ui, uj);elseprintf("\n%u - %u <0 is false !\n", ui, uj);system("pause");return 0;}实验结果:参见类型转换规则。
c本科四试题及答案
c本科四试题及答案试题一:1. 在计算机科学中,什么是算法?请给出一个具体的例子。
2. 请简要解释什么是二进制,为什么计算机使用二进制表示数据。
3. 描述一下计算机内存的工作原理。
4. 请解释什么是操作系统,并列出至少三个常见的操作系统。
5. 什么是数据库?请列举三种常见的数据库软件。
答案一:1. 算法是一系列解决问题的规则和步骤。
例如,冒泡排序是一种常见的排序算法,它通过比较相邻的元素并交换它们的位置来将一个数组按升序排列。
2. 二进制是一种使用0和1表示数值的计算机数制系统。
计算机使用二进制表示数据是因为电子设备可以更好地处理和存储二进制信号。
3. 计算机内存是用于存储和读取数据的一块物理硬件。
它工作原理是将数据存储在内存单元中,每个内存单元都有一个唯一的地址,可以通过地址来读取和写入数据。
4. 操作系统是管理计算机硬件和软件资源的程序。
常见的操作系统包括Windows、Mac OS和Linux。
5. 数据库是用于存储和管理数据的软件系统。
常见的数据库软件包括MySQL、Oracle和Microsoft SQL Server。
试题二:1. 什么是物联网?请列举三个应用场景。
2. 描述一下人工智能的概念以及它在现实世界中的应用。
3. 请简要解释什么是区块链技术,并说明其优势。
4. 什么是云计算?列举三个云计算的实际应用。
5. 请列举三种常见的网络安全威胁,并简要描述每种威胁的特点。
答案二:1. 物联网是指将传感器、设备、网络和计算系统连接起来,实现设备间的信息交互和智能控制的网络。
应用场景包括智能家居、智能交通系统和智能农业等。
2. 人工智能是指通过计算机模拟人类智能的能力。
它在现实世界中的应用包括语音助手(如Siri)、无人驾驶汽车和人脸识别技术等。
3. 区块链技术是一种分布式数据库技术,通过将数据分散存储在多个计算机节点上,并使用密码学技术保护数据安全。
其优势包括去中心化、安全性高和透明度等。
c语言第四次上机作业参考答案
第四次上机作业参考答案:1.数组转置在主函数中定义一个n(1<=n<=6)维方阵,并从键盘读入数组元素;编写函数transpose(a,n)实现数组a转置;在主函数中输出转置后的方阵。
例:输入41 2 3 4 输出 1 5 9 135 6 7 8 2 6 10 149 10 11 12 3 7 11 1513 14 15 16 4 8 12 16#include <stdio.h>#define N 6void transpose(int a[][N],int n);void main( ){ int n,i,j;int a[N][N];printf("Input n(n<=6):");scanf("%d",&n);printf("Input the array:\n");for(i=0;i<n;i++)for(j=0;j<n;j++)scanf("%d",&a[i][j]);printf("Display the array:\n");for(i=0;i<n;i++){ for(j=0;j<n;j++)printf("%-4d",a[i][j]);printf("\n");}transpose(a,n);printf("Display the transposed array:\n");for(i=0;i<n;i++){ for(j=0;j<n;j++)printf("%-4d",a[i][j]);printf("\n");}}void transpose(int a[][N],int n){int i,j,t;for(i=0;i<n;i++)for(j=0;j<i;j++){ t=a[i][j];a[i][j]=a[j][i];a[j][i]=t;}2.学生信息编写4个函数实现下列功能:(1)函数input() 输入20个学生姓名和高考总分;(2)函数sort() 按高考总分从高到低的顺序排序,姓名顺序也随之调整;(3)函数display()显示学生姓名及其高考总分;(4)在主函数中输入一个姓名,编写函数search() 用顺序查找方法找出该学生。
C语言程序设计 上机实验指导与习题 参考答案(第四版)
C 语言程序设计上机实验指导与习题参考答案(第四版)(学生改编)实验 1:C语言程序初步一、实验目的(1)了解所用的计算机系统的基本操作方法,学会独立使用该系统。
(2)了解在该系统上如何编辑、编译、连接和运行一个 C程序。
(3)通过运行简单的 C 程序,初步了解 C程序的特点。
(4)在教师的指导下,学会使用在线评判系统。
二、实验内容1.运行第一个 C 程序题目:ThefirstCProgram将下列程序输入visualc ,编译、连接和运行该程序。
includequotstdio.hquotmain printfquotThefirstCProgramnquot具体操作步骤(1)在编辑窗口中输入程序。
(2)保存程序,取名为a1.c。
(3)按照第一章中介绍的方法,编译、连接和运行程序。
,则该题完成。
4按照第三章介绍的方法,将代码提交到在线评判系统,系统返回“通过”2.在在线评判系统中提交实现了计算 ab 功能的程序题目 1001:计算ab由键盘输入两个整数,计算并输出两个整数的和。
实现该功能的程序如下,inclu dequotstdio.hquotmain int ab scanfquotddquotampaampbprintfquotdquotab(1)在程序编辑窗口中输入程序。
(2)保存程序,取名为a2.c。
(3)按照前二章中介绍的方法,编译、连接和运行程序。
(4)在程序运行过程中,输入 15 30↙↙表示输入回车符(5)如果看到如下输出结果,则表明1530 的结果正确,如果得不到如下结果,则需检查并更正程序。
45(6)按照第三章中介绍的方法进入在线评判系统。
(7)显示题目列表,点击题号为 1001,题名为“计算ab”的题目。
(8)查看完题目要求后,点击页面下端的“sumbit” ,参照第二章提交程序的方法提交程序a2.c。
(9)查看评判结果,如果得到“accepted”则该题通过,否则返回第一步检查程序是否正确。
华中科技大学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),并输出计算结果。
第四次上机实验华中科技大学c++程序设计上机作业
1.编写程序,根据用户输入的宽和高的数目,显示一个由"*"号组成的空心矩形函数void rectangle(intw,int h)用于打印该矩形,w为矩形的宽,h为矩形的高运行结果参考:#include<iostream>#include<iomanip>using namespace std;void rectangle(intw,int h){inti,j,d;for(i=1;i<=w;i++){cout<<'*';}cout<<endl;for(j=1;j<=(h-2);j++){cout<<'*'<<setw(w-1)<<'*'<<endl;}for(d=1;d<=w;d++){cout<<'*';}cout<<endl;}int main(){inta,b;cout<<"请输入矩形的长和高(要求使用正整数,中间使用空格隔开)";cin>>a>>b;rectangle(a,b);}2. 使用指针编写一个对整型数组进行冒泡排序的函数void bubbleup(int *ptr, intcount),ptr为指向数组的指针,count为数组实际长度。
并在主函数调用该函数完成对数组的冒泡排序。
#include<iostream>using namespace std;voidbubbleup(int *ptr, int count){for(inti=0;i<count;i++)for(int j=count;j>i;j--)if(*(ptr+j-1)<*(ptr+j)){int a=*(ptr+j-1);*(ptr+j-1)=*(ptr+j);*(ptr+j)=a;}}int main(){inta,n;cin>>n;int q[200];for(int x=0;x<n;x++)cin>>q[x];bubbleup(q,n);for(int s=0;s<n;s++)cout<<q[n-s-1]<<'';cout<<endl;return 0;}3.范例:求一个3×4 矩阵中的最大元素,将求矩阵中的最大元素的过程定义为一个函数。
C--上机作业答案讲解
第一章作业答案.1。
编写程序,将华氏温度转化为摄氏温度:公式:C=(5/9)*(F—32)程序代码:#include〈iostream>using namespace std;void main(){float F,C;cout〈<”Please input F:”;cin〉>F;C=5*(F-32)/9。
0;cout<<”C="<〈C<〈endl;}运行结果:2。
编写程序,输入圆柱体的半径r和高h,计算圆柱体的体积.程序代码:#include〈iostream〉using namespace std;#define PI 3。
14159void main(){float r,h,v;cout<<”Please input r h:”;cin〉>r>〉h;v=PI*r*r*h;cout〈<”v="〈<v〈<endl;}运行结果:3.输入三角形的三条边a,b,c,利用海伦公式计算三角形的面积area。
若则area=程序代码:#include〈iostream〉#include〈math。
h〉using namespace std;void main(){float a,b,c,p,area;cout〈〈"Please input a b c:";cin>〉a〉>b>>c;if((a+b〉c)&&(b+c>a)&&(a+c〉b)){p=(a+b+c)/2.0;area=sqrt(p*(p—a)*(p—b)*(p-c));cout<<"area=”〈<area<〈endl;}else cout〈<"input error!"〈<endl;运行结果:4。
输入a,b,c的值,求一元二次方程:的解。
计算机绘图C-第四次作业资料
一、单项选择题(只有一个选项正确,共17道小题)1. AutoCAD 中的(中的( ),不但可以消隐、着色,还具有体积、质量等物理属性。
(A) 线框模型线框模型 (B) 面模型面模型 (C) 实体模型实体模型 (D) 前三种模型都可前三种模型都可 你选择的答案: C [正确] 正确答案:C 解答参考:2. 2. 若要使坐标系图标始终在绘图窗口的左下角显示,应选取图标Ucsicon 命令的(命令的( )选项。
)选项。
(A) 开ON (B) 全部A (C) 非原点N (D) 原点OR 你选择的答案: C [正确] 正确答案:C 解答参考:3. 使用(使用( )命令可以控制坐标系图标的显示样式、大小、可见性以及在绘图窗口中的位置。
(A) Ucs (B) 动态Ucs (C) Zoom (D) Ucsicon你选择的答案: D [正确] 正确答案:D 解答参考:4. 世界坐标系原点的位置,将(世界坐标系原点的位置,将( )。
)。
(A) 始终为(0,0,0)点)点 (B) 由Ucs 命令设定命令设定 (C) 由图形界限Limits 命令设定命令设定 (D) 由视图缩放Zoom 命令设定 你选择的答案: A [正确] 正确答案:A 解答参考:5. 使用UCS 命令的“三点”选项建立新的UCS 时,其中第2点确定(点确定( )。
)。
(A) 新原点新原点(B) X轴的正向轴的正向(C) Y轴的正向轴的正向(D) 以上三项都有可能以上三项都有可能你选择的答案: B [正确]正确答案:B解答参考:6. 下列(坐标平面。
下列( )平面为世界坐标系WCS的XY坐标平面。
(A) 主视图主视图(B) 俯视图俯视图(C) 左视图左视图(D) 右视图你选择的答案: B [正确]正确答案:B解答参考:7. 下图中左侧的坐标系图标是通过()操作后,得到右侧的结果。
下图中左侧的坐标系图标是通过( )操作后,得到右侧的结果。
(A) 绕X轴旋转-90(B) 绕X轴旋转90(C) 绕Y轴旋转-90(D) 绕Y轴旋转90你选择的答案: B [正确]正确答案:B解答参考:8. 下图中左侧的坐标系图标是通过()操作后,得到右侧的结果。
第四次上机作业一
第四次上机作业一第四次上机作业循环4.1 求1+1/2+1/3+……+1/n程序填空不要改变与输入输出有关的语句。
输入一个正整数reeat (0<reeat<10)做reeat 次下列运算:读入 1 个正整数n(n<=50)计算并输出1+1/2+1/3+……+1/n (保留3 位小数)。
例:括号内是说明输入2 (reeat=2)210输出1.5002.9291#include<stdio.h>void main(){int ri,reeat;float sum;scanf("%d",&am;reeat);for(ri=1;ri<=reeat;ri++){scanf("%d",&am;n);sum=0;for(i=1;i<=n;i++)sum=sum+1.0/i;rintf("%.3f\n",sum);}}4.2 求n!程序填空不要改变与输入输出有关的语句。
输入一个正整数reeat (0<reeat<10)做reeat 次下列运算:读入1 个正整数n (n<=50)计算并输出n! 。
例:括号内是说明输入3 (reeat=3)1105136288001202#include<stdio.h>void main(){int ri,reeat;int i,n;double fact;scanf("%d",&am;reeat);for(ri=1;ri<=reeat;ri++){scanf("%d",&am;n);fact=1;for(i=1;i<=n;i++)fact*=i;rintf("%.0f\n",fact);}}4.3 求x 的n 次幂程序填空不要改变与输入输出有关的语句。
C上机实验4含答案及代码
特别注意事项:1,文件名“_王小小_数学0801_实验1.doc”中的实验1指的是第几次上机实验,与“实验指导书”中的实验几没有关系;2,文件名“_王小小_数学0801_实验1.doc”中的doc是文件扩展名,请注意不要提交如“*******.doc.doc”的文件;3,上机实验作业一律以word形式提交;4,若上机实验有多个作业,请按照下列加粗方式给每个作业命名,如:实验1_1,实验1_25,实验作业的word文件的页眉不可少,请每次注意修改;6,每个实验作业均要给出比较详细的程序说明,且程序说明位于程序之后。
程序说明是特别重点考察的部分,请按照你的理解进行撰写;7,该部分“特别注意事项”可以随同作业一并提交,请提交作业前进行对照。
特别注意事项:1,文件名“_王小小_数学0801_实验1.doc”中的实验1指的是第几次上机实验,与“实验指导书”中的实验几没有关系;2,文件名“_王小小_数学0801_实验1.doc”中的doc是文件扩展名,请注意不要提交如“*******.doc.doc”的文件;3,上机实验作业一律以word形式提交;4,若上机实验有多个作业,请按照下列加粗方式给每个作业命名,如:实验1_1,实验1_25,实验作业的word文件的页眉不可少,请每次注意修改;6,每个实验作业均要给出比较详细的程序说明,且程序说明位于程序之后。
程序说明是特别重点考察的部分,请按照你的理解进行撰写;7,该部分“特别注意事项”可以随同作业一并提交,请提交作业前进行对照。
实验4_1_1/*************************************************使用全局变量,求两正整数的最大公约数和最小公倍数*************************************************/#include <iostream>using namespace std;int maxgy;int maxgb;void fun(int a,int b){int t,i;if(a<b){t=a;a=b;b=t;} // 求的a为最大数i=b;while(i>=1){if(b%i==0 && a%i==0){maxgy=i;break;}i--;}i=a;while(i>=a){if(i%a==0 && i%b==0){ maxgb=i;break;}i++;}}void main (){ int x,y;cout<<"input data x,y:";cin>>x>>y;fun (x,y);cout<<"该两个数的最大公约数是:"<<maxgy<<endl;cout<<"该两个数的最大公倍数是:"<<maxgb<<endl;}程序说明:将两正整数的最大公约数和最小公倍数都设为全局变量,先做好函数的声明和定义,再用main主函数调用。
华中科技大学标准C语言程序设计上机试题答案及报告格式
《标准C语言程序设计》上机报告实验七指针及函数结构体初步程序设计专业:班级:学号:姓名:完成日期:1一、实验目的1.进一步理解指针的概念,掌握指针变量间接地址访问的本质;2.掌握利用指向数组的指针变量表示一维数组元素及元素地址的方法;3.掌握利用指向二维数组的行指针变量表示二维数组元素及其地址的方法;4.掌握字符串的指针和指向字符串的指针变量;5.掌握指针数组和二级指针;6.熟悉通过动态内存分配实现动态数组,并体会指针在其中的作用。
7.理解函数定义、原型和调用,掌握函数参数的传递(传值、传指针和传引用)二、实验内容及要求(鼓励一题多解)1.深入理解《上机实践训练教程》2.6实验六案例示范和有关概念文字描述中的知识点,给出你的理解。
定义指针时一定要给指针分配好应有的类型和内存空间,防止出现野指针,造成程序不能运行甚至系统崩溃。
数组名不能作为左值,它实际上是一个常量指针,不能通过str=“comrade”给字符数组str赋值。
2.输入每个学生的姓名和线性代数、通信原理和C语言课程成绩,统计每人的平均值,并按平均值降序排列,输出排列后的名次、姓名、课程名(成绩)和平均值。
(注:平均值相同者按姓名的字母表顺序排列)(要求用结构体数据类型实现)#include <stdio.h>#include <math.h>#include <stdlib.h>#define N 3struct student{int rank;char name[20];double score[3];double aver;};void input(struct student *p,int n);void sort(struct student *p,int n);double average (struct student *p,int n);void output(struct student *p,int n,double aver);void main(){struct student stu[N];double aver;input(stu,N);sort(stu,N);aver=average(stu,N);output(stu,N,aver);}void input(struct student *p,int n){int i,j;double a;char str[20];for(i=0;i<n;i++,p++){printf("请输入考生姓名:\n");gets(p->name);printf("请依次输入学生线性代数、通信原理、c语言分数:\n");for(a=0,j=0;j<3;j++){gets(str);p->score[j]=atof(str);a+=p->score[j];}p->aver=a/3;}return;}void sort(struct student *p,int n){struct student temp;int i,j;for(i=0;i<n-1;i++){for(j=0;j<n-1-i;j++){if(p[j].aver<p[j+1].aver){temp=p[j];p[j]=p[j+1];p[j+1]=temp;}}}}double average(struct student *p,int n){int i;double temp;for(i=0,temp=0;i<n;i++)temp=temp+p[i].aver;return temp/n;}void output(struct student *p,int n,double aver){int i;printf("姓名线性代数通信原理c语言平均分\n");printf("-----------------------------------------\n");for(i=0;i<n;i++){printf("%-10s%8.2lf%8.2lf%8.2lf%8.2lf\n",p[i].name,p[i].score[0],p[i].score[1],p[i].score[2],p[i].aver);}}运行结果:3.利用指向指针的指针方法对N个整数排序并输出。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
华中科技大学c++第4次上机作业科技大学《计算机基础与程序设计(C++)》实验报告实验名称:第四次上机实验实验学时:4姓名:学号:班级:电气实验日期:xx、4、13 教师批阅签字:一、实验目的l 掌握一维数组的定义、输入、输出和基本操作。
l 掌握二维数组的定义、输入、输出和基本操作。
l 掌握字符串的存储和访问。
l 使用数组处理解决实际问题的能力。
l 动态数组的访问二、实验内容1、阅读程序1)#include <iostream>#include<cmath>using namespace std;int main(){ int n=5; int i,a[n];for(i=0;i<n;i++){ cin>>a[i]; cout<<a[i]; }return 0;}运行上述的程序,改正其中的错误,并解释错误原因。
错误:1、i后面的逗号为中文。
2、数组长度不能用变量表示。
修改后的程序:#include<iostream>#include<cmath>using namespace std;intmain(){ int n=5; int i,a[5]; for(i=0;i<n;i++){ cin>>a[i]; cout<<a[i]; }return 0;}2)#include<iostream>#include<cmath>using namespace std;intmain(){ int i,a[5]={0,1,2,3,4}; for(i=0;i<=5;i++) cout<<a[i];return 0; } 运行上述的程序,其结果是否正确,如不确请修改正确,并解释原因。
错误:1、定义变量时的逗号为中文。
2、i最大值为4。
正确的程序:#include<iostream>#include<cmath>using namespace std;intmain(){ int i,a[5]={0,1,2,3,4}; for(i=0;i<=4;i++) cout<<a[i];return 0; }3) #include <iostream>using namespace std;int main( ){charrstr[10 ]="abcdefgh",dstr[10];int i; for(i=0;rstr[i]!='\0'; i++)//循环条件可以写成 rstr[i]!=0; 或 rstrdstr[i]=rstr[i]; cout<<"输出字符串dstr:"<<dstr<<endl;return 0;}上述程序的功能是将字符串rstr复制到目标串dstr中,运行该程序结果是否正确,如不正确请修改正确,并解释原因。
不正确。
原因:在dstr[10]数组中,未说明在何时dstr[10]输出结束程序默认输出到最后,导致出现问题。
修改后的程序:#include<iostream>using namespace std;int main( ){charrstr[10 ]="abcdefgh",dstr[10];int i; for(i=0;rstr[i]!='\0'; i++)dstr[i]=rstr[i]; dstr[i+1]='\0'; cout<<"输出字符串dstr:"<<dstr<<endl;return 0;}程序截图:4) #include<iostream>using namespace std;int main( ){ char name1[ ]={'a','b','c','d'}; charname2[ ]=”abcd”; for(i=0;i<4;i++)cout<<name1[i]; cout<<endl; cout<<name1<<endl;cout<<name2<<endl; return 0;}运行上述程序,比较三种输出的异同,并解释原因。
①程序存在错误未定义i的类型。
②原因:第一个输出:输出了数组的前四个字符,即abcd、第二个输出:输出了数组的前四个字符后没有结束的标志故继续输出后续的内容,由于未进行定义故输出的为如图所示第三个输出:name2[]在定义时前四个字符为abcd,第五个字符为\0结束标志,如图所示故输出全部时只会输出结束标志之前的内容。
5)#include<iostream>using namespace std;int main( ){ int a=10, b=20,*p=&a,*q; cout<<a<<endl;cout<<*p<<endl; *p=b; cout<<a<<endl; cout<<*p<<endl; *q=b; cout<<b<<endl; cout<<*q<<endl;return 0;}编译调试上述程序,如有错误请修改,并解释原因。
编译未出现错误但程序会终止原因:*q初始时未定义其位置,所以*q可能为程序关键位置,修改后会导致程序异常,只能执行这个语句之前的语句。
改正后的程序:#include <iostream>using namespace std;int main( ) { int a=10, b=20,c,*p=&a,*q=&c; cout<<a<<endl;cout<<*p<<endl; *p=b; cout<<a<<endl; cout<<*p<<endl; *q=b; cout<<b<<endl; cout<<*q<<endl;return 0;}5)inta[5]={1,2,3,4,5}; int *p=a; 在上述语句的基础上,请用5种方式输出数组a的各元素。
参考教材P142页#include<iostream>using namespace std;int main( ){ int a[5]={1,2,3,4,5}; int *p=a,i; for (i=0;i<=4;i++) { cout<<a[i]; } cout<<endl; for (i=0;i<=4;i++)cout<<*(p+i); cout<<endl; for (i=0;i<=4;i++)cout<<*(a+i); cout<<endl; for (i=0;i<=4;i++)cout<<p[i]; cout<<endl; for (i=0;i<=4;i++)cout<<*(p++); cout<<endl; return 0;}2、编程题1)定义包含10 个元素的一维数组,输入输出各元素的值,然后求出最大值将其与第一个数交换位置后再输出。
要求:l 程序原代码。
(直接粘贴在此)#include<iostream>using namespace std;int main( ){ int a[10],i,j,c,flag;cout<<"请输入数组的各个元素的值"<<endl;for (i=0;i<=9;i++)cin>>a[i];cout<<endl;for(i=0;i<=9;i++)cout<<a[i]<<' ';cout<<endl;for(i=0;i<=9;i++){flag=1;for(j=0;j<=9;j++){if(a[i]<a[j])flag=0;}if(flag){c=a[0];a[0]=a[i];a[i]=c;}}for (i=0;i<=9;i++)cout<<a[i]<<' ';cout<<endl;}l 解决本题的算法思路描述定义数组,输入输出数组。
通过for循环找出最大的数并进行交换输出交换后的数组l 调试过程的记载(包括出现的错误,以及修改过程)寻找最大的数值时出现错误通过借助一个flag变量最终解决l 归纳本题应用的知识点或算法For循环一维数组2)编写一个程序,定义5 行4 列二维数组,并对前4 行4 列的元素赋值,计算二维数组前4 行各列之和,且将每列之和放于各列最后一行的位置,然后输出该二维数组(按行列的格式输出)。
要求:l 程序原代码。
(直接粘贴在此)#include<iostream>using namespace std;int main( ){ int a[5][4],i,j;for (i=0;i<=3;i++)for(j=0;j<=3;j++)cin>>a[i][j];for(j=0;j<=3;j++)a[4][j]=a[0][ j]+a[1][j]+a[2][j]+a[3][j];for (i=0;i<=4;i++)for(j=0;j<=3;j++){cout<<a[i][j]<<'';if(j==3)cout<<endl;}return 0;}l 解决本题的算法思路描述定义二维数组求各个列的和输出二维数组的结果l 调试过程的记载(包括出现的错误,以及修改?)for语句循环条件错误l 归纳本题应用的知识点或算法For循环二维数组3)编程输出10 行的杨辉三角形。
(使用二维数组并利用每个系数等于其上两系数之和,要求按等腰三角形的格式输出)要求:l 程序原代码。
(直接粘贴在此)#include <iostream>#include<iomanip>using namespace std;int main(){int a[10][10];int i,j,k;for(i=0;i<10;i++){a[i][0]=1; a[i][i]=1;}for(i=2;i<10;i++)for(j=1;j<i;j++)a[i][j]=a[i-1][j-1]+a[i-1][j];for(i=0;i<10;i++){ for(k=i;k<=9;k++)cout<<"";for(j=0;j<=i;j++){cout<<setw(4)<<a[i][j];}cout<<endl;}r eturn 0; }l 解决本题的算法思路描述定义二维数组把值为1的数字确定运用杨辉三角的相关规律进行计算调整输出格式l 调试过程的记载(包括出现的错误,以及修改)最开始输出格式不对,调整输出的空格数量后正常l 归纳本题应用的知识点或算法二维数组For语句循环Setw()的用法4)编程将一个字符串插入另一个字符串的指定位置。