C++实验代码
大学大一c语言程序设计实验室上机题全部代码答案(实验报告)

C语言实验报告实验1—1:hello world程序:源代码:#include〈stdio.h>main(){printf(”hello world!\n”);system(”pause");}实验1—2:完成3个数据的输入、求和并输出计算结果的程序:源代码:#include<stdio。
h〉main(){int i,j,k,sum;scanf("%d%d%d",&i,&j,&k);sum=i+j+k;printf("sum=%d",sum);system(”pause”);实验1—3:在屏幕上输出如下图形:ABBBCCCCC源代码:#include<stdio。
h〉main(){printf(” A\n”);printf(" BBB\n”);printf(” CCCCC\n");system(”pause");}实验2—1:计算由键盘输入的任何两个双精度数据的平均值源代码:#include〈stdio.h〉main(){double a,b;scanf("%lf%lf”,&a,&b);printf("%。
1lf\n”,(a+b)/2);system(”pause”);}实验2—2:写一个输入7个数据的程序,把输入的数据代入a + b * (c – d ) / e * f – g 表达式进行运算源代码:#include<stdio.h〉main(){float a,b,c,d,e,f,g,x;scanf("%f%f%f%f%f%f%f”,&a,&b,&c,&d,&e,&f,&g);x=a + b *(c - d )/ e *f - g;printf(”x=%f”,x);system("pause");}实验2-3:编写一个C语言程序,测试下列各表达式:i,ji + 1 , j + 1i++ , j++++i ,++ji+++++j源代码:#include<stdio。
C语言实验指导书的程序编码

C语言实验指导书的程序编码C语言实验程序编码1.平面上两点间的距离#include#includeint main(){double a1,a2;double b1,b2;double distance;printf("please input value a1 and a2:\n"); scanf("%lf%lf",&a1,&a2);printf("please input value b1 and b2:\n"); scanf("%lf%lf",&b1,&b2);distance=sqrt((a1-a2)*(a1-a2)+(b1-b2)*(b1-b2));printf("%lf\n",distance);return 0;}2.#include#includeint main(){double a1,a2;double b1,b2;double distance;printf("please input value a1 and a2:\n");scanf("%lf%lf",&a1,&a2);printf("please input value b1 and b2:\n");scanf("%lf%lf",&b1,&b2);distance=sqrt((a1-a2)*(a1-a2)+(b1-b2)*(b1-b2));printf("%lf\n",distance);return 0;}3.#include//int 占用四字节的32位机#define LOW16 0xFFFFint main(){unsigned int A=0,B=0,C=0,t=0;char hex[33]={0};printf("Please input two unsigned int A and B: "); scanf("%u%u",&A,&B);C=A & LOW16;C<<=16;C |= (B>>16) & LOW16;printf("A=0x%08x\n",A);printf("B=0x%08x\n",B);printf("C=0x%08x\n",C);return 0;}4.#include#includemain(){double x1,y1;double x2,y2;double s;printf("please input a point a:\n");scanf("x1=%lf,y1=%lf\n",&x1,&y1);printf("please input the orther point b:\n");scanf("x2=%lf,y2=%lf\n",&x2,&y2);s=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));printf("平面上任意两点间的距离:%lf\n",s);return 0;}5.#includevoid main(){int i,head,foot,rabbit,chick;printf("Enter the 2 numbers :");scanf("%d%d",&head,&foot);printf("head=%d,foot=%d\n",head,foot);for(i=0;i<=head;i++){rabbit=i;chick=head-rabbit;if(rabbit*4+chick*2==foot)printf("rabbit=%d,chick=%d\n",rabbit,chick);}}6.#include//int 占用四字节的32位机#define LOW16 0xFFFFint main(){unsigned int A=0,B=0,C=0,t=0;char hex[33]={0};printf("Please input two unsigned int A and B: \n"); scanf("%u%u",&A,&B);C=A & LOW16;C<<=16;C |= (B>>16) & LOW16;printf("A=0x%08x\n",A);printf("B=0x%08x\n",B);printf("C=0x%08x\n",C);return 0;}7.#include "stdio.h"main()long int rmb,a,b,c,d,e,f,gw,sw,i;printf("Please enter a number:");scanf("%d",&rmb);if(rmb>0 && rmb<=2147483647){sw=rmb%100;gw=rmb%10;a=rmb/100;b=sw/50;c=(sw-b*50)/20;d=(sw-b*50-c*20)/10;e=gw/5;f=(gw-e*5)/1;printf("$100=%d\n$50=%d\n$20=%d\n$10=%d\n$5=%d\n $1=%d\n",a,b,c,d,e,f);}else printf("Error of money!");return 0;}8.#includevoid main(){float a;printf("请输入成绩a:\n");scanf("%f",&a);if (a>=0&&a<=100){switch((int)(a/10)){case 10:case 9:printf("优\n");break;case 8:printf("良\n");break;case 7:printf("中\n");break;case 6:printf("及格\n");break;default:printf("差\n");break;}}elseprintf("输入错误\n");printf("a=%f\n",a);}9.#include//int 占用四字节的32位机int main(){unsigned int A,B,C;printf("Please input two unsigned int A and B: \n"); scanf("%u%u",&A,&B);A=A<<16;B=B>>16;C=A|B;printf("A=0x%08x\n",A);printf("B=0x%08x\n",B);printf("C=0x%08x\n",C);return 0;}10.#includemain(){unsigned int a,b,c;a=65;b=66;c=67;printf( "a=%c,b=%c,c=%c\n",a,b,c); } 11.#includeint main(){int h,f,x,y;printf( "Input h and f:\n ");scanf( "h=%d,f=%d",&h,&f);y=(f-h-h)/2;x=h-y;printf( "x=%d,y=%d\n ",x,y); return 0;}12.#includevoid main(){int x,y;printf("please enter x,y:");scanf("%d%d",&x,&y);printf("\nx+y=%d\n",x+y);printf("x-y=%d\n",x-y);printf("x*y=%d\n",x*y);printf("x/y=%d\n",x/y);printf("x%y=%d\n",x%y);}13.#includemain(){int h,f,x,y;printf("please input values h and f:\n"); scanf("%d,%d",&h,&f);if (h>0 && f>0){x=(4*h-f)/2;y=(f-2*h)/2;printf("x=%d,y=%d\n",x,y);}elseprintf("input error!\n");return 0;}14.#includeint main(){int i,j,k;for(i=0;i<=100/3;i++){for(j=0;j<=100/2;j++){for(k=0;k<=100;k+=2){if(((i+j+k)==100)&&((3*i+2*j+k/2 )== 100)) printf("%d ,%d ,%d\n", i,j,k);}}}return 0;}15.#includeint main(){int i,j,k;for(i=100/3;i>0;i--){for(j=100/2;j>0;j--){for(k=100;k>0;k-=2){if(((i+j+k)==100)&&((3*i+2*j+k/2 )== 100)) printf("%d ,%d ,%d\n", i,j,k);}}}return 0;}16.#include#include#include//模拟一次投骰子的函数,返回值为0~5,表示骰子的六个面int get_number(void){int num = 0;num = rand() % 6;return num;}main(){int data[6];int i=0;srand(time(NULL));//设置随机数种子for( i=0 ; i < 6 ; i++)//数据初始化{data[i]=0;}for( i=0 ; i<1000; i++)//进行1000次试验{data[get_number()]++;}for( i=0 ; i < 6 ; i++)//统计结果输出{printf("点数为%d的次数为: %d\n",i+1,data[i]);}return 0;}16.1. #include#include#include#includevoid main(){srand(time(NULL));double p1=0,p2=0,p3=0,p4=0,p5=0,p6=0; floati1=0,i2=0,i3=0,i4=0,i5=0,i6=0;for(int i=0;i<1000;i++){if(rand()%6+1==1){i1++;}if(rand()%6+1==2){i2++;}if(rand()%6+1==3){i3++;}if(rand()%6+1==4){i4++;}if(rand()%6+1==5){i5++;}if(rand()%6+1==6){i6++;}}p1=i1/1000;p2=i2/1000;p3=i3/1000;p4=i4/1000;p5=i5/1000;p6=i6/1000;printf("出现1的概率%f:\n",p1); printf("出现2的概率%f:\n",p2); printf("出现3的概率%f:\n",p3);printf("出现4的概率%f:\n",p4);printf("出现5的概率%f:\n",p5);printf("出现6的概率%f:\n",p6);}17.#includemain( ){har string[81];int i,num=0,word=0;char c;gets(string);for(i=0;(c=string[i])!=′\0′;i++)if(c==' '||c==' ')word=0;else if(word= =0){word=1;num++;}printf(″There are %d words in the line.\n″,num);}18.#include#define N 5void main(){int i,j;float max,min,t,a[N];float pjf,sum=0;printf("please input value a[i]:\n");for(i=0;i<n;i++)< p="">scanf("%f",&a[i]);for (i=0;i<n;i++)< p="">{sum=sum+a[i];pjf=sum/N;}max=min=a[0];for(i=1;i<n;i++)< p="">{if(max<a[i])< p="">{max=a[i];}if(min>a[i]){min=a[i];}}printf("大于平均值的数是:\n"); for(i=0;i<n;i++)< p=""> {if(a[i]>pjf)printf("a[%d]=%5.2f\t",i,a[i]); }printf("\n");printf("排列后的数是:\n");for(i=0;i<n-1;i++)< p=""> {for(j=i;j<n;j++)< p=""> {</n;j++)<></n-1;i++)<></n;i++)<></a[i])<></n;i++)<></n;i++)<></n;i++)<>。
实验数据处理C语言源代码

实验数据处理C语言源代码#include#include#include#include#define MAX 20typedef struct wuli{float d[MAX];char name[10];int LEN;float ccha[MAX]; /*残差数组*/float avg; /*data的平均值*/double sx; /*标准偏差Sx*/double DU; /*总不确定度*/}wulidata;wulidata *InputData();void average(wulidata *wl);void YCZhi(wulidata *wl);void CanCha(wulidata *wl);void BZPianCha(wulidata *wl);/*标准偏差*/void BQDdu(wulidata *wl);/*总不确定度*/void rage(wulidata *wl);void output(wulidata *wl);/*----------------------------------------------------------*/void line(){int i;printf("\n");for(i=0;i<74;i++)printf("=");printf("\n");}/*-------------------------------------------------------*/wulidata *InputData(){int i=0,k;float da;char Z=0;wulidata *wl;wl=(wulidata *)malloc(sizeof(wulidata));printf("请为你要处理的数据起一个名字:");scanf("%s",wl->name);printf("\n下面请你输入数据%s具体数值,数据不能超过MAX个\n",wl->name);printf("当name='#'时输入结束\n");do{printf("%s%d=",wl->name,i+1);scanf("%f",&da);wl->d[i]=da;i++;if(getchar()=='#') break;}while(wl->d[i-1]!=0.0&&iwl->LEN=i-1;do{printf("你输入的数据如下:\n");for(i=0;iLEN;i++)printf("%s%d=%f\t",wl->name,i+1,wl->d[i]);printf("\n你是否要作出修改(Y/N)?");while( getchar()!='\n');Z=getchar();if( Z=='y'||Z=='Y'){printf("你须要修改哪一个元素,请输入其标号i=(1~%d)\n",wl->LEN);while( getchar()!='\n');scanf("%d",&k);printf("\n%s%d=",wl->name,k);scanf("%f",&(wl->d[k-1]));}else if(Z=='n'||Z=='N')printf("OK!下面开始计算。
C语言程序设计实验及代码

C语言程序设计实验及代码随着计算机技术的快速发展,C语言作为一种高效且强大的编程语言,被广泛应用于软件开发、嵌入式系统以及科学计算等领域。
在学习C语言编程的过程中,进行实验并编写相应的代码是非常重要的一部分,可以帮助我们巩固所学的知识并提高编程能力。
本文将介绍几个常见的C语言程序设计实验,并给出相应的代码示例。
一、实验一:Hello, World!实验目的:熟悉C语言编程环境,掌握简单的编译和运行操作。
实验内容:编写一个简单的程序,在屏幕上输出"Hello, World!"。
代码示例:```c#include <stdio.h>int main() {printf("Hello, World!\n");return 0;}```二、实验二:求两个整数的和与差实验目的:学习C语言中的基本数据类型和算术运算符的使用。
实验内容:编写一个程序,输入两个整数并计算它们的和与差,然后输出结果。
代码示例:```c#include <stdio.h>int main() {int num1, num2, sum, diff;printf("请输入两个整数:");scanf("%d %d", &num1, &num2);sum = num1 + num2;diff = num1 - num2;printf("两数之和:%d\n", sum);printf("两数之差:%d\n", diff);return 0;}```三、实验三:判断一个数是奇数还是偶数实验目的:学习C语言中的分支语句的使用。
实验内容:编写一个程序,输入一个整数,并判断它是奇数还是偶数,然后输出结果。
代码示例:```c#include <stdio.h>int main() {int num;printf("请输入一个整数:");scanf("%d", &num);if (num % 2 == 0) {printf("%d是偶数。
单片机定时器实验C代码

#include <stdio.h>#include <reg52.h>#define uchar unsigned char#define uint unsigned int#define ulong unsigned longulong count,n;uint hthu,tthu,thu,hun,ten,one=0;uint flag=0; /*flag为十万位有进位时的标志位,每当有数字像十万位进位时,flag置1*/uchar codesegments_code[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff}; /*定义数码管上0~9以及灭灯*/uchar code scan_bits[]={0x01,0x02,0x04,0x08,0x10,0x20}; /*位选码,从左到右依次为6~1*/void t0_count();void delay_1ms(uint x); /*声明延时1ms*/void display(); /*显示函数*/void main(){TMOD=0x05;/*可以再考虑T1*/TH0=0x00;TL0=0x00;EA=1;ET0=1;TR0=1; /*开计数器C0*/P1=0xff;while (1){display();}}void delay_1ms(uint x){uint t;while (x--){for (t=0;t<120;t++);}}void display(){ uint i;for (i=0;i<=5;i++){P1=scan_bits[i]; /*位选*/count=TH0*256+TL0+flag*65535; /*count为计数值,这里为了突破C0计数65535的限制,采用硬件定时和软件定时结合*/hthu=count/100000;tthu=(count%100000)/10000;thu=(count%10000)/1000;hun=(count%1000)/100;ten=(count%100)/10;one=count%10;switch(i){case 0:P0=segments_code[one];P0=0xff;break; /*选择被选通的位选管,赋值段选码*/case 1:P0=segments_code[ten];P0=0xff;break;case 2:P0=segments_code[hun];P0=0xff;break;case 3:P0=segments_code[thu];P0=0xff;break;case 4:P0=segments_code[tthu];P0=0xff;break;case 5:P0=segments_code[hthu];P0=0xff;break;}delay_1ms(1);}}void t0_count() interrupt 1 /*当计数器1溢出时,数码管第七位显示闪烁的E*/ {flag=flag+1;if(flag==10) /*当计数范围超过十万位时,停止计数,数码管最高位闪动'E'(error)*/{while (1){P1=0x20;P0=0x86;delay_1ms(200);P1=0x00;delay_1ms(200);} }}。
C++实验代码

实验项目一C++程序设计初步题目在Visual Studio 2008平台上,用C++语言创建一个控制台应用程序,当其运行时在屏幕上显示“Hello,World!”(参考P15)实验项目二类与对象(1)有以下程序:#include <iostream>using namespace std;class Time //定义Time类{public: //数据成员为公用的int hour;int minute;int sec;};int main( ){ Time t1; //定义t1为Time类对象cin>>t1.hour; //输入设定的时间cin>>t1.minute;cin>>t1.sec;cout<<t1.hour<<“:”<<t1.minute<< “:”<<t1.sec<<endl; //输出时间return 0;}改写程序,要求:①将数据成员改为私有的;②将输入和输出的功能改为由成员函数实现;③在类体内定义成员函数。
然后编译和运行程序。
请分析什么成员应指定为公用的?什么成员应指定为私有的?什么函数最好放在类中定义?什么函数最好放在类外定义?代码:/ 实验_1.cpp : 定义控制台应用程序的入口点。
#include"stdafx.h"#include<iostream>using namespace std;class Time //定义Time类{private: //数据成员为私有的int hour;int minute;int sec;public:void Input(){cout<<"请输入时、分、秒:"<<endl;cin>>hour>>minute>>sec;}void print(){cout<<"时间为:"<<endl;cout<<hour<<":"<<minute<< ":"<<sec<<endl;}};int _tmain(int argc, _TCHAR* argv[]){Time t1;t1.Input ();t1.print ();return 0;}结果:(2)修改实验1中的学生成绩管理系统,建立类OurClass,实现班级学生信息的输入,排序和输出。
C++实验代码

实验一数组、结构体和函数综合编程一、实验目的1.复习数组,结构体和函数的相关知识;2.掌握利用数组存储数据和进行编程的方法;3.进一步掌握函数的编写。
二、实验内容1.学生成绩统计从键盘输入一个班(全班最多不超过30人)学生某门课的成绩,当输入成绩为负值时,输入结束,分别实现下列功能:(1)统计不及格人数并打印不及格学生名单;(2)统计成绩在全班平均分及平均分之上的学生人数,并打印这些学生的名单;(3)统计各分数段的学生人数及所占的百分比。
注:将成绩分为六个分数段,60分以下为第0段,60~69为第1段,70~79为第2段,80~89为第3段,90~99为第4段,100分为第5段。
编程要求:1.较好的用户输入输出提示信息2.使用子函数来实现上述各个功能,并且要使用结构体数组来实现,该结构体中包括学生学号和成绩3.最好不要使用全局变量提示:typedef tagStudent{long num;//学生学号float score;//学生分数}Student;供参考的函数原型如下:/*函数功能:从键盘输入一个班学生某门课的成绩及其学号当输入成绩为负值时,输入结束函数参数:存放学生信息的Student结构体数组函数返回值:学生总数*/int ReadScore(Student stu[]);/*函数功能:统计不及格人数并打印不及格学生名单函数参数:存放学生信息的Student结构体数组整型变量n,存放学生总数函数返回值:不及格人数*/int GetFail(Student stu[], int n);/*函数功能:计算全班平均分函数参数:存放学生信息的Student结构体数组,整型变量n,存放学生总数函数返回值:平均分*/float GetAver(Student stu[], int n);/*函数功能:统计成绩在全班平均分及平均分之上的学生人数并打印其学生名单函数参数:存放学生信息的Student结构体数组,整型变量n,存放学生总数函数返回值:成绩在全班平均分及平均分之上的学生人数*/int GetAboveAver(Student stu[], int n);/*函数功能:统计各分数段的学生人数及所占的百分比函数参数:存放学生信息的Student结构体数组,整型变量n,存放学生总数函数返回值:无*/void GetDetail(Student stu[], int n);2.成绩排名次某班期末考试科目为数学(MT)、英语(EN)和物理(PH),有最多不超过30人参加考试。
C语言实验报告参考源代码

printf("last: %d\n",n);} /*最后出局者的编号*/
实验 7 函数及其应用
第二个错误:if( fabs(x1-x0)<=0.00001 ) 应改为:if( fabs(x1-x0)>=0.00001 ) 因只有 fabs(x1-x0)>=0.00001 才须递归。 4.设计一个程序,判断一个整数n 是否是素数。 具体要求如下: (1)编制一个函数int prime(number),判断整数number 是否是素数。 (2)编制主函数,由键盘输入整数number,调用(1)中的函数,若返回值为真则是素 数,否则不是素数。 (3)分别用以下数据运行该程序:103,117。
printf("\n");
}
/*打印处理后矩阵,此时第 1 列上的元素为每行的最大数*/
}
5.猴子选大王问题:n 个人围坐一圈,并顺序编号 1~n,从 1 号开始数,每数到 m 个 就让其出局,重复...。求最后出局者的编号。当 n=50,m=3 时 ,答案为 11
具体要求如下: (1)使用一维数组存放每个人的编号,每数到 m 个数就让其出局,出局者编号为 0。 (2)使用 for 循环嵌套实现。 【程序源代码】 #include "stdio.h" main() {int a[51],i,j,m=0,n; for(i=1;i<=50;i++)a[i]=i;/*为了符合习惯,数组下标从 1 开始,下标就是编号*/ for(j=1;j<=50/3;j++) /*外层循环最多循环 50/3 次*/
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验项目一 C++程序设计初步题目在Visual Studio 2008平台上,用C++语言创建一个控制台应用程序,当其运行时在屏幕上显示“Hello,World!”(参考P15)实验项目二类与对象(1)有以下程序:#include <iostream>using namespace std;class Time //定义Time类{public: //数据成员为公用的int hour;int minute;int sec;};int main( ){ Time t1; //定义t1为Time类对象cin>>t1.hour; //输入设定的时间cin>>t1.minute;cin>>t1.sec;cout<<t1.hour<<“:”<<t1.minute<< “:”<<t1.sec<<endl; //输出时间return 0;}改写程序,要求:①将数据成员改为私有的;②将输入和输出的功能改为由成员函数实现;③在类体定义成员函数。
然后编译和运行程序。
请分析什么成员应指定为公用的?什么成员应指定为私有的?什么函数最好放在类中定义?什么函数最好放在类外定义?代码:/ 实验_1.cpp : 定义控制台应用程序的入口点。
#include"stdafx.h"#include<iostream>using namespace std;class Time //定义Time类{private: //数据成员为私有的int hour;int minute;int sec;public:void Input(){cout<<"请输入时、分、秒:"<<endl;cin>>hour>>minute>>sec;}void print(){cout<<"时间为:"<<endl;cout<<hour<<":"<<minute<< ":"<<sec<<endl;}};int _tmain(int argc, _TCHAR* argv[]){Time t1;t1.Input ();t1.print ();return 0;}结果:(2)修改实验1中的学生成绩管理系统,建立类OurClass,实现班级学生信息的输入,排序和输出。
要求:添加构造函数,初始化班级名称,将成员函数定义在类外,类的定义单独放在头文件中。
代码:头文件:#define N 3struct Student{long lNum;char sName[12];float cGrade;float ccGrade;float fGrade;};class OurClass{private:char cName[20];Student stu[N];public:OurClass::OurClass();void Input();void print();void Sort();};.cpp:// 学生成绩管理.cpp : 定义控制台应用程序的入口点。
#include"stdafx.h"#include"iostream"using namespace std;#include"student.h"int main(){OurClass c1;c1.Input();c1.Sort ();cout<<endl<<"排序结果为:"<<endl<<endl;c1.print ();return 0;}OurClass::OurClass () //(char Nme[20]){cout<<"请输入班级名称:"<<endl;cin>>cName;}void OurClass::Input (){int i;cout<<"输入"<<N<<"个学生的学号、和成绩"<<endl;for(i=0;i<N;i++){cin>>stu[i].lNum>>stu[i].sName >>stu[i].cGrade >>stu[i].ccGrade ;stu[i].fGrade =stu[i].cGrade+stu[i].ccGrade;}}void OurClass::Sort(){int i,j;Student Temp;for(i=0;i<N;i++){for(j=i+1;j<N;j++){if (stu[i].fGrade<stu[j].fGrade ){Temp=stu[i];stu[i]=stu[j];stu[j]=Temp;}}}}void OurClass::print(){int i;cout<<"班级名称:";cout<<cName<<endl;cout<<"学号成绩"<<endl;for(i=0;i<N;i++)cout<<stu[i].lNum<<" "<<stu[i].sName <<" "<<stu[i].fGrade <<endl; }结果:(3)需要求3个长方柱的体积(用对象数组完成),请编一个基于对象的程序。
数据成员包括length(长)、width(宽)、height(高)。
要求用成员函数实现以下功能:①由键盘分别输入3个长方柱的长、宽、高;②计算长方柱的体积;③输出3个长方柱的体积。
请编程序,上机调试并运行。
完成后,将其中的数组名当常量指针用。
代码:头文件:class cube{private:double length;double width;double height;public:cube();void input();void print();double volume();};// 求长方柱的体积.cpp : 定义控制台应用程序的入口点。
#include"stdafx.h"#include"iostream"using namespace std;#include"cube.h"void cube::input(){double length;double width;double height;}cube::cube(){ cout<<"请输入长方柱的长、宽、高:"<<endl;cin>>length>>width>>height;}double cube::volume(){return length*width*height;}void cube::print(){cout<<"长方柱的体积为:"<<volume()<<endl;}int main(){cube c[3];for(int i=0;i<3;i++){c[i].input();(c+i)->print();}return 0;}结果:(4)友元函数(1)有以下程序:#include <iostream>using namespace std;class Date; //对Date类的提前引用声明class Time //定义Time类{public:Time(int,int,int);void display(Date &); //display是成员函数,形参是Date类对象的引用private:int hour;int minute;int sec;};class Date //声明Date类{public:Date(int,int,int);friend void Time∷display(Date &);//声明Time中的display函数为友元成员函数private:int month;int day;int year;};Time∷Time(int h,int m,int s) //类Time的构造函数{hour=h;minute=m;sec=s;}void Time∷display(Date &d) //display的作用是输出年、月、日和时、分、秒{cout<<d.month<<“/”<<d.day<<“/”<<d.year<<endl;//引用Date类对象中的私有数据cout<<hour<<“:”<<minute<<“:”<<sec<<endl; //引用本类对象中的私有数据}Date∷Date(int m,int d,int y) //类Date的构造函数{month=m;day=d;year=y;}int main( ){Time t1(10,13,56); //定义Time类对象t1Date d1(12,25,2004); //定义Date类对象d1t1.display(d1); //调用t1中的display函数,实参是Date类对象d1return 0;}请读者分析和运行此程序,注意友元函数Time::display的作用。
将程序中的display函数不放在Time类中,而作为类外的普通函数,然后分别在Time 和Date类中将display声明为友元函数。
在主函数中调用display函数,display 函数分别引用Time和Date两个类的对象的私有数据,输出年、月、日和时、分、秒。
修改后上机调试和运行。
代码:// 实验_4.cpp : 定义控制台应用程序的入口点。
#include"stdafx.h"#include<iostream>using namespace std;class Date; //对Date类的提前引用声明class Time //定义Time类{friend void display(Date &,Time &);public:Time(int,int,int);//void display(Date &); //display是成员函数,形参是Date类对象的引用private:int hour;int minute;int sec;};class Date //声明Date类{public:Date(int,int,int);friend void display(Date &,Time &);public:int month;int day;int year;};Time::Time(int h,int m,int s) //类Time的构造函数{hour=h;minute=m;sec=s;}void display(Date &d,Time &t1) //display变为普通函数{cout<<d.month<<"/"<<d.day<<"/"<<d.year<<endl;//引用Date类对象中的私有数据cout<<t1.hour<<":"<<t1.minute<<":"<<t1.sec<<endl;}Date::Date(int m,int d,int y) //类Date的构造函数{month=m;day=d;year=y;}int _tmain(int argc, _TCHAR* argv[]){Time t1(10,13,56); //定义Time类对象t1Date d1(12,25,2004); //定义Date类对象d1display(d1,t1);return 0;}结果:实验项目三函数重载(1)编写程序,实现普通函数重载练习。