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

合集下载

华中科技大学-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++第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="">否正确,如不正确请修改正确,并解释原因。

大学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. 编写一个函数,用来计算从键盘上输入的整数的阶乘。

华中科技大学标准C语言程序设计上机试题、答案及报告格式

华中科技大学标准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个整数排序并输出。

c语言上机实验题及参考答案

c语言上机实验题及参考答案
4、编写程序,求1-3+5-7+...-99+101的值。(文件名为44.c。备注:程序运行结果为51,关于符号转换的问题可以参考教科书上的例6.6)
5、两个乒乓球队进行比赛,各出3人,甲队为A,B,C 3人,乙队为X,Y,Z 3人。已抽签决定比赛名单。有人向队员打听比赛的名单。A说他不和X比,C说他不和X、Z比。请编程序找出3队赛手的名单。(C语言源程序文件名为45.c,本程序运行结果:A--Z B--X C--Y)
2 14 14
5 10 15
8 6 16
11 2 17)
2、编写程序:输入两个正整数,求其最大公约数和最小公倍数。(如输入12和8,则最大公约数为4,最小公倍数为24)(C语言源程序文件名为42.c。要求求最大公约数用欧几里得的辗转相除法实现)。
3、编写程序实现以下功能:输入一个正整数,打印出它是否素数。(C语言源程序文件名为43.c)
例如:有定义int a=3;执行输出语句:printf(“a=%3d”,a);则输出结果显示为:a= 3(3左边有两个空格)
n(代表一个正整数)
对实数,表示输出n位小数。
例如:有定义float x=1.2;执行输出语句:printf(“x=%6.2f”,x);则输出结果显示为:x= 1.20(数字左边有两个空格)。
三、附加题:
9、编程实现:从键盘上输入一个三位正整数m,输出将m的个位,十位,百位反序而成的三位数(例如:输入m的值123,则输出m的值为321)(要求:文件名为15.c,提示:可用算术运算符“/”和“%”先分离出m的各个位数,再重新组合成新的数,例如用表达式“123%10”就能求出123的个位数3)。
三、实验题目:
if语句基本形式:if(条件){语句一;}

大连理工c语言第五次上机作业参考答案

大连理工c语言第五次上机作业参考答案

第五次上机作业:(请用指针实现)1.数据移位有n(n<=10)个整数,使前面各数顺序向后移m(m<=n)个位置,最后m 个数变成最前面的m个数,如图所示。

编写函数shift(a,n,m)实现上述功能,在主函数中输入n个整数和输出调整后的n个数。

SAMPLE OUTPUTnInput n(n<=10):10Input 10 integers:Output the original:Output the shifted:#include <>#define N 10void shift(int a[ ],int n,int m);void main( ){ int i,n,m;int a[N];printf("Input n(n<=10):");scanf("%d",&n);printf("Input %d integers:\n",n);for(i=0;i<n;i++)scanf("%d",a+i);printf("Output the original:\n");for(i=0;i<n;i++)printf("%d ",*(a+i));printf("\n");printf("Input m(m<=%d):",n);scanf("%d",&m);shift(a,n,m);printf("Output the shifted:\n");for(i=0;i<n;i++)printf("%d ",*(a+i));printf("\n");}void shift(int a[ ],int n,int m){ int i,j,t;for(i=0;i<m;i++){ t=a[n-1];for(j=n-2;j>=0;j--)a[j+1]=a[j];a[0]=t;}}2.字符串排序在主函数中输入10个不等长的字符串放入二维字符数组中,编写函数sort()利用指针数组对其排序,在主函数中输出排好序的字符串。

C语言上机实验

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语言上机作业试题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说:他乱说。

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

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

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

华中科技大学《计算机基础与程序设计(C++)》实验报告实验名称:第五次上机实验实验学时:4姓名:学号:班级:电气实验日期:2017/4/27 教师批阅签字:一、实验目的●掌握字符型数组、字符型指针和数值型数组的异同。

●掌握自定义函数的定义,声明和调用。

●掌握函数参数的值传递和地址传递的区别。

●掌握递归算法的意义。

●明确变量的作用域和生存期的意义。

二、实验内容1.阅读程序1)#include <iostream>#include<cmath>using namespace std;int main(){ int a=10, *p=&a;char ch=’a’, *q=&ch;char str[ ]=”abcd”,*qq=str;cout<<*p<<endl;cout<<*q<<endl;cout<<*qq<<endl;cout<<p<<endl;cout<<q<<endl;cout<<qq<<endl;return 0;}运行上述的程序,并解释每个输出结果。

解释:1.指针变量*p指向a的地址,所以直接输出a的值。

2.指针变量*q指向ch的地址,所以输出ch的值。

3.指针变量*qq指向数组str的首地址,故只输出首个数据4.因为a的类型为int,所以输出了a的地址5.有一个元素的字符数组,没有\0,所以直接输出时不能停止,只能输出乱码,而字符串可以直接输出是因为它会自动添加\0,输出时遇到\0停止,所以可以正常输出;6.用字符数组给指针初始化,所以qq相当于str,而字符数组可以整体输出2)#include <iostream>#include<cmath>using namespace std;int main(){ int age ;char name[11];cin>>age;cin.getline(name,11);cout<<age<<endl;cout<<name<<endl;return 0; }运行上述的程序,其结果是否正确,如不确请修改正确,并解释原因。

