VC上机课程设计题.docx
- 文档编号:24397086
- 上传时间:2023-05-27
- 格式:DOCX
- 页数:19
- 大小:29.46KB
VC上机课程设计题.docx
《VC上机课程设计题.docx》由会员分享,可在线阅读,更多相关《VC上机课程设计题.docx(19页珍藏版)》请在冰豆网上搜索。
VC上机课程设计题
课程设计题
Ⅰ.课程设计基本练习题目
【A组】
1、输出10至99之间每位数的乘积大于每位数的和的数,例如对于数字12,有1*2<1+2,故不输出该数;对于27,有2*7>2+7,故输出该数。
#include"stdafx.h"
#include
usingnamespacestd;
intmain()
{
intgw,shw,m;
for(m=10;m<=99;m++)
{
gw=m%10;
shw=m/10;
if(gw*shw>gw+shw)
cout< } } 2、求任意n个数中的最大数和最小数: 先输入一个正整数n(个数),而后再输入任意n个实数,找出这n个数中的最大数及最小数并显示出来。 #include"stdafx.h" #include usingnamespacestd; voidmain() { inti,n; floatmax,min; cout<<"请输入任意一个正整数n: "; cin>>n; float*a=newfloat[n];//创建动态数组 for(i=0;i { cout<<"请输入第"< "; cin>>a[i]; } max=a[0]; min=a[0]; for(i=0;i { if(a[i]>max) max=a[i]; if(a[i] min=a[i]; } cout<<""<<"max="< cout<<""<<"min="< } 【B组】 3、对两个有序数组进行合并: 设有如下数组A、B,并假设两个数组的元素都已经有序(从大到小降序排列)。 编程序,合并A、B数组形成一个新的数组C,并使C的元素仍有序(从大到小降序排列)。 intA[10]={123,86,80,49,33,15,7,0,-1,-3}; intB[10]={100,64,51,50,27,19,15,12,5,2}; #include"stdafx.h" #include usingnamespacestd; voidmain() { intA[10]={123,88,86,86,33,15,7,0,-1,-3}; intB[10]={86,69,51,50,27,19,15,12,5,2}; intC[20]; inta=0; intb=0; int*X=A,*Y=B,*Z=C;//指针 cout<<"C[20]={"; while(a<10&&b<=10) { if(*X>=*Y||b==10)//b==10表示此时B[10]中的数全部大于A[10]中剩余的数,只需将A[10]中剩余的数输出 { *Z=*X; *X++;//指针后移 a++; } elseif(*X<=*Y||a==9)//a==9表示此时A[10]中的数全部大于B[10]中剩余的数,只需将B[10]中剩余的数输出 { *Z=*Y; *Y++;//指针后移 b++; } cout<<*Z<<""; *Z++; } cout<<"}"< } 4、有一个分数序列: 1/2,1/3,1/4,1/5,1/6,1/7,……,编写函数求序列前n项之和,要求在主程序中提示用户输入整数n,并判断所输入数是否合法(大于1为合法),如果合法则调用求和函数并输出结果。 #include"stdafx.h" #include usingnamespacestd; doublefsum(intm); voidmain() { intn; doublesum; cout<<"请输入整数n: "; cin>>n; if(n<=1) cout<<"输入数字不合法,请重新输入"; else { sum=fsum(n); cout<<"序列的前"< } } doublefsum(intm) { inti; doubles=0.0; for(i=2;i s=s+1.0/i; returns; } 5、计算两个日期之间的间隔天数: 从键盘输入两个日期(如以year1,month1,day1以及year2,month2,day2的方式来输入它们),而后计算出这两个日期的间隔天数并在屏幕上显示出结果。 要求编制具有如下原型的函数difs2Date: longGetDayDifference(inty1,intm1,intd1,inty2,intm2,intd2); 并在主函数中调用向屏幕上输出计算结果。 #include"stdafx.h" #include #include intdifs2Date(inty1,intm1,intd1,inty2,intm2,intd2); intmain() { inty1,m1,d1,y2,m2,d2,t; cout<<"请输入2个日期(每输入1个年、月、日后均按Enter): "< cin>>y1>>m1>>d1>>y2>>m2>>d2; t=difs2Date(y1,m1,d1,y2,m2,d2); cout< } intdifs2Date(inty1,intm1,intd1,inty2,intm2,intd2) { intYDays,Days1,Days2,total,n=0,i; inta[13]; a[0]=0;a[1]=31;a[3]=31;a[4]=30;a[5]=31;a[6]=30;a[7]=31;a[8]=31;a[9]=30;a[10]=31;a[11]=30;a[12]=31; if(y1>y2) { for(i=y2;i { if(i%4==0&&i%100! =0||i%400==0) n++; } } else { n=0; for(i=y1;i { if(i%4==0&&i%100! =0||i%400==0) n++; } } if(y1! =y2)YDays=abs((y1-y2)*365)+n; elseYDays=0; if(y1%4==0&&y1%100! =0||y1%400==0)a[2]=29;//计算第一个日期中的该天为该年中的第几天 elsea[2]=28; intk=0; for(i=0;i Days1=k+d1; k=0; if(y2%4==0&&y2%100! =0||y2%400==0)a[2]=29;//计算第二个日期中的该天为该年中的第几天 elsea[2]=28; for(i=0;i Days2=k+d2; if(y1<=y2) total=YDays-Days1+Days2; else total=YDays-Days2+Days1; returnabs(total); } 【C组】 7、声明并定义一个日期类CDate,其中数据成员m_iYear,m_iMonth,m_iDay,分别表示年、月、日,成员函数SetDate()用来设置年、月、日,成员函数IsLeapYear()用来判断当前的年份是否为闰年,构造函数带有默认形参值,可接收外部参数对m_iYear,m_iMonth,m_iDay进行初始化,另要求编写测试程序,定义一个CDate类对象,将其日期设置为2005年1月1日,调用成员函数IsLeapYear()判断该年份是否为闰年,并输出判断结果. 说明: 闰年的年份可以被4整除而不能被100整除,或者能被400整除. #include"stdafx.h" #include usingnamespacestd; classCDate { public: CDate(intYear=2000,intMonth=1,intDay=1);//构造函数带有默认形参值 voidSetDate(intYear,intMonth,intDay); voidIsLeapYear(); ~CDate(){} private: intm_iYear,m_iMonth,m_iDay; }; //类的实现 CDate: : CDate(intYear,intMonth,intDay)//构造函数初始化数据成员m_iYear,m_iMonth,m_iDay { m_iYear=Year; m_iMonth=Month; m_iDay=Day; } //类的成员函数的实现 voidCDate: : SetDate(intYear,intMonth,intDay) { m_iYear=Year; m_iMonth=Month; m_iDay=Day; cout<<"设置的时间为: "< } voidCDate: : IsLeapYear() { if(4==0&&m_iYear%100! =0||m_iYear%400==0) cout< else cout< } intmain() { CDateDate(2000,1,1);//声明类CDate的对象Date Date.SetDate(2005,1,1); Date.IsLeapYear(); return0; } 8、编写一个程序计算两个给定长方形的面积,其中在设计类成员函数GetTotalArea()(用于计算两个长方形的总面积)时使用对象作为参数。 #include"stdafx.h" #include usingnamespacestd; classRectangle//声明Rectangle类 { public: Rectangle(doublelength,doublewide); Rectangle(){} ~Rectangle(){} doublearea(); doubleGetTotalArea(RectangleR1,RectangleR2); private: doublex,y; }; //Rectangle类各成员函数的实现 Rectangle: : Rectangle(doublelength,doublewide) { x=length; y=wide; } doubleRectangle: : area()//计算每个矩形的面积 { returnx*y; } doubleRectangle: : GetTotalArea(RectangleR1,RectangleR2)//计算两个矩形的总面积 { cout<<"两个矩形的总面积="< return0; } voidmain() { doublea,b; doublec,d; cout<<"请输入第1个矩形的长和宽: "< cin>>a>>b; cout<<"请输入第2个矩形的长和宽: "< cin>>c>>d; RectangleA(a,b); RectangleB(c,d); RectangleC; cout<<"第1个矩形的面积="< cout<<"第2个矩形的面积="< C.GetTotalArea(A,B); } 9、设计一个时间类Time,包括3个数据成员,时(h)、分(m)、秒(s),另外包括存取各数据成员和设置时间的成员函数,按上、下午各12小时或按24小时输出时间的成员函数,以及默认构造函数,默认时间值为0时0分0秒。 #include"stdafx.h" #include usingnamespacestd; classTime { public: Time() {h=0;m=0;s=0;}//默认构造函数,默认时间值为0时0分0秒 ~Time(){} voidSetTime(intNewHour,intNewMinute,intNewSecond);//存取各数据成员和设置时间的成员函数 voidShowTime();//按24小时输出时间的成员函数 private: inth,m,s;//时间类Time,包括3个数据成员,时(h)、分(m)、秒(s) }; //Time类各成员函数的实现 voidTime: : SetTime(intNewHour,intNewMinute,intNewSecond) { h=NewHour; m=NewMinute; s=NewSecond; } inlinevoidTime: : ShowTime() { cout< "< "< } voidmain() { intNH,NM,NS; TimeT; cout<<"系统的默认时间为: "< T.ShowTime(); cout<<"请您按24小时制输入您想设置的时间: "< cin>>NH>>NM>>NS; T.SetTime(NH,NM,NS); cout<<"您设置的时间为: "< T.ShowTime(); } 10、编写一个程序,输入3个学生的英语和计算机成绩,并按总分从高到低排序(要求设计一个学生类Student)。 #include"stdafx.h" #include usingnamespacestd; classStudent { public: voidGetscore();//获取一个学生的成绩和总分 voidDisplay();//显示学生成绩和排序结果 intEnglish,Computer,Total; }; //Student类各成员函数的实现 voidStudent: : Getscore() { cout<<"输入英语成绩: "; cin>>English; cout<<"输入计算机成绩: "; cin>>Computer; Total=English+Computer; } inlinevoidStudent: : Display() { cout<<"英语="< } voidmain() { inti,j; Student*A[3],*temp;//给定对象指针 for(i=0;i<3;i++) { A[i]=newStudent;//使用new动态创建对象 cout<<"请输入第"< A[i]->Getscore();//使用操作符->访问Student类对象的成员函数Getscore() } //应用冒泡排序法按总分从高到低排序 for(i=0;i<2;i++) { for(j=0;j<2;j++) if(A[j]->TotalTotal) { temp=A[j]; A[j]=A[j+1]; A[j+1]=temp; } } cout<<"按总分从高到低排序结果如下: "< for(i=0;i<3;i++) A[i]->Display(); } 、 11.求解一元二次方程。 一元二次方程的定义为: ax2+bx+c=0 (1)如果b2-4ac>0,方程有两个不同的实根,分别是: (2)如果b2-4ac<0,方程没有实根,但有虚根; (3)如果b2-4ac=0,方程有一个实根。 请你编写一个程序,使其能求出多个二次方程的根。 该程序要询问用户是否想继续解下一个方程。 用户输入1来继续,输入其它数字,则终止程序。 程序要求用户输入a,b和c,然后根据前面的条件计算,并输出答案。 要求: 使用类实现, (1)a,b,c为该类的私有成员变量; (2)求根的实现为该类的成员函数,形式为: //函数返回值: 实根的个数; //参数: x-用以返回实根值的数组; intCalResult(doublex[]); (3)该类还包含有参构造函数、析构函数。 使用MFC工程实现,可酌情加分。 #include"stdafx.h" #include #include usingnamespacestd; classQuadEquation { public: QuadEquation(doublex,doubley,doublez);//有参构造函数 ~QuadEquation(){}//析构函数 intCalResult(doublex[]);//求根成员函数,形参x[]为用以返回实根值的数组 private: doublea,b,c; }; //QuadEquation类各成员函数的实现 QuadEquation: : QuadEquation(doublex,doubley,doublez) { a=x; b=y; c=z; } intQuadEquation: : CalResult(doublex[]) { intrtn; doublesqr,x1,x2; sqr=b*b-4*a*c; if(sqr<0)return0; rtn=(sqr>0)? 2: 1;//条件表达式: 如果sqr>0,则rtn=2;如果sqr=0,则rtn=1 if(rtn==1)x[0]=x[1]=-b/(2*a); else { x[0]=(-b+sqrt(sqr))/(2*a); x[1]=(-b-sqrt(sqr))/(2*a); } returnrtn; } voidmain() { intm; doublea,b,c; doublex[2]; cout<<"已知方程ax2+bx+c=0"< cout<<"请输入系数a,b,c的值: "< cin>>a>>b>>c; QuadEquationQuation(a,b,c); m=Quation.CalResult(x); switch(m) { case0: cout<<"方程没有实数根! "< break; case1: cout<<"方程有一个实数根,x="< break; case2: cout<<"方程有两个实数根,x1="< break; } cout<<"如要继续求解则输入1,否则输入其他数字结束! "< cout< while (1) { inti; cin>>i; if(i==1) { cout<<"已知方程ax2+bx+c=0"< cout<<"请输入系数a,b,c的值: "< cin>>a>>b>>c; QuadEquationQuation(a,b,c); m=Quation.CalResult(x); switch(m) { case0: cout<<"方程没有实数根! "< break; case1: cout<<"方程有一个实数根,x="< break; case2: cout<<"方程有两个实数根,x1="< break; } } elsebreak; cout<<"如要继续求解则输入1,否则输入其他数字结束! "< cout< } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VC 上机 课程设计