文档库 最新最全的文档下载
当前位置:文档库 › c基础练习题及解答细节全解

c基础练习题及解答细节全解

“C++程序设计”实验一简单的C++程序

1、编写简单的屏幕输出程序:

[过程]

①首先在资源管理器中,在用户盘(硬盘)创建自己的文件夹,例如可以以自己的学号为名建立文件夹。

②进入Visual C++开发环境,新建C++源文件,存放在上一步建立的文件夹中。打开源文件编辑窗口,输入以下源代码:

#include

void main( )

{

cout<< “……”;// 省略号处是想要输出到屏幕上的内容,可以随意编辑。

}

③保存文件后单击“编译compile”按钮(快捷键Ctrl+F7),在出现的对话框中单击“是”。

④若没有错误,继续单击“连接build”按钮(快捷键F7)。若没有错误则继续单

击“执行execute”按钮(快捷键Ctrl+F5),查看程序运行结果。

#include

void main()

{

cout<< “Hello :-) \n”;// 省略号处是想要输出到屏幕上的内容。

}

2、将两个数交换后输出。

[分析] 交换两个数,一般方法是用一个中间变量,经过几次赋值实现。

#include

void main( )

{

double a, b, temp;

cout<<"请输入任意两个数(以空格间隔输入):"; // 此语句是显示输入提示

cin>>a>>b; // 此语句是将用户输入的两个数依次保存到a、b两个变量中

cout<<"a="<

cin>>a>>b; // 此语句是将用户输入的两个数依次保存到a、b两个变量中

cout<<"a="<

cout<<" /*"<

cout<<" /*\t\t X\t X"<

cout<<" |*\t\t X\t X"<

cout<<" |*\t XXXXXXX XXXXXXX"<

cout<<" |*\t\t X\t X"<

cout<<" \\*\t\t X\t X"<

cout<<" \\*"<

cout<<"\t\\***/"<

}

4.根据注释补充下面的程序中省略号处的语句,运行程序,并理解其语句及输出的含义:

#include

void main()

{ ……; // 定义一个整型变量a

……; // 定义一个字符型变量b

b = ‘a’; // 给变量b赋值为字符‘a’

……; // 将变量b的值赋给变量a

cout<< “a=”<

……; //输出变量b的值

}

#include

void main()

{ int a; // 定义一个整型变量a

char b; // 定义一个字符型变量b

b = 'a'; // 给变量b赋值

a=b; // 将变量b的值赋给变量a

cout<< "a="<

cout<< "b="<

实验二 C++数据类型、操作符、表达式和语句

提示:每题建立一个C++源文件。当完成一个题目后,使用菜单“文件”—〉“关闭工作区”,再新建C++源文件做下一个题目。

1.在程序中定义整型变量x_int 、双精度实数型变量y_double 、字符型变量m_char 和布尔型变量n_bool ,并请用户输入x_int 、y_double 和m_char 三个变量的值,之后给变量n_bool 赋值为(m_char>x_int ),输出并观察(x_int/y_double )、(y_double-m_char )以及n_bool 的值,理解这些输出的含义。

例如:输入1 1 1

#include

void main()

{

int x_int;

double y_double;

char m_char;

bool n_bool;

cout<<"请输入一个整数、一个实数和一个字符:";

cin>>x_int>>y_double>>m_char;

n_bool=m_char>x_int;

cout<

cout<

}

3.编写程序:根据用户输入的球的半径值,分别计算球的表面积、体积和质量,并输出计算结果。

[提示] 假设用户输入的球的半径的单位是米,球的密度为7.8kg/m 3,球的表面积的计

算公式为 24r s π=,球的体积的计算公式为 33

4

r v π=。其中π的值使用3.14即可。 #include

void main()

{

const double pi=3.14, midu=7.8;

double banjing, bmianji, tiji, zhiliang;

cout<<"请输入球的半径值(米):";

cin>>banjing;

bmianji=4*pi*banjing*banjing;

tiji=bmianji*banjing/3;

zhiliang=tiji*midu;

cout<<"该球的表面积为"<

<<"平方米,体积为"<

<<"立方米,质量为"<

}

4.让用户输入一个秒数,编程实现将它转换成小时、分钟、秒来表示。例如输入7278秒,则输出:2小时1分18秒。

#include

void main()

{

int zongm, shi, fen, miao;

cout<<"请输入一个秒数:";

cin>>zongm;

if(zongm>0)

{

shi=zongm/3600;

fen=zongm%3600/60;

miao=zongm%60;

cout<

<

<

}

}

实验三分支选择语句的应用

提示:每题建立一个C++源文件。当完成一个题目后,使用菜单“文件”—〉“关闭工作空间”,再新建C++源文件做下一个题目。

1.用户输入两个整数x和y,问:y是否是x的倍数?

编程输出回答“是”或“不是”。

#include

void main()

{

int x, y;

cout<<"please input x and y: ";

cin>>x>>y;

if(y%x==0)

cout<

else

cout<

}

2.编写程序求解如下分段函数。

#include void main() {

double x, y;

cout<<"请输入自变量x 的值:";

cin>>x;

if(x<12) y=x*x-162;

else if(x<=70) y=x+30;

else y=100;

cout<<"y="<

}

