一、实验目的
1、掌握函数声明、定义和使用。
2、掌握形参与实参之间的对应关系。
3、掌握函数调用时,形参、实参之间的“值传递”和“地址传递”的区别。
4、掌握函数递归调用的方法。
5、掌握全局变量、局部变量、静态变量的使用方法。
6、掌握指针的使用方法。
二、准备内容
1、实验课前需预习实验内容,并做好实验设计。
2、复习视频及课上所讲授的C++中函数及指针的C++基本知识。
三、实验内容
设计并完成项目五:慕课网站上第五周的编程作业。
四、实验步骤
(一)编程代码
第一题:
#include<iostream>
#include<string.h>
using namespace std;
void mystrrev(char str[])//声明反转函数
{
int len=strlen(str);
int temp;
for (int i=0;i<len/2;i++)//进行循环,交换第一个和最后一个字符,依次。
{
str[len-1-i]=temp;
}
str[len]='\0';//字符串的结束
}
return 0;
}
第二题:
#include<iostream>
using namespace std;
int imax(int array[],int count)//求整形的最大元素
int max=array[0];
for (int i=1;i<count;i++)//进行for循环,然后依次输入array[i]
{
if(array[i]>max)//比较大小,然后比max大的赋值给max
{
max=array[i];
}
}
return max;//max返回主函数储存
}
int imin(int array[],int count)//与上面上面相同
{
int min=array[0];
for (int i=1;i<count;i++)
{
if(array[i]<min)
{
min=array[i];
}
}
return min;
}
int main()
{
int count;
int a[100];
cin>>count;
for(int i=0;i<count;i++)
{
cin>>a[i];
}
int max=imax(a,count);
int min=imin(a,count);
cout<<max<<endl;
cout<<min<<endl;
return 0;
}
第三题:
#include<iostream>
#include<string.h>
#include<cmath>
using namespace std;
int isprime(int a)//判断素数的函数
{
int mark=1;
if(a==1)//1不为素数,先排除。
{
mark=0;
}
for(int i=2;i<=a/2;i++)//进行循环,依次输入i,且i一定是小于等于a/2
{
}
if (mark==1)//如果为素数
return 1;
else if(mark==0)//如果不是素数
return 0;
}
int main()
{
int a[100];int mark=0;
for(int i=0;;i++,mark++)//输入所有数组
{
cin>>a[i];
if(a[i]==0) break;//如果是0就直接跳出
}
int c[mark];
for (int i=0;i<mark;i++)//进行循环
{
if(isprime(a[i])==1)//如果是素数
{
c[i]=1;
}
}
int num=0;//声明素数个数
for(int i=0;i<mark;i++)//进行循环
{
if(c[i]==1)
num=i;
}
cout<<" ";
}
}
}
return 0;
}
第四题:
#include<iostream>
#include<string.h>
using namespace std;
string delNotChar(char str[])//声明字符串
{
int len=strlen(str);//读取字符串长度
int j=0;
char b[200];
for(int i=0;i<=len;i++)//进行循环
{
if(str[i]>='a'&&str[i]<='z')//如果字符为英文小写,个数加一,且变为大写
{
b[j]=str[i]-32;
j++;
}
else if((str[i]>='A'&&str[i]<='Z')||str[i]==' ')//如果为空格或大写,加一
{
b[j]=str[i];
j++;
}
}
b[j]='\0';
return b;
}
int main()
{
char a[200];
cin.getline(a,200);//得到一串字符串
cout<<delNotChar(a);
return 0;
}
第五题:
#include<iostream>
using namespace std;
int count(char str[]);//单词个数
int main(){
char arr[500];
cin.getline(arr,500);
cout<<count(arr);
return 0;
}
int count(char str[]){
int i=0,n=0;
while(str[i]!='\0')//字符不是终止符时,一直循环。
{
if(str[i]>='a'&&str[i]<='z'){//如果是小写,单词个数加一,且字符也加一
n++;
i++;
while(str[i]>='a'&&str[i]<='z')//继续进行,如果还是小写,继续字符加一,但单词个数不变
i++;
}
else if(str[i]>='A'&&str[i]<='Z'){//上同
n++;
i++;
while(str[i]>='a'&&str[i]<='z')
i++;
}
Else//其他的都是字符加一
i++;
}
return n;
}
(二)运行结果
第一题:
第二题:
第三题:
第四题:
第五题:
五、实验结论
经过第五周的学习我学到了:构造函数:无参数不用void且没有返回类型;在创建对象时,构造函数自动被调用;且构造函数的名字必须与类相同。他的功能:在创建对象时,使用给定的值来将对象初始化。以及 析构函数:后创建的对象先释放,他的功能:调用析构函数来释放内存。定义函数的目的是提高程序的可读性,函数的返回值类型是由定义函数时所指定的返回值类型决定的。