前言: 本文章用于记录本人在学习编程过程中遇到的BUG,内容大部分来自网上dalao的解答非原创
常见小失误
1.元音之母分大小写啊 记住!!!!
2.输入函数需要地址变量!!! 取地址!!!
2021.5.22
3.scanf("%c",a); 这种方式是可以接收空格的
所以循环两次次 scanf 输入 {a a}
接收不到第二个a;
4.用函数操作数组时 输入数组名就可以操作(因为数组名本质是地址);
5.接收浮点数时 用scanf("%d",a);不会报错,但是输入的数据会出现错误;
数组内容的比较
错误示范
int arrayA[] = { 5, 10, 15, 20, 25 };
int arrayB[] = { 5, 10, 15, 20, 25 };
if (arrayA == arrayB) // 语句错误
cout << "The arrays are the same. \n";
else
cout << "The arrays are not the same.\n";
正确示范
const int SIZE = 5;
int arrayA[SIZE] = { 5, 10, 15, 20, 25 };
int arrayB[SIZE] = { 5, 10, 15, 20, 25 };
bool arraysEqual = true; // 标志变量
int count = 0; //循环控制变量
//确定元素是否包含相同的数据
while (arraysEqual && count < SIZE)
{
if (arrayA[count] != arrayB[count])
arraysEqual = false;
count++;
}
//显示合适的消息
if (arraysEqual)
cout << "The arrays are equal.\n";
else
cout << "The arrays are not equal.\n";
此代码确定 arrayA 和 arrayB 是否包含相同的值。初始化为 true 的 bool 变量 arraysEqual 将表示数组是否相等。另一个初始化为 0 的变量 count 被用作循环计数器。
接下来开始一个 while 循环。只要 arraysEqual 为 true 并且计数器变量 count 小于 SIZE,循环就会执行。在每次迭代中,它会比较数组中不同的对应元素。如果它找到两个具有不同值的相应元素,那么 arraysEqual 变量将设置为 false,这将允许退出循环而不检查更多值。
循环完成后,if 语句将测试 arraysEqual 变量。如果变量仍然为 true,则说明没有发现差异,数组是相等的,然后就会显示一条消息指示该结论;否则,数组不相等,又会显示另外一条不同的消息。
原文链接: http://c.biancheng.net/view/1418.html
21.04.21. 更新
用函数比较字符串
int a = strcmp(char型变量,char型变量);//头文件 #include<string.h>
//两字符串一样 strcmp返回 0 , 否者返回首个不一样的字符间的差值;
总结:数组的比较不是简单的 ==
而是遍历数组每个成分 进行对应的逐个比较
21.04.18. 更新
空指针
int*p;
p = NULL//正确
//*p = NULL 错误
-
若有语句:int a=4,*p=&a;
下面均代表地址的一组选项是:
-
a,p,&*a 2) *&a,&a,*p
-
&a,p,&*p 4) *&p,*p,&a
-
int a = 4,p = &a;
此处 p是a的地址 不是p是a的地址的意思。
21.04.21. 更新
scanf()输入格式
scanf接收的使指针变量
int n, a[10];
scanf("%d%d", &n, a);
数组名本质是一个常数(且数据类型为指针变量,所以不加“&”取地址号,而n是变量名需要取地址)
21.04.25.更新
字符和字符串
char a;//这个叫创建字符
char b[10];//这段叫创建字符串
//字符用只能%c,字符串用%s
scanf("%c%s",&a,&b);
C语言标识符是指用来标识某个实体的一个符号,在不同的应用环境下有不同的含义,标识符由字母(A-Z,a-z)、数字(0-9)、下划线“_”组成,并且首字符不能是数字,但可以是字母或者下划线。例如,正确的标识符:abc,a1,prog_to。
错误例子: 1ab a-b
int flout double
int+flout 得到单浮点型
flout+ double得到双浮点型
将计算的数据存到什么类型的变量中将被强制转化
int 数组的输入和char 数组的输入
使用scanf函数输入时 scanf函数当每次读取到空格时会停止 当输入的字符包括“ ”空格时 应采用for循环的方式进行输入
int j;
char a[10];
for ( j = 0; j < 3; j++)
scanf("%c", &a[j]);
a[j] = '\0';\\补'\0'在最后,否则乱码
printf("%s", a);
vs2010
pow(x,y)
变量x必须是浮点型
四舍五入与截断
- 四舍五入
%.2f%.2lf - 截断
float n;
n=(int)(n*100)/100.0//截断保留两位
比较年月日
(来自今天写题的灵感)
年*10000+月*100+日=x;
通过比较x的大小来比较年份
(我tm就是个天才hhhhhh o( ̄▽ ̄)ブ)
查找一个句子的元音字母数(如何把空格放进数组)
元音之母分大小写啊 记住!!!!
char a[20],b[20];
int i, count=0;
for (i=0;;i++) {
scanf("%c", &a[i]);
if (a[i] != '\n') {
b[i] = a[i];
}
else
{
break;
}
}
b[i+1] = '\0';
for (i=0;b[i]!= '\0';i++) {
switch (b[i])
{
case 'a':
case 'e':
case 'i':
case 'o':
case 'u':
case 'A':
case 'E':
case 'I':
case 'O':
case 'U':
count++;
break;
default:
break;
}
}
printf("%d", count);
21.06.04
类的继承的私有变量的访问
class Rectangle { //长方形类声明
public:
Rectangle(float l1, float w1) {
L = l1;
W = w1;
}
float GetL() { return L; }
protected:
float GetW() { return W; }
private:
float L, W;
};
class Cuboid : protected Rectangle { //长方体类声明
public: //新增公有函数成员
Cuboid(float l1, float w1, float h1) :Rectangle(l1, w1) {
H = h1;
}
float GetL() { return Rectangle::GetL(); }//通过这种方式访问继承来的父类的私有变量
float GetW() { return Rectangle::GetW(); }
float GetH() { return H; }
private://新增私有数据成员
float H;
};
持续更新…bug是无穷无尽的 /(ㄒoㄒ)/~~