3.单位编排活动小组,30岁及以下的分在第一组,40岁的分在第二组,50岁以上的分在第三组,其余年龄的分在第四组。假设王五输入了自己的年龄,保存在变量age 中,那么他应该分在第几组?编程求解并输出答案。

#include

void main()

{

int age;

cout<<"请输入年龄: ";

cin>>age;

if(age>=20&&age<70)

{

if(age<=30)

cout<<"应分至第一组。\n";

else if(age==40)

cout<<"应分至第二组。\n";

else if(age>50)

cout<<"应分至第三组。\n";

else

cout<<"应分至第四组。\n";

}

else

cout<<"输入年龄不合理!\n";

}

4.根据用户输入的整数(1~7代表星期一~星期日),编程输出星期这一天对应的英文或中文名称。例如,用户输入3,则输出应显示为“Wednsday ”或“星期三”。

#include

void main()

{

int a;

y= x 2-162,x<12 x+30,12=< x<=70 100,x>70

cout<<"请输入星期(1~7): ";

cin>>a;

switch(a){

case 1: cout<<"Monday\n"; break;

case 2: cout<<"Tuesday\n"; break;

case 3: cout<<"Wednesday\n"; break;

case 4: cout<<"Thursday\n"; break;

case 5: cout<<"Friday\n"; break;

case 6: cout<<"Saturday\n"; break;

case 7: cout<<"Sunday\n"; break;

default: cout<<"error\n";

}

}

5.已知标准体重的计算方法如下:

男性:标准体重(kg)=身高(cm)-100

女性:标准体重(kg)=身高(cm)-105

试编写程序,由用户输入其性别(‘m’代表男性,‘f’代表女性)和身高,程序计算并输出其标准体重。

#include

void main()

{

char xingbie;

int shengao, tizhong;

cout<<"请输入性别('m'代表男性,'f'代表女性):";

cin>>xingbie;

if((xingbie=='m')||(xingbie=='f'))

{

cout<<"请输入身高(厘米):";

cin>>shengao;

if(xingbie=='m') tizhong=shengao-105;

else tizhong=shengao-100;

cout<<"标准体重为"<

}

}

6(选做).编程实现如下算术功能:用户输入两个数字(可带小数)及一个算术操作符(’+’、’-‘、’*’或’/’),若输入的算术操作符不对,则输出提示信息(例如“无效的算术操作符,无法计算”),否则,即输出相应的算式及结果。

注意:计算除法时,除数不能为0。

#include

void main()

{

double a,b;

char c;

cout<<"请输入两个数字(可带小数)和一个操作符('+'、'-'、'*'或'/'):";

cin>>a>>b>>c;

switch(c)

{

case '+': cout<

case '-': cout<

case '*': cout<

case '/':

if(b!=0)

cout<

break;

default: cout<<"无效的算数操作符,无法计算!\n";

}

}

实验四循环语句的应用

提示:每题建立一个C++源文件。当完成一个题目后,使用菜单“文件”—〉“关闭工作空间”,再新建C++源文件做下一个题目。

1.设某县2000年工业总产值为200亿元,如果该县预计平均年工业总产值增长率为4.5%,那么多少年后该县年工业总产值将超500亿元

