c++Primer学习笔记之七:第二章课后习题

//ex2.10
#include <iostream>
int main()
{
	std::cout<<"2M\n"
			<<"2\tM"
			<<std::endl;
	return 0;
}
//ex2.11
/*第一次编译通过,测试数据3^3是1875563862?发现是初始化的问题
*果断给result附初值1;
*/
#include <iostream>
int main()
{
	int base,exponent,result=1;  
	std::cout<<"Please input a number for base:"<<std::endl;;
	std::cin>>base;
	std::cout<<"Please input a number for exponent"<<std::endl;
	std::cin>>exponent;
	for (int cnt = 0;cnt != exponent; ++cnt){
		result *= base;
	}
	std::cout<<"the result of "
			<<base<<"^"<<exponent
			<<"is "<<result<<std::endl;
	return 0;
}

result未初始化时:

result初始化为1:


//ex2.15

/*前两个month和day定义正确
*后面的month和day定义是错误的
*编写程序运行,看看编译报错的信息
*发现错误原因在后面的09代表定义的是八进制数,但是八进制中没有数字9
*如果要定义9月7号,应改为int month1 = 011, day1 = 07;
*/
#include <iostream>
int main()
{
	int month = 9, day = 7;
	int month1 = 011, day1 = 07;
	std::cout<<"month="<<month<<"\n"
			<<"day="<<day<<"\n"
			<<"month1="<<month1<<"\n"
			<<"day1="<<day1;
	return 0;
}

//ex2.16

//编译几个定义看看输出信息

#include <iostream>
int main()
{
	//auto是c++关键字,不能用作变量标识符
	int car = 1024, auto = 2048;
	//定义格式正确,定义的时候系统会随机给ival一个比较大的值
	//然后用这个值给本身初始化,理论上没错,但是逻辑上不提倡这样
	int ival = ival;
	//cin输入流变量要在之前指定类型
	std::cin >> int input_value; 
	//wage没有定义
	double salary = wage = 9999.99;
	//()是函数调用符,在这里表示将calc()函数的返回值用作calc的初始化
	//但是在这个cpp中calc函数没有定义。
	double calc = calc(); 
	return 0;
}
//ex2.17

//输出变量看看结果

#include <iostream>
std::string global_str; 
int global_int; 
int main() 
{ 
int local_int; 
std::string local_str; 
std::cout<<"global_str:"<<global_str<<"\n"   //空
		<<"global_int:"<<global_int<<"\n"    // 0
		<<"local_int:"<<local_int<<"\n"      // 4201982 一个不清楚具体值的整数
		<<"local_str:"<<local_str<<std::endl; // 空
return 0; 
} 

//ex2.18

/*
1、声明一个string类型的变量,变量名是name
2、定义一个string类型的变量,变量名是name,并初始化为”exercise 3.5a“
3、声明并初始化,只能在函数体外部使用,意义与2相同
*/
//ex2.20

/*
*输出i=100,sum=45
*i在for语句作用域中重新命名了
*for循环结束后,输出语句输出的i是局部作用域下的i=100
*而sum在语句作用域中没有重新定义
*也就是for循环中的sum就是局部作用域下的sum,sum值改变为45
*最后输出sum=45
*/
#include <iostream>
int main()
{
	int i = 100, sum = 0; 
	for (int i = 0; i != 10; ++i) 
		sum += i; 
	std::cout << i << " " << sum << std::endl;
	return 0;
}
//ex2.21

/*
*不合法
*i只在语句作用域中定义,for循环结束后i也消失
*/
#include <iostream>
int main()
{
	int sum = 0; 
	for (int i = 0; i != 10; ++i) 
		sum += i; 
	std::cout << "Sum from 0 to " << i 
	<< " is " << sum << std::endl;
	return 0;
}

//ex2.22

/*
* int i是在for循环定义和处理的
* 在语句for循环外面经没法访问,
* 因此这个变量i对我们来说没有意义
* 最好将i在for循环外面定义
*/
//ex2.23
/*
*1、不合法,const是不可改变的变量,在声明的时候就需要初始化
*2、正确,没有问题
*3、sz是const类型,他的值是不可改变的
*/
//ex2.24

/*
*1、合法,强制转化为int行,值为1;
*2、不合法,引用类型要和数据类型一样,但这里是double
*3、正确,ival在初始化的时候就自动变为int型了
*4、正确
*/
//ex2.25

/*
*1、合法,编译通过;
*2、编译通过
*3、编译通过
*4、不合法,const 类型的rval3不能被赋值
*/
//ex2.26

/*
*a、int类型的ival和int类型的const引用
*b、第一个正确,const可以做右值,第二个不对,不能给const赋值
*/
//ex2.27

// 输出10 10

#include <iostream>
int main()
{
	int i, &ri = i; 
	i = 5; ri =10; 
	std::cout << i << " " << ri << std::endl;
	return 0;
}


//ex2.31

/*
*(a)定义,虽然是extern,但在后面初始化了,即已经定义
*(b)定义,系统会随机赋值
*(c)声明
*(d)定义,虽为extern,但在声明为const型的时候就必须初始化,因此
* 应该是已经初始化了的extern
*/

 
//ex2.32
/*
*(a)放在源文件中,是定义
*(b)放在头文件中,使用常量表达式定义的const型,在编译的时候就知道值是多少,
*(c)定义,放在源文件中
*(d)放在源文件中,编译的时候不知道const的具体值
*/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值