您的位置:首页 > 编程语言 > C语言/C++

C++Primer(第六章课后习题)(程序题源代码)

2016-09-10 00:51 447 查看
6.4

#include<stdio.h>
#include<vector>
#include<ctime>
#include<cstdio>
#include<iostream>
#include<string>

using namespace std;
int fact(int val)
{
if (val < 0)
return -1;
int ret = 1;
for (int i = 1; i != val + 1; ++i)
ret *= i;
return ret;
}

int main()
{
int num;
cout << "请输入一个整数:";
cin >> num;
cout << num << "的阶乘是:" << fact(num) << endl;
return 0;
}


6.5

#include<stdio.h>
#include<vector>
#include<ctime>
#include<cstdio>
#include<iostream>
#include<string>

using namespace std;
double myABS(double val)
{
if (val < 0)
return val*-1;
else
return val;
}

double myABS2(double val)
{
return abs(val);
}

int main()
{
double num;
cout << "请输入一个数:";
cin >> num;
cout << num << "的绝对值是:" << myABS(num) << endl;
cout << num << "的绝对值是:" << myABS2(num) << endl;
return 0;
}


6.6

#include<stdio.h>
#include<vector>
#include<ctime>
#include<cstdio>
#include<iostream>
#include<string>

using namespace std;

double myADD(double val1, double val2)
{
double result = val1 + val2;
static unsigned iCnt = 0;
++iCnt;
cout << "该函数已经累计执行了" << iCnt << "次" << endl;
return result;
}
int main()
{
double num1, num2;
cout << "请输入两个整数:";
while (cin >> num1 >> num2)
{
cout << num1 << "与" << num2 << "的求和结果是:"
<< myADD(num1, num2) << endl;
}
return 0;
}


6.7

这里写代码片


6.8

#ifndef CHAPTER6_H_INCLUDED
#define CHAPTER6_H_INCLUDED

int fact(int);
double myABS(double);
#endif


6.9

#include"Chapter6.h"
#include<math.h>
using namespace std;
double myABS(double val)
{
if (val < 0)
return val*-1;
else
return val;
}

double myABS2(double val)
{
return abs(val);
}
int fact(int val)
{
if (val < 0)
return -1;
int ret = 1;
for (int i = 1; i != val + 1; ++i)
ret *= i;
return ret;
}

#include<stdio.h>
#include<vector>
#include<ctime>
#include<cstdio>
#include<iostream>
#include<string>
#include"Chapter6.h"

using namespace std;

int main()
{
int num;
cout << "请输入一个整数:";
cin >> num;
cout << num << "的阶乘是:" << fact(num) << endl;
return 0;
}


6.10

#include<stdio.h>
#include<vector>
#include<ctime>
#include<cstdio>
#include<iostream>
#include<string>

using namespace std;

void mySWAP(int *p, int *q)
{
int tmp = *p;
*p = *q;
*q = tmp;
}

int main()
{
int a = 5, b = 10;
int *r = &a, *s = &b;
cout << "交换前:a=" << a << ",b=" << b << endl;
mySWAP(r, s);
cout << "交换后:a=" << a << ",b=" << b << endl;
return 0;
}


6.11

#include<stdio.h>
#include<vector>
#include<ctime>
#include<cstdio>
#include<iostream>
#include<string>

using namespace std;

void reset(int &i)
{
i = 0;
}

int main()
{
int num = 10;
cout << "重置前:num=" << num << endl;
reset(num);
cout << "重置后:num=" << num << endl;
return 0;
}


6.12

#include<stdio.h>
#include<vector>
#include<ctime>
#include<cstdio>
#include<iostream>
#include<string>

using namespace std;

void mySWAP(int &i, int &j)
{
int tmp = i;
i = j;
j = tmp;
}

int main()
{
int a = 5, b = 10;
int *r = &a, *s = &b;
cout << "交换前:a=" << a << ",b=" << b << endl;
mySWAP(a,b);
cout << "交换后:a=" << a << ",b=" << b << endl;
return 0;
}


6.13

#include<stdio.h>
#include<vector>
#include<ctime>
#include<cstdio>
#include<iostream>
#include<string>

using namespace std;

void a(int);
void b(int&);

int main()
{
int s = 0, t = 10;
a(s);
cout << s << endl;
b(t);
cout << t << endl;
return 0;
}

void a(int i)
{
++i;
cout << i << endl;
}

void b(int& j)
{
++j;
cout << j << endl;
}


6.17

#include<stdio.h>
#include<vector>
#include<ctime>
#include<cstdio>
#include<iostream>
#include<string>

using namespace std;

bool HasUpper(const string& str)
{
for (auto c : str)
{
if (isupper(c))
return true;
return false;
}
}

void ChangeToLower(string& str)
{
for (auto &c : str)
{
c = tolower(c);
}
}