(参考答案:21年)

#include

void main()

{

double chanzhi=200;

int nianshu=0;

while(chanzhi<=500)

{

nianshu++;

chanzhi*=1.045;

}

cout<<"经过"<

}

2.请在屏幕上显示N行如图所示的数值(即第i行为“i: i2i3”),其中N是个常量,其值在程序运行之初确定。(要求:用for语句实现)

#include

void main()

{

const int N=10;

for(int i=1;i<=N;i++)

cout<

}

3.编写循环程序,判断用户输入的一个数是正数还是负数,当输入的数大于0时,输出“正数”;输入的数小于0时,输出“负数”;输入的数为0时结束程序。最后输出这些数相加的总和。

(要求:用do-while语句实现)

#include

void main()

{

double x;

do{

cout<<"请输入一个数:";

cin>>x;

if(x>0) cout<<"正数\n";

else if(x<0) 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)

#include

void main()

{

int limit;

cout<<"请输入limit=";

cin>>limit;

int n=1, s=0;

while(s

{

s+=n*n;

n+=2;

}

cout<<"使该不等式成立的最大n值为:"<<(n-4)<

}

5(选做).请用户输入20个字符,编程实现将其中的小写字母转换为大写字母后输出。例如,若用户输入“VkQK0Ms]\Q,mb/;lGa;q”,则应输出“VKQK0MS]\Q,MB/;lGA;Q”。

提示:每一个英文字母的大写和小写的ASCII码相差32。即,若字符型变量ch中是一个小写英文字母,则char(ch-32)即其对应的大写英文字母。

#include

void main()

{

char ch;

int i;

cout<<"请输入20个字符: ";

i=0;

while(i<20)

{

cin>>ch;

if(ch>='a'&&ch<='z') cout<

else cout<

i++;

}

cout<

} 6(选做).有20只猴子吃掉50个桃子,已知每只公猴能吃5个桃子、每只母猴能吃4个桃子、每只小猴能吃2个桃子,编程求出这20只猴子中可以有公猴、母猴、小猴各多少只。(答案:0 5 15或2 2 16)

#include

void 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<<"公侯"<

实验五 函数的概念及应用

1.编写一个函数double f(double x),求解如下分段函数。

提示:求幂的数学函数是pow(x, y),求平方根的数学函数是sqrt(x)。要使用这些数学函数,需要在文件开始添加预编译指令#include

#include

#include

double f(double);

void main()

{

double x;

x=-28;

cout<<"x="<

cin>>m>>n;

if(m>0&&n>0)

cout<

else

cout<<"您输入的不是两个正整数!\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。

#include

bool sxh(int);

void main()

{

cout<< "水仙花数:\n";

for(int i=100; i<1000; i++)

if(sxh(i)) cout<

cout<

}

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;

else

return false;

} 4(选做).编程实现,在屏幕上输出如下所示由’X ’组成的X 形图案。

#include

void 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) cout<<'X';

else cout<<' ';

}

cout<

}

}

5(选做).编写一个函数,实现在屏幕上打印出九九乘法表。基本效果如下图1,同学们可自己作进一步的美化,如下图2。

提示:两层循环嵌套使用。

#include

#include

void first();

void second();

void main()

{

cout<<"基本九九表:\n\n";

first(); 图1 图2

cout<

cout<<"改进后的九九表:\n\n";

second();

cout<

}

// 基本(图1)

void first()

{

int i, j;

for(i=1; i<10; i++)

{

for(j=1; j<=i; j++)

cout<

cout<

}

}

// 改进(图2)

void second()

{

int i, j;

cout<

for(i=1; i<10; i++)

cout<

cout<

for(i=1; i<43; i++)

cout<<'-';

cout<

for(i=1; i<10; i++)

{

cout<

for(j=1; j<=i; j++)

cout<

cout<

}

}

实验六流程控制语句、函数的综合应用

1.编写一个函数bool sushu ( int n ),判断用户输入的一个正整数是否是素数,若是返回true,否则返回false。

提示:素数即质数,判断n是否素数的方法是:分别用2、3、4、……、n-1去除n,如果n能被整除,则表明n不是素数,反之是素数。

