一、题目总结:
改错题:
- 丢失;
- 变量使用前未定义。
二、题目
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;
时,由于*p
是const 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循环