int main()
{
cout << "请输入一个字符串:" << endl;
string str;
cin >> str;
if (HasUpper(str))
{
ChangeToLower(str);
cout << "转换后的字符串是:" << str << endl;
}
else
{
cout << "该字符串不含大写字母,无须转换" << endl;
}
return 0;
}


6.21

#include<stdio.h>
#include<vector>
#include<ctime>
#include<cstdio>
#include<iostream>
#include<string>

using namespace std;

int myCompare(const int val, const int *p)
{
return (val > *p) ? val : *p;
}

int main()
{
srand((unsigned)time(NULL));
int a[10];
for (auto &i : a)
i = rand() % 100;
cout << "请输入一个数:";
int j;
cin >> j;
cout << "您输入的数与数组首元素中交大的是:" << myCompare(j, a) << endl;
cout << "数组的全部元素是:" << endl;
for (auto i : a)
cout << i << " ";
cout << endl;
return 0;
}


6.22

#include<stdio.h>
#include<vector>
#include<ctime>
#include<cstdio>
#include<iostream>
#include<string>

using namespace std;

void SwapPointer1(int *p, int *q)
{
int *temp = p;
p = q;
q = temp;
}

void SwapPointer2(int *p, int *q)
{
int temp = *p;
*p = *q;
*q = temp;
}

void SwapPointer3(int *&p, int *&q)
{
int *temp = p;
p = q;
q = temp;
}

int main()
{
int a = 5, b = 10;
int *p = &a, *q = &b;
cout << "交换前:" << endl;
cout << "p的值是:" << p << ",q的值是:" << q << endl;
cout << "p所指的值是:" << *p << ",q所指的值是:" << *q << endl;
SwapPointer1(p, q);
cout << "交换后:" << endl;
cout << "p的值是:" << p << ",q的值是:" << q << endl;
cout << "p所指的值是:" << *p << ",q所指的值是:" << *q << endl;
a = 5, b = 10;
cout << "交换前:" << endl;
cout << "p的值是:" << p << ",q的值是:" << q << endl;
cout << "p所指的值是:" << *p << ",q所指的值是:" << *q << endl;
SwapPointer2(p, q);
cout << "交换后:" << endl;
cout << "p的值是:" << p << ",q的值是:" << q << endl;
cout << "p所指的值是:" << *p << ",q所指的值是:" << *q << endl;
a = 5, b = 10;
cout << "交换前:" << endl;
cout << "p的值是:" << p << ",q的值是:" << q << endl;
cout << "p所指的值是:" << *p << ",q所指的值是:" << *q << endl;
SwapPointer3(p, q);
cout << "交换后:" << endl;
cout << "p的值是:" << p << ",q的值是:" << q << endl;
cout << "p所指的值是:" << *p << ",q所指的值是:" << *q << endl;
return 0;
}


6.23

#include<stdio.h>
#include<vector>
#include<ctime>
#include<cstdio>
#include<iostream>
#include<string>

using namespace std;

void print1(const int *p)
{
cout << *p << endl;
}

void print2(const int *p, const int sz)
{
int i = 0;
while (i != sz)
{
cout << *p++ << endl;
++i;
}
}

void print3(const int *b, const int *e)
{
for (auto q = b; q != e; ++q)
cout << *q << endl;
}

int main()
{
int i = 0;
int j[2] = { 0, 1 };
print1(&i);
print1(j);
print2(&i, 1);
print2(j, sizeof(j) / sizeof(int));
auto a = begin(j);
auto b = end(j);
print3(a, b);
return 0;
}


6.25

#include<stdio.h>
#include<vector>
#include<ctime>
#include<cstdio>
#include<iostream>
#include<string>

using namespace std;

int main(int argc, char **argv)
{
string str;
for (int i = 0; i != argc; i++)
str += argv[i];
cout << str << endl;
return 0;
}


6.26

#include<stdio.h>
#include<vector>
#include<ctime>
#include<cstdio>
#include<iostream>
#include<string>

using namespace std;

int main(int argc, char **argv)
{
for (int i = 0; i != argc; i++)
{
cout << "argc[" << i << "]:" << argv[i] << endl;
}
return 0;
}


6.27

#include<stdio.h>
#include<vector>
#include<ctime>
#include<cstdio>
#include<iostream>
#include<string>

using namespace std;

int iCount(initializer_list<int> il)
{
int count = 0;
for (auto val : il)
count += val;
return count;
}

int main()
{
cout << "1,6,9的和是:" << iCount({ 1, 6, 9 }) << endl;
cout << "4,5,9,18的和是:" << iCount({ 4, 5, 9, 18 }) << endl;
cout << "10,10,10,10,10,10,10,10,10的和是:"
<< iCount({ 10, 10, 10, 10, 10, 10, 10, 10, 10 }) << endl;
return 0;
}


