BUG记录(错题本)

前言: 本文章用于记录本人在学习编程过程中遇到的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  错误
  1. 若有语句:int a=4,*p=&a;

    下面均代表地址的一组选项是:

    1. a,p,&*a 2) *&a,&a,*p

    2. &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必须是浮点型

四舍五入与截断

  1. 四舍五入
    %.2f%.2lf
  2. 截断
    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ㄒ)/~~

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值