错误:1.cin>>age后面的分号为中文2.cin.getline会将输入的回车作为其结束的标志,故直接跳过了输入字符数组这一步骤。

只需要用cin.get吸收这个回车即可。

修改后的程序:#include <iostream>#include<cmath>using namespace std;int main(){ int age ;char name[11];cin>>age;cin.get();cin.getline(name,11);cout<<age<<endl;cout<<name<<endl;return 0; }3)#include <iostream>#include <cstring>using namespace std;int main( ){char rstr[10 ]="abcdefgh", dstr[10];char * p=rstr, *q=dstr;strcpy(dstr,rstr);cout<<"输出字符串rstr:"<<rstr<<endl;cout<<"输出字符串dstr:"<<dstr<<endl;cout<<"输出字符串p:"<<p<<endl;cout<<"输出字符串q:"<<q<<endl;return 0;}阅读上述程序并运行,分析其结果。

若将上述程序修改如下,重新运行,结果如何?请解释原因。

int main( ){char *rstr="abcdefgh", *dstr;strcpy(dstr,rstr);cout<<"输出字符串rstr:"<<rstr<<endl;cout<<"输出字符串dstr:"<<dstr<<endl;return 0;}上述程序的功能是将字符串rstr复制到目标串dstr中,运行该程序结果是否正确,如不正确请修改正确,并解释原因。

原程序的结果:Srtcpy将rstr中的数据复制到了dstr中,所以会输出abcdefgh,输出p和q相当于间接输出,也可以输出abcdefgh。

第二个程序:此程序无法运行,原因是指针*rstr和*dstr未指向安全的位置。

更改会使程序无法运行。

修改:#include <iostream>#include <cstring>using namespace std;int main( ){char a[10]="abcdefgh",b[10];char *rstr=a, *dstr=b;strcpy(dstr,rstr);cout<<"输出字符串rstr:"<<rstr<<endl;cout<<"输出字符串dstr:"<<dstr<<endl;return 0;}解释:将指针指向安全的位置即可。

2.编程题1)编写两个函数,分别求两个整数的最大公约数和最小公倍数,在主函数中调用这两个函数,计算两个数的最大公约数和最小公倍数并输出结果。

要求:1)程序原代码。

(直接粘贴在此)#include <iostream>using namespace std;int gys (int,int);int gbs (int,int);int main( ){int a,b;cout<<"请输入两个正整数"<<endl;cin>>a>>b;cout<<"最大公约数为"<<gys(a,b)<<endl;cout<<"最小公倍数为"<<gbs(a,b)<<endl;return 0;}int gys (int a,int b){int i,n,m;if (a>=b)n=a;elsen=b;for(i=2;i<=n;i++){if(a%i==0&&b%i==0)m=i;}return m;}int gbs (int a,int b){int i,n,m,s;if (a>=b)n=a;elsen=b;for(i=2;i<=n;i++){if(a%i==0&&b%i==0)m=i;}s=a*b/m;return s;}2)解决本题的算法思路描述编写计算最小公倍数的函数编写计算最大公约数的函数在主函数中使用这两个函数得出结果3)调试过程的记载(包括出现的错误,以及修改)函数声明方式错误4)归纳本题应用的知识点或算法计算最大公约数和最小公倍数的方法函数的声明与使用2)编写程序随机生成50个100-200之间的随机整数,找出其中的素数。

要求判断素数的功能利用函数实现,在main函数中调用该函数输出所有的素数。

要求:1)程序原代码。

(直接粘贴在此)#include <iostream>#include <cstdlib>#include <ctime>using namespace std;int ss (int);int main( ){int a[50],i,t=0,j;srand(time(0));a[0]=(rand()%100+100);for(i=1;i<50;i++){t=0;a[i]=(rand()%100+100);for(j=0;j<i;j++)if(a[i]==a[j])t=1;if(t==1)i--;}cout<<"生成的50个随机数为:"<<endl; for(i=0;i<50;i++){cout<<a[i]<<" ";if ((i+1)%5==0)cout<<endl;}cout<<"其中的素数为:"<<endl;for(i=0,j=0;i<50;i++){if(ss(a[i])){cout<<a[i]<<" ";j++;if(j%5==0)cout<<endl;}}cout<<endl;return 0;}int ss (int b){int a=1,n;for (n=2;n<b;n++){if (b%n==0){a=0;break;}}return a;}2)解决本题的算法思路描述编写一个求素数的函数主函数中定义一个含50个元素的数组当该变量的值位于100到200之间时,将该变量的值赋给数组中的元素,并与前面所有值进行比较,若重复,则重新赋值。

不断循环,直到数组中的每个数都被赋值输出数组中的各个数,依次用求素数的函数判断该数组中的元素是否为素数,是则输出。

3)调试过程的记载(包括出现的错误,以及修改)编写求素数的函数时,i从0开始,导致循环无法实现。

4)归纳本题应用的知识点或算法For循环,break语句的使用函数的调用生成随机数函数的使用if语句及数组3)编写一个函数实现将一个十六进制整数转换为一个十进制整数。

例如,输入”A2”转换为162。

提示:循环对读入的每个字符转换成对应的十进制数字,比如’1’的值为1,’A‘为10,’F’为15,将转换后得到的数字进行计算处理。

函数的原型可以声明为:int funChange(char s[]); //函数的功能是将s数组存放的字符串转换为十进制数值返回,参数应采用数组名传递方式,即形参数组与实参数组共用同一地址空间。

相关文档
最新文档