c++基础练习题及解答细节全解.doc_第1页
c++基础练习题及解答细节全解.doc_第2页
c++基础练习题及解答细节全解.doc_第3页
c++基础练习题及解答细节全解.doc_第4页
c++基础练习题及解答细节全解.doc_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

“C+程序设计”实验一 简单的C+程序1、编写简单的屏幕输出程序:过程首先在资源管理器中,在用户盘(硬盘)创建自己的文件夹,例如可以以自己的学号为名建立文件夹。进入Visual C+开发环境,新建C+源文件,存放在上一步建立的文件夹中。打开源文件编辑窗口,输入以下源代码:#includevoid main( )cout “”;/ 省略号处是想要输出到屏幕上的内容,可以随意编辑。保存文件后单击“编译compile”按钮(快捷键Ctrl+F7),在出现的对话框中单击“是”。若没有错误,继续单击“连接build”按钮(快捷键F7)。若没有错误则继续单击“执行execute”按钮(快捷键Ctrl+F5),查看程序运行结果。#includevoid main()cout “Hello :-) n”;/ 省略号处是想要输出到屏幕上的内容。2、将两个数交换后输出。分析 交换两个数,一般方法是用一个中间变量,经过几次赋值实现。#includevoid main( )double a, b, temp;coutab; / 此语句是将用户输入的两个数依次保存到a、b两个变量中couta=a b=bendl;/ 此语句是输出a、b两个变量的值temp = a; / 此语句是将变量a的值赋给变量temp,“=”称为赋值号 ; / 完成省略号处的语句,将变量b的值赋给变量a ; / 完成省略号处的语句,将变量temp的值赋给变量b ; / 完成省略号处的语句,再次输出变量的值,观察其值是否交换了#includevoid main()double a, b, temp;coutab; / 此语句是将用户输入的两个数依次保存到a、b两个变量中couta=a b=bendl;/ 此语句是输出a、b两个变量的值temp = a; / 此语句是将变量a的值赋给变量temp,“=”称为赋值号a=b; / 完成省略号处的语句,将变量b的值赋给变量ab=temp ; / 完成省略号处的语句,将变量temp的值赋给变量bcouta=a b=b“n” ; / 完成省略号处的语句,再次输出变量的值,观察其值是否交换了3使用cout对象,在输出窗口上显示如下的图形:提示:在C+的字符常量中,一个反斜线字符是。#include void main()coutt/*endl;cout /*endl;cout /*tt Xt Xendl;cout |*tt Xt Xendl;cout |*t XXXXXXX XXXXXXXendl;cout |*tt Xt Xendl;cout *tt Xt Xendl;cout *endl;coutt*/endl; 4根据注释补充下面的程序中省略号处的语句,运行程序,并理解其语句及输出的含义:#includevoid main();/ 定义一个整型变量a;/ 定义一个字符型变量bb = a; / 给变量b赋值为字符a; / 将变量b的值赋给变量acout “a=”aendl;/输出变量a的值;/输出变量b的值#includevoid main()int a;/ 定义一个整型变量achar b;/ 定义一个字符型变量bb = a; / 给变量b赋值a=b; / 将变量b的值赋给变量acout a=aendl;/输出变量a的值cout b=bx_int),输出并观察(x_int/y_double)、(y_double-m_char)以及n_bool的值,理解这些输出的含义。例如:输入1 1 1#includevoid main()int x_int;double y_double;char m_char;bool n_bool;coutx_inty_doublem_char;n_bool=m_charx_int;coutx_int/y_double=x_int/y_doubleendl;couty_double-m_char=y_double-m_charendl;coutn_bool=n_boolendl;2输出一个字符(这个字符可以是在程序开始赋值,或由用户输入)的前驱字符(ASCII编码表上该字符前面的字符)、后继字符(ASCII编码表上该字符后面的字符)及其ASCII码值。#includevoid main()char qianqu, zifu, houji;coutzifu;qianqu=zifu-1;houji=zifu+1;coutqianqu zifu houjiendl;coutint(qianqu) int(zifu) int(houji)endl;3编写程序:根据用户输入的球的半径值,分别计算球的表面积、体积和质量,并输出计算结果。提示 假设用户输入的球的半径的单位是米,球的密度为7.8kg/m3,球的表面积的计算公式为 ,球的体积的计算公式为 。其中的值使用3.14即可。#includevoid main()const double pi=3.14, midu=7.8;double banjing, bmianji, tiji, zhiliang;coutbanjing;bmianji=4*pi*banjing*banjing;tiji=bmianji*banjing/3;zhiliang=tiji*midu;cout该球的表面积为bmianji平方米,体积为tiji立方米,质量为zhiliang千克。n;4让用户输入一个秒数,编程实现将它转换成小时、分钟、秒来表示。例如输入7278秒,则输出:2小时1分18秒。#includevoid main()int zongm, shi, fen, miao;coutzongm;if(zongm0)shi=zongm/3600;fen=zongm%3600/60;miao=zongm%60;coutshi小时,fen分,miao秒n;实验三 分支选择语句的应用提示:每题建立一个C+源文件。当完成一个题目后,使用菜单“文件”“关闭工作空间”,再新建C+源文件做下一个题目。1用户输入两个整数x和y,问:y是否是x的倍数?编程输出回答“是”或“不是”。#include void main()int x, y;coutxy;if(y%x=0)couty是x的倍数。n;elsecouty不是x的倍数。n;2编写程序求解如下分段函数。y=x2-162,x12x+30,12= x70#includevoid main()double x, y;coutx;if(x12) y=x*x-162;else if(x=70) y=x+30;else y=100;couty=yendl;3单位编排活动小组,30岁及以下的分在第一组,40岁的分在第二组,50岁以上的分在第三组,其余年龄的分在第四组。假设王五输入了自己的年龄,保存在变量age中,那么他应该分在第几组?编程求解并输出答案。#include void main()int age;coutage;if(age=20&age70)if(age=30)cout应分至第一组。n;else if(age=40)cout50)cout应分至第三组。n;elsecout应分至第四组。n;elsecout输入年龄不合理!n;4根据用户输入的整数(17代表星期一星期日),编程输出星期这一天对应的英文或中文名称。例如,用户输入3,则输出应显示为“Wednsday”或“星期三”。#include void main()int a;couta;switch(a)case 1: coutMondayn; break;case 2: coutTuesdayn; break;case 3: coutWednesdayn; break;case 4: coutThursdayn; break;case 5: coutFridayn; break;case 6: coutSaturdayn; break;case 7: coutSundayn; break;default: couterrorn;5已知标准体重的计算方法如下:男性:标准体重(kg)=身高(cm)-100女性:标准体重(kg)=身高(cm)-105试编写程序,由用户输入其性别(m代表男性,f代表女性)和身高,程序计算并输出其标准体重。#includevoid main()char xingbie;int shengao, tizhong;coutxingbie;if(xingbie=m)|(xingbie=f)coutshengao;if(xingbie=m) tizhong=shengao-105;else tizhong=shengao-100;cout标准体重为tizhong千克。n;6(选做)编程实现如下算术功能:用户输入两个数字(可带小数)及一个算术操作符(+、-、*或/),若输入的算术操作符不对,则输出提示信息(例如“无效的算术操作符,无法计算”),否则,即输出相应的算式及结果。注意:计算除法时,除数不能为0。#include void main()double a,b;char c;coutabc;switch(c)case +: couta+b=a+bendl; break;case -: couta-b=a-bendl; break;case *: couta*b=a*bendl; break;case /:if(b!=0)couta/b=a/bendl;elsecout除数不能为0!n;break;default: cout无效的算数操作符,无法计算!n;实验四 循环语句的应用提示:每题建立一个C+源文件。当完成一个题目后,使用菜单“文件”“关闭工作空间”,再新建C+源文件做下一个题目。1设某县2000年工业总产值为200亿元,如果该县预计平均年工业总产值增长率为4.5%,那么多少年后该县年工业总产值将超500亿元?(参考答案:21年)#includevoid main()double chanzhi=200; int nianshu=0;while(chanzhi=500)nianshu+;chanzhi*=1.045;cout经过nianshu年后该县年工业总产值将超过500亿元。n;2请在屏幕上显示N行如图所示的数值(即第i行为“i: i2 i3”),其中N是个常量,其值在程序运行之初确定。(要求:用for语句实现)#includevoid main()const int N=10;for(int i=1;i=N;i+)couti:ti*iti*i*iendl;3编写循环程序,判断用户输入的一个数是正数还是负数,当输入的数大于0时,输出“正数”;输入的数小于0时,输出“负数”;输入的数为0时结束程序。最后输出这些数相加的总和。(要求:用do-while语句实现)#includevoid main()double x;docoutx;if(x0) cout正数n;else if(x0) cout负数n;while(x!=0);4编程求解使不等式12+32+52+ +n2 limit成立的最大n值。其中limit可以定义为常量或定义为变量。(实验数据:limit=10时n=1;limit=100时n=7;limit=65535时n=71)#includevoid main()int limit;coutlimit;int n=1, s=0;while(slimit)s+=n*n;n+=2;cout使该不等式成立的最大n值为:(n-4)endl;5(选做)请用户输入20个字符,编程实现将其中的小写字母转换为大写字母后输出。例如,若用户输入“VkQK0MsQ,mb/;lGa;q”,则应输出“VKQK0MSQ,MB/;lGA;Q”。提示:每一个英文字母的大写和小写的ASCII码相差32。即,若字符型变量ch中是一个小写英文字母,则char(ch-32)即其对应的大写英文字母。#includevoid main()char ch;int i;cout请输入20个字符: ;i=0;while(ich;if(ch=a&ch=z) coutchar(ch-32);else coutch;i+;coutendl;6(选做)有20只猴子吃掉50个桃子,已知每只公猴能吃5个桃子、每只母猴能吃4个桃子、每只小猴能吃2个桃子,编程求出这20只猴子中可以有公猴、母猴、小猴各多少只。(答案:0 5 15或2 2 16)#includevoid main()int gong, mu, xiao;for(gong=0; gong=10; gong+)for(mu=0; mu=12; mu+)xiao=20-gong-mu;if(5*gong+4*mu+2*xiao=50)cout公侯gong只,母猴mu只,小猴xiao只n;实验五 函数的概念及应用1编写一个函数double f(double x),求解如下分段函数。y=-62 (x0)x5-62 (0=x2)x-32(2=x=38)提示:求幂的数学函数是pow(x, y),求平方根的数学函数是sqrt(x)。要使用这些数学函数,需要在文件开始添加预编译指令#include。#include#includedouble f(double);void main()double x;x=-28;coutx=x, y=f(x)endl;x=0;coutx=x, y=f(x)endl;x=1;coutx=x, y=f(x)endl;x=15;coutx=x, y=f(x)endl;x=75;coutx=x, y=f(x)endl;double f(double x)double y;if(x0) y=-62;else if(x2) y=pow(x, 5)-62;else if(x38) y=x-32;else y=sqrt(x-2);return y;2对任意给定的两个正整数m、n,求s=m!+n!。要求先自定义一个C+函数,实现求一个正整数的阶乘,即double jiecheng(int x),再在主函数中调用该自定义函数,根据用户输入的整数m和n,求出s的值。#include double jiecheng(int);void main()int m, n;coutmn;if(m0&n0)coutm!+n!=(jiecheng(m)+jiecheng(n)endl;elsecout您输入的不是两个正整数!n;double jiecheng(int n)double s=1;for(int i=1; i=n; i+)s*=i;return s;3编写一个函数 bool sxh( int n ),判断一个3位正整数是否是水仙花数,若是返回true,否则返回false。并在主函数中使用该函数找出所有的水仙花数打印在屏幕上。说明:若一个3位正整数的各位数字的立方和等于这个整数,则称之为“水仙花数”。例如:153是水仙花数,因为153=1*1*1+5*5*5+3*3*3。#includebool sxh(int);void main()cout 水仙花数:n;for(int i=100; i1000; i+)if(sxh(i) couti ;coutendl;bool sxh(int n)int ge=n%10;int shi=n/10%10;int bai=n/100;if(ge*ge*ge+shi*shi*shi+bai*bai*bai=n)return true;elsereturn false;4(选做)编程实现,在屏幕上输出如下所示由X组成的X形图案。#includevoid main()const int LINE=9;for(int i=1; i=LINE; i+)for(int j=1; j=LINE; j+)if(i=j|i=LINE+1-j) coutX;else cout ;coutendl;5(选做)编写一个函数,实现在屏幕上打印出九九乘法表。基本效果如下图1,同学们可自己作进一步的美化,如下图2。图2提示:两层循环嵌套使用。图1 #include#includevoid first();void second();void main()cout基本九九表:nn;first();coutendl;cout改进后的九九表:nn;second();coutendl;/ 基本(图1)void first()int i, j;for(i=1; i10; i+)for(j=1; j=i; j+)coutsetw(4)i*j;coutendl;/ 改进(图2)void second()int i, j;coutsetw(5)|;for(i=1; i10; i+)coutsetw(4)i;coutendl;for(i=1; i43; i+)cout-;coutendl;for(i=1; i10; i+)coutsetw(3)i |;for(j=1; j=i; j+)coutsetw(4)i*j;coutendl;实验六 流程控制语句、函数的综合应用1编写一个函数bool sushu ( int n ),判断用户输入的一个正整数是否是素数,若是返回true,否则返回false。提示:素数即质数,判断n是否素数的方法是:分别用2、3、4、n-1去除n,如果n能被整除,则表明n不是素数,反之是素数。说明:1不是素数,2、3、5、7、11、13、。等是素数。#includebool sushu ( int n );void main()int x;coutx;if(x0)if(sushu(x) coutx是素数n;else coutx不是素数n;else cout您输入的不是正数! n;bool sushu ( int n )if(n2) return false;int i=2;while(in)if(n%i=0) return false;i+;return true;2编写一个函数求下式的和:s=a+aa+aaa+aaa其中a是19中的一个数字(aaa的含义为100*a+10*a+a),项数为n,a和n皆为函数的参数。编写主函数,调用上述函数分别求出a为1时12项的和、a为5时8项的和,以及a为9时13项的和。提示:假设和式中的各项为b0,b1,b2,bn,则可知b0 = a,b1 = b010+a,b2 = b110+ a,。即每一项由前一项乘以10加a递推得到。#includedouble f(int a, int n);void main()int a=1, n=12;couta=a, n=n时,s=f(a, n)endl;a=5, n=8;couta=a, n=n时,s=f(a, n)endl;a=9, n=13;couta=a, n=n时,s=f(a, n)endl;double f(int a, int n)if(a9 | n=0) return 0;int i=0;double b=0, s=0;while(in)b=b*10+a;s=s+b;i+;return s;3编写函数一,判断一个年份是否是闰年,若是返回true,否则返回false。编写函数二,求一个月有多少天,输入参数:年、月;输出数据:该月的天数。提示:第二个函数需要调用第一个函数判断是否是闰年,从而确定二月是28天还是29天。编写主函数,调用上述函数,打印用户指定的日期(年、月、日)是该年的第几天。#includebool runnian(int);int tianshu(int, int);void main()int nian, yue, ri;coutnianyueri;if(nian0&yue=1&yue=1&ri0)s+=tianshu(nian, i);i-;cout这是该年第s天。n;elsecout输入日期有误!n;elsecout输入年月不合理!n;bool runnian(int n)if(n%4=0&n%100!=0|n%400=0)return true;elsereturn false;int tianshu(int nian, int yue)switch(yue)case 1:case 3:case 5:case 7:case 8:case 10:case 12: return 31;case 2:if(runnian(nian) return 29;else return 28;case 4:case 6:case 9:case 11:return 30;4(选做)编写一个函数void shapeV(int n=5),实现在屏幕上输出如下所示由组成的V形图,其中图案的层数根据参数n确定,形参n的默认值为5。并编写如下主函数测试上述函数的功能:void main( )shapeV( );shapeV( 1);shapeV( 11); #includevoid shapeV(int n=5);void main( )shapeV();shapeV(1);shapeV(11);void shapeV(int n)for(int i=1; i=n; i+)for(int j=1; j=2*(n-i)+1; j+) cout;coutendl;/* 从键盘上输入一个三角形中三条边a、b、c的长度, 请利用求面积公式(其中s=(a+b+c)/2)求出三角形的面积。*/#include #include void main()double a,b,c,s,area;coutabc;if(a0 & b0 & c0 & a+bc & b+ca & c+ab)s=(a+b+c)/2;area=sqrt(s*(s-a)*(s-b)*(s-c);coutarea= areaendl;elsecout输入有误:三角形两边之和不大于第三边!endl;/* 将1-100之间奇数顺序累加存入n中,直到其和等 于或大于200为止*/#include void main()int m,n=0;for(m=1;m=100&n200;m+=2)n+=m;coutn=nendl;/* 编程求使不等式 1+9+25+49+81+1000 成立的最大n值。*/#includevoid main()int n;for(int i=1, s=0; s1000; i+=2)s+=i*i;n=i-4;cout使该不等式成立的最大n值为:nendl;/* 已知一个正整数m,求其各位数字之和,保存到变量s中。*/#include void main()int m,s=0,n;m=13755218;while( m!=0)n=m%10;s+=n;m=m/10;coutsendl;/* 有一个数列,它的第一项为0,第二项为1,以后每一项都是它的前两项之和,编程 计算出此数列的第23项 */#includevoid main() int jieguo;int a1=0, a2=1, a3;for(int i=3; i=23; i+)a3=a1+a2;a1=a2;a2=a3;jieguo=a3;cout该数列第23项为:jieguoendl;/* 求多项式 1!+2!+3!+15!的值并 存入变量 out中.*/#include void main() int n=1,s=0; double out=0; for (int i=1; i=15; i+) n = n*i; s += n; cout sendl; out = s ;/* 打印水仙花数及个数 n (水仙花数是三位数,每 位数字的立方和等于这个数本身)*/#include void main()int m,n=0,a,b,c;for(m=100;m=999;m+)a=m/100;b=m%100/10;c=m%100%10;if(m=a*a*a+b*b*b+c*c*c)coutmn;n+;/* 定义一个C+函数: 分段函数double f(double)。*/#includedouble f(double);v

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论