一个C++程序可以由一个程序单位或多个程序单位构成。每一个程序单位作为一个文件。在程序编译时,编译系统分别对各个文件进行编译,因此,一个文件是一个编译单元。
用高级语言编写的程序称为“源程序”,C++的源程序是以.cpp作为后缀的 对源程序(.cpp)进行编译 ? 目标程序(.obj) ? 二进制文件(.exe) 编写C++程序一般需要经过的几个步骤是:编辑?编译?连接?调试
(1)一个程序由一个或者多个源程序文件组成 在一个源程序文件中包括3部分 预处理指令、全局声明、函数定义 (2)函数是C语言程序的主要组成部分 (3)一个函数包括两个部分:函数首部和函数体 函数体又包括声明部分和执行部分 (4)程序总是从main函数开始之执行的 (5)程序中对计算机的操作是由函数中的C语句完成的 (6)在每个数据声明和语句的最后必须有一个分号 (7)C语言本身不提供输入输出语句 (8)程序应当包含注释
作用:利用sizeof关键字可以统计数据类型所占内存大小
作用:整型变量表示的是整数类型的数据 int - 占4个字节 unsigned int - 无符号整型,占4个字节
作用:用于表示一串字符 存储时存ASCII值,所以是整型。
常考:字符串 “abc” 在内存中占几个字节?
答:占4个字节,而不是3个字节,编译系统会在字符串最后自动加一个′\0′作为字符串结束标志。但′\0′并不是字符串的一部分,它只作为字符串的结束标志
常考: 字符串常量″abc\n″包含几个字符?
答:不是5个而是4个字符,其中“\n”是一个转义字符,但它在内存中占5个字节
作用:布尔数据类型代表真或假的值
bool类型只有两个值:
true — 真(本质是1)false — 假(本质是0)
bool类型占1个字节大小
作用:用于表示小数
浮点型变量分为两种:
单精度float ?占4个字节,提供6位有效数组 双精度double ?占8个字节,提供15位有效数字
一个整型常量可以用3种不同的方式表示:
十进制整数。如1357,-432,0等 八进制整数。在常数的开头加一个数字0,就表示这是以八进制数形式表示的常数。 十六进制整数。在常数的开头加一个数字0和一个英文字母X(或x),就表示这是以十六进制数形式表示的常数 1.4.2浮点数的表示方法 一个浮点数可以用两种不同的方式表示:
十进制小数形式。如21.456,-7.98等。 指数形式(即浮点形式)
作用:字符型变量用于显示单个字符
语法:char ch = ‘a’;
注意1:在显示字符型变量时,用单引号将字符括起来,不要用双引号 注意2:单引号内只能有一个字符,不可以是字符串
C和C++中字符型变量只占用1个字节。
字符常量只能包括一个字符,如′AB′ 是不合法的
字符常量区分大小写字母,如′A′和′a′是两个不同的字符常量
字符型变量并不是把字符本身放到内存中存储,而是将对应的ASCII编码放入到存储单元
关键字:cin、cout
语法: cin >> 变量1>>变量2>>…>>变量n 、cout<<表达式1<<表达式2<<…<<表达式n
cout<<a,b,c; //错误,不能一次插入多项
cout<<a+b+c; //正确,这是一个表达式,作为一项
cin>>a>>b>>c>>d;
作用:用于将表达式的值赋给变量
运算符 | 术语 | 示例 | 结果 |
---|---|---|---|
+ | 正号 | +3 | 3 |
- | 负号 | -3 | -3 |
+ | 加 | 10 + 5 | 15 |
- | 减 | 10 - 5 | 5 |
* | 乘 | 10 * 5 | 50 |
/ | 除 | 10 / 5 | 2 |
% | 取模(取余) | 10 % 3 | 1 |
++ | 前置递增 | a=2; b=++a | ; a=3; b=3; |
++ | 后置递增 | a=2; b=a++; | a=3; b=2; |
– | 前置递减 | a=2; b=–a; | a=1; b=1; |
– | 后置递减 | a=2; b=a–; | a=1; b=2; |
注意:
常考:
//递增
int main() {
//后置递增
int a = 10;
a++; //等价于a = a + 1
cout << a << endl; // 11
//前置递增
int b = 10;
++b;
cout << b << endl; // 11
//区别
//前置递增先对变量进行++,再计算表达式
int a2 = 10;
int b2 = ++a2 * 10;
cout << b2 << endl; //110
//后置递增先计算表达式,后对变量进行++
int a3 = 10;
int b3 = a3++ * 10;
cout << b3 << endl; //100
system("pause");
return 0;
}
————————————————
版权声明:本文为CSDN博主「生命是有光的」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Augenstern_QXL/article/details/117572644
作用:用于将表达式的值赋给变量
运算符 | 术语 | 示例 | 结果 |
---|---|---|---|
= | 赋值 | a=2; b=3; | a=2; b=3; |
+= | 加等于 | a=0; a+=2; | a=2; |
-= | 减等于 | a=5; a-=3; | a=2; |
*= | 乘等于 | a=2; a*=2; | a=4; |
/= | 除等于 | a=4; a/=2; | a=2; |
%= | 模等于 | a=3; a%2; | a=1; |
作用:用于表达式的比较,并返回一个真值或假值
请详细看表格即可
运算符 | 术语 | 示例 | 结果 |
---|---|---|---|
== | 相等于 | 4 == 3 | 0 |
!= | 不等于 | 4 != 3 | 1 |
< | 小于 | 4 < 3 | 0 |
> | 大于 | 4 > 3 | 1 |
<= | 小于等于 | 4 <= 3 | 0 |
>= | 大于等于 | 4 >= 1 | 1 |
注意:C和C++ 语言的比较运算中,“真”用数字“1”来表示, “假”用数字“0”来表示。
作用:用于根据表达式的值返回真值或假值
请详细看表格即可
运算符 | 术语 | 示例 | 结果 |
---|---|---|---|
! | 非 | !a | 如果a为假,则!a为真; 如果a为真,则!a为假。 |
&& | 与 | a && b | 如果a和b都为真,则结果为真,否则为假。 |
|| | 或 | a ||b | 如果a和b有一个为真,则结果为真,二者都为假时,结果为假。 |
!非为三者中运算符最高的
int runyear(int x)
{
if ((x % 4 == 0) && (x % 100 != 0) || x % 400 == 0)
{
return 1;
}
return 0;
}
//素数判断
int sunum(int a)
{
int c = (int)sqrt(a);//强制转换类型加开方#include <math.h>
int b = 2;
for (b = 2; b < c+1; b++)
{
if (a % b == 0)
break;
}
if (b == c+1)
{
return 1;
}
else
return 0;
}
最大公约数和最小公倍数:两个自然数的最大公约数与它们的最小公倍数的乘积等于这两个数的乘积
int main()
{
int a = 0, b = 0;
cout << "请输入两个整数:\n";
cin >> a >> b;
int min = a < b ? a : b;
for (;; min--)
{
if (a % min == 0 && b % min == 0)
break;
}
printf("最大共因数是%d\n", min);
return 0;
}
辗转相除法:求两个自然数的最大公约数的一种方法,也叫欧几里德算法 377 ÷ 319 =1…58 319 ÷ 58 =5…29 58 ÷ 29 =2 ∴(319,377)=29 用辗转相除法求几个数的最大公约数,可以先求出其中任意两个数的最大公约数,再求这个最大公约数与第三个数的最大公约数,依次求下去,直到最后一个数为止。 最后所得的那个最大公约数,就是所有这些数的最大公约数
int main()
{
int a = 0, b = 0;
cout << "请输入两个整数:\n";
cin >> a >> b;
int min = a < b ? a : b;
int max = a > b ? a : b;
while (1)
{
if (max % min == 0)
break;
int c = max % min;
max = min > c ? min : c;
min = min < c ? min : c;
}
printf("最大共因数是%d\n", min);
return 0;
}
虽然我很想说去了解一下atoi,但是这个在这不太适用
#include <iostream>
using namespace std;
int main()
{
char p[20] = "qwhu3123ifhcv1qfc";
int i = 0,j=0;
char arr[20];
while (p[i])
{
if (p[i] > '0' && p[i] < '9')
{
arr[j] = p[i];
j++;
}
i++;
}
arr[j] = '\0';
cout << arr;
return 0 ;
}
#include <iostream>
using namespace std;
int main()
{
int i, j;
int n, m;
int arr1[10][10];
int arr2[10][10];
cin >> n >> m;
for (i = 0; i < n; i++)
{
for (j = 0; j < m; j++)
{
cin >> arr1[i][j];
}
}
for (i = 0; i < 10; i++)
{
for (j = 0; j < 10; j++)
{
arr2[j][i] = arr1[i][j];
}
}
for (i = 0; i < m; i++)
{
for (j = 0; j < n; j++)
{
cout << arr2[i][j];
}
printf("\n");
}
return 0;
}
说实话,这题我是没想到的。因为这个加密就是直接加个数, 但是要注意的是char类型是有范围的
#include <iostream>
using namespace std;
int main()
{
int num = 0;
int a = 0;
cin >> num;
while (num)
{
a = a * 10 + num % 10;
num /= 10;
}
cout << a;
return 0;
}
#include <iostream>
using namespace std;
void Sort(int arr[], int sz)
{
//趟数
int i = 0;
int temp = 0;
for (i = 0; i < sz - 1; i++)
{
int j = 0;
int max = 0;
for (j =1 ; j < sz - 1 - i; j++)
{
if (arr[max] < arr[j])
max =j;
}
if (j == 1)
break;
temp = arr[j];
arr[j] = arr[max];
arr[max] = temp;
}
}
int main()
{
int arr[] = { 5,7,9,5,1,2,0,3,6,4 };
int sz = sizeof(arr) / sizeof(arr[0]);
Sort(arr, sz);
int i = 0;
for (i = 0; i < sz; i++)
{
cout<<arr[i]<<endl;//打印数组
}
return 0;
}
#include <iostream>
using namespace std;
void Sort(int arr[], int sz)
{
//趟数
int i = 0;
for (i = 0; i < sz - 1; i++)
{
//一趟冒泡排序,决定了一趟排序进行多少对比较
int j = 0;
for (j = 0; j < sz - 1 - i; j++)
{
if (arr[j] > arr[j + 1])
{
int tmp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = tmp;
}
}
}
}
int main()
{
//整型数据
int arr[] = { 5,7,9,5,1,2,0,3,6,4 };
//写一个函数对数组进行排序
int sz = sizeof(arr) / sizeof(arr[0]);
Sort(arr, sz);
int i = 0;
for (i = 0; i < sz; i++)
{
cout << arr[i] << endl;//打印数组
}
return 0;
}
#include <iostream>
using namespace std;
#define N 8 //设定待排序序列中的元素个数
void insertion_sort(int list[]) {
int insert;//存放要插入的数
int p;//存放要插入的位置下标position
int i=0;
//从第 2 个元素(下标为 1)开始遍历
for (i = 1; i < N; i++) {
insert = list[i];
// 记录目标元素所在的位置,从此位置向前开始遍历
p = i;
// 从 position 向前遍历,找到目标元素的插入位置
while (p > 0 && list[p - 1] > insert) {
//position 处的元素向后移动一个位置
list[p] = list[p - 1];
p--;
}
//将目标元素插入到指定的位置
if (p != i) {
list[p] = insert;
}
}
}
int main() {
int i;
int list[N] = { 94,949,49,64,6,16,311,151};
insertion_sort(list);
//输出 list 数组中已排好序的序列
for (i = 0; i < N; i++) {
cout<<list[i]<<endl;
}
}
#include <iostream>
using namespace std;
const int num= 10;
int erfind(int arr[],int n ,int k)
{
int left = 0;
int right = n - 1;
while (left <= right)
{
int mid = (left + right) / 2;
if (arr[mid] < k)
{
left = mid + 1;
}
else if (arr[mid] > k)
{
right = mid - 1;
}
else
{
return mid;
}
}
if (left > right)
return -1;
}
int main()
{
int arr[num] = { 1,2,3,4,5,6,7,8,9,10 };
int n = num;
int k = 7;
int a = erfind(arr, n, k);
if (a >= 0)
{
cout << "要找到的数的下标为:" << a << endl;
}
else
{
cout << "找不到" << endl;
}
return 0;
}
//鞍点指的是矩阵中的一个元素,它是所在行的最大值,并且是所在列的最小值。
//例如:在下面的例子中(第4行第1列的元素就是鞍点,值为8 )。
//11 3 5 6 9
//12 4 7 8 10
//10 5 6 9 11
//8 6 4 7 2
//15 10 11 20 25
#include <iostream>
#include <array>
using namespace std;
int main()
{
int i, j, k;
int m1, n1, max, min;
array<array<int,6>, 6>a = {0};
int flag, s = 0;
for (i = 0; i < 5; ++i) {//输入二维数组
for (j = 0; j < 5; ++j) {
cin>>a[i][j];
}
}
for (i = 0; i < 5; ++i)
{
max = a[i][0];//先取每行第一个数为最大值
for (j = 0; j < 5; ++j)
{
if (a[i][j] >= max)//找到该行的最大值a[m1][n1]
{
max = a[i][j];
m1 = i;
n1 = j;
}
}
min = a[m1][n1];//假设每行的最大值为每列的最小值
flag = 0;
for (k = 0; k < 5; ++k)
{
if (a[k][n1] < min)//如果发现该值不是所在列的最小值,flag置1;
flag = 1;
}
if (flag == 0)//所在列没有值比该值小,即为所在列的最小值
{
cout<<"行:" << m1 + 1 <<"列:" << n1 + 1<<"值为" << a[m1][n1];
s++;//鞍点数加1;
}
}
if (s == 0)//如果鞍点数为0
cout<<"not found";
return 0;
}
1 strlen 字符串已经 ‘\0’ 作为结束标志,strlen函数返回的是在字符串中 ‘\0’ 前面出现的字符个数(不包 含 ‘\0’ )。 2 strcpy 将指向的字符串复制到目标指向的字符串中,包括终止的 null 字符(并在该点停止)
3 strcmp 比较字符串大小
汉诺塔
#include <stdio.h>
int b = 0;
void move(char pos1, char pos3)
{
printf("%c-->%c ", pos1, pos3);
b++;
if (b % 5 == 0)
printf("\n");
}
//post1:起始位置,post2:中转位置,post3:终点位置
void Hannuo(int n, char pos1, char pos2, char pos3)
{
if (n==1)
{
move(pos1, pos3);
}
else
{
Hannuo(n - 1, pos1, pos3, pos2);//借助c将a上除最大的都移动到b上
move(pos1, pos3);
Hannuo(n - 1, pos2, pos1, pos3);//借助a将b上的都移动到c上
}
}
int main()
{
Hannuo(5, 'A', 'B', 'C');
return 0;
}