Capítulo 1:
1. Genere los valores de parámetro 65 y 66 en caracteres y código ASCII respectivamente.
void printASCII()
{
cout << "01" << endl;
char a = 'A', b = 'B';
int ascii_1 = 65, ascii_2 = 66;//ASCII码中的5和6
cout << "字符输出:" << a << "," << b << endl;
cout << "ASCII码输出:" << '\t';
cout << (char)ascii_1 << '\t' << (char)ascii_2 << endl;
cout << endl;
}
2. Escriba un programa que asigne 100 espacios enteros para variables int.
void func2()
{
int* p = new int[100];
delete p;
cout << endl;
}
3. Escriba un programa completo que lea 15 valores flotantes, utilice punteros para almacenarlos en un bloque de almacenamiento y luego genere la suma y el valor mínimo de estos valores.
void func3()
{
const int num = 7;
float a[num];
cout << "Please insert 15 numbers." << endl;
float sum = 0;
float min = a[0];
for (int i = 0; i < num; i++)
{
if (min > a[i])
{
float temp = min;
min = a[i];
a[i] = temp;
}
sum += a[i];
}
cout << "和为:" << sum << endl;
cout << "最小值为:" << min << endl;
cout << endl;
}
4. Declare la siguiente matriz: int a[] = {1,2,3,4,5,6,7,8};
primero encuentre la posición de 4, copie la matriz a en la matriz b e invierta el contenido de la matriz a, luego busque la posición de 4 y finalmente genere el contenido de las matrices a y b respectivamente.
int func4Find(int a[], int len, int key)
{
for (int i = 0; i < len; i++)
{
if (a[i] == key)
{
//此处输出的是4的位置而不是索引
return i + 1;
}
}
return 0;
}
void printArray(int a[], int len)
{
for (int i = 0; i < len; i++)
{
cout << a[i] << "\t";
}
}
void func4()
{
const int num = 8;
int a[num] = { 1,2,3,4,5,6,7,8 };
//先查找4的位置
//cout << func4Find(a, num, 4) << endl;
int* p = find(a, a + num, 4);
cout << *p << endl;
//将数组a复制给数组b
int b[num];
copy(a, a + num, b);
//将数组a的内容反转
reverse(a, a + num);
//输出a,b数组内容
cout << "这是数组a:" << endl;
printArray(a, num);
cout << endl;
cout << "这是数组b:" << endl;
printArray(b, num);
cout << endl;
}
Capítulo 2:
1. Utilice varios métodos para escribir un programa que concatene dos cadenas.
string push_back(string str1, string str2)
{
//iterator迭代器,类似于指针
//参考网址:https://blog.csdn.net/lq18811566072/article/details/82155903
string::iterator iter = str2.begin();
for ( ; iter != str2.end(); ++iter)
{
str1.push_back(*iter);
}
return str1;
}
void AddString(string str1, string str2)
{
string strp = str1 + str2;
cout << strp << endl;
string strp1 = str1.append(str2);
cout << strp1 << endl;
cout << "push_back: " << push_back(str1, str2) << endl;
}
2. Se sabe que el contenido de un objeto de cadena str es "¡Estamos aquí!", y se utilizan varios métodos para generar el carácter "h"
: atraviesa la matriz para encontrar h y usa un puntero para recibirlo; valor de retorno de la función de búsqueda;
void FindStringValue()
{
string val = "We are here!";
cout << val[val.find('h')] << endl;
cout << val.substr(val.find('h'),1) << endl;
}
void Tip02ForMain() {
AddString("我是第一条数据哎,", "我是第二条数据哎");
FindStringValue();
}
Capítulo 3:
1. Escriba un programa para encontrar las raíces de la ecuación ax2+bx+c=0 y use tres funciones para encontrar las raíces de la ecuación cuando b2−4ac es mayor que cero, igual a cero y menor que cero. Es necesario ingresar los valores de a, b, c de la función principal y generar el resultado.
void tip3func1(double a, double b, double c)
{
double x1, x2;
double delta = b * b - 4 * a * c;
if (delta > 0)
{
x1 = (-b + sqrt(delta)) / (2 * a);
x2 = (-b - sqrt(delta)) / (2 * a);
cout << "当b2−4ac大于零时,x1 = "<< x1 <<"," << "x2 = " << x2 << endl;
}
else if(delta == 0)
{
x1 = x2 = (-b + sqrt(delta)) / (2 * a);
cout << "当b2−4ac等于零时,x1 = x2 =" << x1 << endl;
}
else
{
cout << "当b2−4ac小于零时,函数无解" << endl;
}
}
2. Defina la función up(ch). Si la variable de carácter ch es una letra minúscula, se convertirá en una letra mayúscula y se devolverá a través de up. De lo contrario, el carácter ch no cambiará. Requiere un programa breve y completo que muestre cómo se llama el programa.
char up(char ch)
{
return toupper(ch);
}
void tip3func2(char ch)
{
cout << up(ch) << endl;
}
4. Escriba una función con el parámetro de carácter C y el parámetro de número entero N para mostrar un triángulo compuesto por caracteres C. El método es que hay 1 carácter C en la primera línea, 2 caracteres C en la segunda línea, etc.
void print_Triangle(char C,int N)
{
for (int i = 0; i < N; i++)
{
for (int j = 0; j <= i ; j++)
{
cout << C;
}
cout << endl;
}
}
void tip3func4()
{
char c;
int n;
cout << "Plase enter c and n:" << endl;
cin >> c >> n;
print_Triangle(c, n);
}
5. Escriba una función strlen() para encontrar la longitud de una cadena y luego use la función strlen() para escribir un programa recursivo inverso de la función revers(s) para invertir el orden de la cadena s.
int strlen(string str)
{
//return str.length();
return str.size();
}
void revers(string& str, int left, int right)
{
int temp = 0;
if (left >= right) return;
temp = str[left];
str[left] = str[right];
str[right] = temp;
revers(str, left + 1, right - 1);
}
void tip3func5()
{
string str = "asdfadsfas";
int len = strlen(str);
cout << len << endl;
revers(str, 0, len - 1);
cout << str << endl;
}
6. Utilice plantillas de funciones para implementar un programa que ordene tres valores del mínimo al máximo.
template<typename T>
void SortFromSToB(T a[], int len)
{
for (int i = 0; i < len; i++)
{
for (int j = i + 1; j < len; j++)
{
if (a[i] > a[j])
{
T temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
}
void tip3func6()
{
int a[] = { 1,5,7,4,9,8,6 };
int len = sizeof(a) / sizeof(a[0]);
SortFromSToB(a, len);
for (int i = 0; i < len; i++)
{
cout << a[i];
}
}
7. Utilice plantillas de funciones para diseñar una función que calcule la suma de los elementos de la matriz y pruébela.
template<typename T>
T AddEleSum(T a[], int len)
{
double temp = 0;
for (int i = 0; i < len; i++)
{
temp += a[i];
}
return temp;
}
void tip3func7()
{
int a[] = { 1,5,7,4,9,8,6 };
int len = sizeof(a) / sizeof(a[0]);
cout << AddEleSum(a, len);
}
8. Sobrecargue la plantilla de función de la pregunta anterior para que pueda sumar dos matrices.
template<typename T>
T AddDoubleEleSum(T a[], int len, T b[], int len_b)
{
return AddEleSum(a, len) + AddEleSum(b, len_b);
}
void tip3func8()
{
int a[] = { 1,5,7,4,9,8,6 };
int len = sizeof(a) / sizeof(a[0]);
int b[] = { 8,5,4,1,9,0,2,5,3 };
int len_b = sizeof(b) / sizeof(b[0]);
cout << AddDoubleEleSum(a, len, b, len_b);
}