华 中 科 技 大 学
《计算机基础与程序设计(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<
cout<
cout<
cout<
cout<
cout<
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
#include
using namespace std;
int main()
{ int age ;
char name[11];
cin>>age ;
cin.getline(name,11);
cout<
cout<
return 0; }
运行上述的程序,其结果是否正确,如不确请修改正确,并解释原因。
错误: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<
cout<
return 0; }
3 ) #include
#include
using namespace std;
int main( )
{
char rstr[10 ]="abcdefgh", dstr[10];
char * p=rstr, *q=dstr;
strcpy(dstr,rstr);
cout<
cout<