大一上 c + +上机实验总结(十四)

大一上 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;       
   
  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值