第一范文网 - 专业文章范例文档资料分享平台

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

来源:用户分享 时间:2025/6/28 7:04:24 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

华中科技大学

《计算机基础与程序设计(C++)》

实验报告

实验名称:第五次上机实验实验学时:4 姓名:学号:班级:电气

实验日期:2017/4/27教师批阅签字: 一、实验目的

?

? ? ? ?

掌握字符型数组、字符型指针和数值型数组的异同。 掌握自定义函数的定义,声明和调用。 掌握函数参数的值传递和地址传递的区别。 掌握递归算法的意义。

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

二、实验内容 1.阅读程序

1)#include

#include using namespace std; int main()

{ int a=10, *p=&a; char ch=’a’, *q=&ch; char str[ ]=”abcd”,*qq=str; cout<<*p<

}

运行上述的程序,并解释每个输出结果。

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

3.指针变量*qq指向数组str的首地址,故只输出首个数据 4.因为a的类型为int,所以输出了a的地址

5.有一个元素的字符数组,没有\\0,所以直接输出时不能停止,只能输出乱码,而字符串可以直接输出是因为它会自动添加\\0,输出时遇到\\0停止,所以可以正常输出;

6.用字符数组给指针初始化,所以qq相当于str,而字符数组可以整体输出

2)#include

#include using namespace std; int main() { int age ;

char name[11]; cin>>age;

cin.getline(name,11); cout<

运行上述的程序,其结果是否正确,如不确请修改正确,并解释原因。 错误:1.cin>>age后面的分号为中文

2.cin.getline会将输入的回车作为其结束的标志,故直接跳过了输入字符数组这一步骤。只需要用cin.get吸收这个回车即可。 修改后的程序: #include #include using namespace std; int main() { int age ;

char name[11]; cin>>age; cin.get();

cin.getline(name,11); cout<

3)#include

#include using namespace std; int main( ) { char rstr[10 ]=\ char * p=rstr, *q=dstr; strcpy(dstr,rstr);

cout<<\输出字符串rstr:\cout<<\输出字符串dstr:\

cout<<\输出字符串p:\cout<<\输出字符串q:\ return 0; }

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

int main( ) { char *rstr=\ strcpy(dstr,rstr);

cout<<\输出字符串rstr:\ cout<<\输出字符串dstr:\ return 0; }

上述程序的功能是将字符串rstr复制到目标串dstr中,运行该程序结果是否正确,如不正确请修改正确,并解释原因。

原程序的结果:

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

第二个程序:

此程序无法运行,原因是指针*rstr和*dstr未指向安全的位置。更改会使程序无法运行。 修改:

#include #include using namespace std; int main( ) { char a[10]=\ char *rstr=a, *dstr=b; strcpy(dstr,rstr);

cout<<\输出字符串rstr:\ cout<<\输出字符串dstr:\ return 0; }

解释:

将指针指向安全的位置即可。

2. 编程题

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

1) 程序原代码。(直接粘贴在此)

#include using namespace std; int gys (int,int); int gbs (int,int); int main( ) {

int a,b;

cout<<\请输入两个正整数\ cin>>a>>b;

cout<<\最大公约数为\ cout<<\最小公倍数为\ return 0; }

int gys (int a,int b) {

int i,n,m; if (a>=b) n=a; else n=b;

for(i=2;i<=n;i++) {

搜索更多关于: 华中科技大学c++第5次上机作业 的文档
华中科技大学c++第5次上机作业.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c1f19s6zj1p8uhsm07tfq670et7c26i0178u_1.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top