【C++】期末复习day05编程大题+题型总结

一、题目总结:

改错题:

  1. 丢失;
  2. 变量使用前未定义。

二、题目

1.编写一个基于对象的程序,求圆球的体积,要求:

(1)定义一个圆球类Circle,类内有私有数据成员radius(半径),公有成员函数get_value()、volume()。

(2)get_value()函数和volume()函数在类外定义。get_value()作用是从键盘输入半径的值,volume()的作用是计算圆球的体积并在屏幕上显示。

(圆球体积计算公式为:v=4/3πr3)

(3)在main()函数定义Circle类的对象circle1,并调用get_value()函数给球半径赋值,调用volume()函数输出圆球的体积

#include<iostream>
#include<cmath>
using namespace std;
class Circle{
	private:
		int radius;
	public:
		double get_value();
		double volume();
};
double Circle::get_value(){
	cin>>radius;
}
double Circle::volume(){
	double sum;
	sum=(4.0/3)*(M_PI)*pow(radius,3);
	cout<<sum;
}
int main(){
	Circle circle1;
	circle1.get_value();
	circle1.volume();
	return 0;
}

注意两个细节:

  • 要注意M_PI是cmath库中的宏定义常量
  • 要记得4.0/3才能带小数,4/3是整除,永远是1

 2.程序运行题

(1)

判断条件是i是偶数则输出*,所以从1-10,有2,4,6,8,四个*,当i==10循环结束

(2) 

 

 for循环会执行8次,当i=0,时执行a+=5,即a=5(此时i%3==0,即if语句不执行,那就输出a);

i=1,++a,即a=6;i=2,执行--a,a=5;i=3,a=4(此时i%3==0,if语句就不执行,那就输出a)后续;i=4,a=3;i=5,a=2;i=5,a=1;i=6,a=0,输出a;i=7,a=-1;

故最后输出5 4 1

这道题需要注意continue的使用,会让代码跳过本次循环的后面代码,直接执行下一次循环的初始代码 

(3) 

字符指针型数组,a[],也就是说a是指向该字符数组的指针

字符指针型变量p,也就是说p是指向a的指针(指针的指针)

a默认是首个元素,p++即把指针往后移一个,那就是说输出“456”

(此时,p 指向 a 数组的第二个元素,即字符串 "456" 的地址。当我们使用 cout << *p << endl; 时,由于 *pconst char* 类型,它被解引用以获取它所指向的字符串,因此输出的是字符串 "456" 的值本身,而不是它的地址。)

(4) 

 

变量可分为全局和局部 全局变量都是静态变量static 在函数内部的static(静态变量)就是局部变量

在循环中执行三遍 fun(n)

i=0时,fun(3)就是n--;(::n=2) n+=3,在n+=i,实际上改变的是函数内部的n,即n=3;

输出局部变量3

注意静态局部变量不会调用时再次被赋值0

i=1时,fun(n)就是fun(2),n--(::n=1),n+=2,n=5,输出5

i=2,fun(1),n+=1,输出6

(5) 

 

 fun(&a,b)的意思是,int*x=&a,x指向a的地址,那么*x=a的值,int&y=b,&代表y是对b的引用,即y=b

int a = 10,*x=6,a+=6,a=16;

fun(&a,b,n)的意思是说此时n=2,并且b此时已经变成了y,即10,那么a=11,在执行*x+=2,*x=8,a+=8,a=19

(6) 

fun(3,2),即进入else语句,fun(2,2)+fun(2,1)

fun(2,2)进入else if语句,返回1

fun(2,1)返回fun(1,1)和fun(1,0)

fun(1,1)返回1

fun(1,0)返回fun(0,0)和fun(0,-1)

fun(0,0)返回1

fun(0,-1)返回0

输出3

(7) 

 

i=0,执行i++,就是输出0

i=1时,执行default,输出1

i=2时,输出2

3.程序设计题 

 

1.a[i]+b[i]+carry

2. sum[i]%10

3.break       因为i是从20开始减的,所以等到他数字不为0的时候才开始执行后续的for循环 

  • 12
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值