说明:1不是素数,2、3、5、7、11、13、。。。。。。等是素数。

#include

bool sushu ( int n );

void main()

{

int x;

cout<<"请输入一个正整数:";

cin>>x;

if(x>0)

{

if(sushu(x)) cout<

else cout<

}

else cout<<"您输入的不是正数! \n";

}

bool sushu ( int n )

{

if(n<2) return false;

int i=2;

while(i

if(n%i==0) return false;

i++;

}

return true;

}

2.编写一个函数求下式的和:

s=a+aa+aaa+…+aa…a

其中a是1~9中的一个数字(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 = b0×10+a,b2 = b1×10+ a,……。即每一项由前一项乘以10加a递推得到。

#include

double f(int a, int n);

void main()

{

int a=1, n=12;

cout<<"a="<

cin>>nian>>yue>>ri;

if(nian>0&&yue>=1&&yue<=12)

{

if(ri>=1&&ri<=tianshu(nian, yue))

{

int s=ri;

int i=yue-1;

while(i>0)

{

s+=tianshu(nian, i);

i--;

}

cout<<"这是该年第"<

}

else

cout<<"输入日期有误!\n";

}

else

cout<<"输入年月不合理!\n";

}

bool runnian(int n)

{

if(n%4==0&&n%100!=0||n%400==0)

return true;

else

return 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);

}

#include

void 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<<'@';

cout<

}

}

/* 从键盘上输入一个三角形中三条边a、b、c的长度,请利用求面积公式(其中s=(a+b+c)/2)求出三角形的面积。

*/

#include

#include

void main()

{

double a,b,c,s,area;

cout<<"请输入三角形的三条边:";

cin>>a>>b>>c;

if(a>0 && b>0 && c>0 && a+b>c && b+c>a && c+a>b){

s=(a+b+c)/2;

area=sqrt(s*(s-a)*(s-b)*(s-c));

cout<<"area= "<

}

else{

cout<<"输入有误:三角形两边之和不大于第三边!"<

}

}

/* 将1-100之间奇数顺序累加存入n中,直到其和等

于或大于200为止

*/

#include

void main()

{

int m,n=0;

for(m=1;m<=100&&n<200;m+=2)

n+=m;

cout<<"n="<

}

/* 编程求使不等式 1+9+25+49+81+……<1000 成立的最大n值。

*/

#include

void main()

{

int n;

for(int i=1, s=0; s<1000; i+=2)

s+=i*i;

cout<<"使该不等式成立的最大n值为:"<

}

/* 已知一个正整数m,求其各位数字之和,保存到变量s中。

*/

#include

void main()

{

int m,s=0,n;

while( m!=0)

{

n=m%10;

s+=n;

m=m/10;

}

cout<

}

/* 有一个数列,它的第一项为0,第二项为1,以后每一项都是它的前两项之和,编程计算出此数列的第23项 */

#include

void 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项为:"<

}

/* 求多项式 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 <

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)

{

cout<

n++;

}

}

}

/* 定义一个C++函数: 分段函数double f(double)。

*/

#include

double f(double);

void main()

{

double a, b;

a=-35;

b=f(a);

cout<<"x="<

cin>>a>>b;

if(isHuZhi(a, b))

cout<

else

cout<

}

/* 编写一个C++函数max,输入参数为3个实数,输出为其中的最大数。*/

#include

double max(double, double, double);

void main()

{

double a, b, c, d, e, f;

cout<<"请输入6个数:";

cin>>a>>b>>c>>d>>e>>f;

double max1=max(a,b,c);

double max2=max(d,e,f);

cout<<"最大值为:";

if(max1>max2) cout<

else cout<

cout<

}

double max(double x, double y, double z)

{

double m;

if(x>y) m=x;

else m=y;

if(m>z) return m;

else return z;

}

/* 定义一个C++函数isprime(int),功能为判断一个正整数是否是素数。*/

#include

bool isprime(int);

void main()

{

for(int i=100; i<200; i++)

if(isprime(i))

cout<

}

bool isprime(int n)

{

bool judge=true;

for(int i=2; i

if(n%i==0)

{

judge=false;

break;

相关文档
相关文档 最新文档