#include<stdio.h>
#include<vector>
#include<ctime>
#include<cstdio>
#include<iostream>
#include<string>

using namespace std;

void print(vector<int> v, int index)
{
unsigned sz = v.size();
if (!v.empty() && index < sz)
{
cout << v[index] << endl;
print(v, index + 1);
}
}
int main()
{
vector<int> v = { 1, 3, 5, 7, 9, 11, 13, 15 };
print(v, 0);
return 0;
}


6.33

#pragma warning(disable:4996)
#include<cstdio>
#include<cstring>
#include<string>
#include<cmath>
#include<vector>
#include<algorithm>
#include<iostream>
#include<time.h>
#include<cstdlib>

using namespace std;

void  print(vector<int> vInt, unsigned index)
{
unsigned sz = vInt.size();
if (!vInt.empty() && index < sz)
{
cout << vInt[index] << endl;
print(vInt, index + 1);
}
}

int main()
{
vector<int> v = { 1, 3, 5, 7, 9, 11, 13, 15 };
print(v, 0);
return 0;
}


6.38

#pragma warning(disable:4996)
#include<cstdio>
#include<cstring>
#include<string>
#include<cmath>
#include<vector>
#include<algorithm>
#include<iostream>
#include<time.h>
#include<cstdlib>

using namespace std;

string make_plural(size_t ctr, const string &word, const string &ending = "s")
{
return (ctr > 1) ? word + ending : word;
}

int main()
{
cout << "success的单数形式:" << make_plural(1, "success", "es") << endl;
cout << "success的复数形式:" << make_plural(2, "success", "es") << endl;
cout << "failure的单数形式:" << make_plural(1, "failure") << endl;
cout << "failure的单数形式:" << make_plural(2, "failure") << endl;
return 0;
}


6.47

#pragma warning(disable:4996)
#include<cstdio>
#include<cstring>
#include<string>
#include<cmath>
#include<vector>
#include<algorithm>
#include<iostream>
#include<time.h>
#include<cstdlib>

using namespace std;

void  print(vector<int> vInt, unsigned index)
{
unsigned sz = vInt.size();
#ifndef NDEBUG
cout << "vector对象的大小:" << sz << endl;
#endif
if (!vInt.empty() && index < sz)
{
cout << vInt[index] << endl;
print(vInt, index + 1);
}
}

int main()
{
vector<int> v = { 1, 3, 5, 7, 9, 11, 13, 15 };
print(v, 0);
return 0;
}


6.51

#pragma warning(disable:4996)
#include<cstdio>
#include<cstring>
#include<string>
#include<cmath>
#include<vector>
#include<algorithm>
#include<iostream>
#include<time.h>
#include<cstdlib>

using namespace std;

void f()
{
cout << "该函数无须参数" << endl;
}

void f(int)
{
cout << "该函数有一个整型参数" << endl;
}
void f(int, int)
{
cout << "该函数有两个整型参数" << endl;
}
void f(double a, double b = 3.14)
{
cout << "该函数有两个双精度浮点型参数" << endl;
}
int main()
{
//二义性f(2.56, 42);
f(42);
f(42, 0);
f(2.56, 3.14);
}


6.55

#pragma warning(disable:4996)
#include<cstdio>
#include<cstring>
#include<string>
#include<cmath>
#include<vector>
#include<algorithm>
#include<iostream>
#include<time.h>
#include<cstdlib>

using namespace std;

int func1(int a, int b)
{
return a + b;
}

int func2(int a, int b)
{
return a - b;
}

int func3(int a, int b)
{
return a*b;
}

int func4(int a, int b)
{
return a / b;
}

int main()
{
decltype(func1)* p1 = func1, *p2 = func2, *p3 = func3, *p4 = func4;
vector<decltype(func1)*>vF = { p1, p2, p3, p4 };
return 0;
}


6.56

#pragma warning(disable:4996)
#include<cstdio>
#include<cstring>
#include<string>
#include<cmath>
#include<vector>
#include<algorithm>
#include<iostream>
#include<time.h>
#include<cstdlib>

using namespace std;

int func1(int a, int b)
{
return a + b;
}

int func2(int a, int b)
{
return a - b;
}

int func3(int a, int b)
{
return a*b;
}

int func4(int a, int b)
{
return a / b;
}
void Compute(int a, int b, int(*p)(int, int))
{
cout << p(a, b) << endl;
}
int main()
{
int i = 5, j = 10;
decltype(func1)* p1 = func1, *p2 = func2, *p3 = func3, *p4 = func4;
vector<decltype(func1)*>vF = { p1, p2, p3, p4 };
for (auto p : vF)
{
Compute(i, j, p);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C++Primer