大一上 c + +上机实验总结目录:返回目录
1、写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。提示:可借助辗转相除法求最大公约数和最小公倍数。
参考程序1:
#include<iostream>
using namespace std;
int main( )
{
int hcf(int,int); //函数声明
int lcd(int,int,int); //函数声明
int u,v,g,b;
cin>>u>>v;
g=hcf(u,v);
cout<<"最大公约数是:"<<g<<endl;
b=lcd(u,v,g);
cout<<"最小公倍数是:"<<b;
return 0;
}
int hcf(int u,int v)
{
int t,r;
if(v>u)
{
t=u;u=v;v=t;}
while((r=u%v)!=0)
{
u=v; v=r;}
return(v);
}
int lcd(int u,int v,int h)
{
return(u*v/h);}
参考程序2:
#include<iostream>
using namespace std;
int main( )
{
int hcf(int,int); //函数声明
int lcd(int,int,int); //函数声明
int u,v,g,b;
cin>>u>>v;
g=hcf(u,v);
cout<<"最大公约数是:"<<g<<endl;
b=lcd(u,v,g);
cout<<"最小公倍数是:"<<b;
return 0;
}
int hcf(int u,int v)
{
int t,r;
if(v>u)
{
t=u;u=v;v=t;}
r=u%v;
while(r!=0)
{
u=v; v=r;r=u%v;} /*注意,循环体中的r=u%v不要忘了写上*/
return(v);
}
int lcd(int u,int v,int h)
{
return(u*v/h);}
2、实现字符串的复制。要求:定义两个指针变量p1和p2,分别指向字符数组a和b。改变指针变量p1和p2的值,使它们顺序指向数组中的各元素,进行对应元素的复制。
参考程序:
#include<iostream>
using namespace std;
int main( )
{
char a[]="I am a boy.",b[20],*p1,*p2;
p1=a; p2=b;
for( ;*p1!='\0';p1++,p2++) //程序必须保证使p1和p2同步移动
*p2=*p1;
*p2='\0';
cout<<"string a is:"<<a<<endl;
cout<<"string b is:"<<b<<endl;
return 0;
}
3、将n个数,按输入时顺序的逆序排列。(要求用指针实现)
参考程序:
#include <iostream>
using namespace std;
int main()
{
int a[10],*p,*q,i,temp;
for(i=0;i<10;i++)
cin>>a[i];
p=a; //指针变量p指向数组a的第一个元素
q=a+9; //指针变量q指向数组a的最后一个元素
for(;p<q;p++,q--) //指向数组的两个指针变量可以进行比较,p<q表示p指向较低地址
{
temp=*p;
*p=*q;
*q=temp;
} //前后两两交换
for(i=0;i<10;i++)
cout<<a[i]<<" ";
return 0;
}
4、求某班某门课的平均成绩,统计超过平均值的人数(要求用指针操作数组)。
提示:1)令指针变量p指向 score (存放成绩)的开始;
2)通过移动指针求和(重复N次);
3)求平均值;
4)令 p 重新指向 score 的开始;
5)不移动指针但通过指针判断各单元的内容是否大于平均值,并计数。
参考程序:
#include <iostream>
using namespace std;
#define N 5
int main()
{
float score[N], *p;
float v, s = 0;