C++习题2

这篇博客详细介绍了C++中的赋值运算符、逻辑运算符、关系运算符和算术运算符的使用。讲解了如何通过指针调用数组元素,并展示了不同方法的示例。还讨论了条件判断在循环中的应用。此外,涉及了cin.getline()的使用、函数参数的传递、字符串操作和动态内存分配。最后,提到了函数指针的声明和使用。
摘要由CSDN通过智能技术生成

赋值运算符<逻辑运算符<关系运算符<算术运算符

指针调用数组元素 

指针调用数组元素
int a[3][4] = {{1,4,7,10},{2,5,8,11},{3,6,9,12}};
	int* pa[3] = { a[0],a[1],a[2] };
	int(*pb)[4]; pb = a;
	int** q = pa;
	cout << *(a[2] + 3)<<endl;
	cout << *(*(pa + 2) + 3)<<endl;
	cout << pb[2][3]<<endl;
	cout << *(pb + 2)[3] << endl;//错误
	cout << *(*(pb+2)+3) << endl;
	cout << q[2][3]<<endl;


if(x%2)中x的性质

	int x = -5;//表示奇数
	if (x % 2) {
		x = 1;
	}
	cout << x;


cin.getline()的用法
	char a[5];
	cin.getline(a, 5);//geiline最多读取4个元素,末尾补\0
	cout << a;


函数参数
	函数不一定有形参,可以为void 
	如果有形参,可以是常量,变量,也可以是表达式
	数组名作函数参数
	如void sz(char a[]);
    
	char a[] = "abcd";
	/ sz(a);
	#1:实参是常量
	res = my_min(1, 2)

		#2:实参是变量
		a = 1
		b = 2
		res = my_min(a, b)

		#3:实参是表达式
		res = my_min(10 * 2, 10 * my_min(3, 4))

		#4:实参可以是常量、变量、表达式的任意组合
		a = 2
		my_min(1, a, 10 * my_min(3, 4))
int a[10] = { 1,2,3,4,5,6,7,8,9,10 };
	int* p = a + 3;
	cout << p[5];
结果为9
p的地址为a[3]的地址,p[5]即(p+5)为a[8]的地址
故结果为9

int x = 0, s = 0;
	while (!x != 0)
	{
		s += ++x;
	}
	cout << s;
s 的值为1  条件循环的意思是x==0

7f676c17ed9d4abb88f24d2e6eaebc00.png  

#不能参与构成标识符   标识符只能是数字,字母,下划线组成,开头不能是数字

char str[] = "mess\15\t\\efghi\n";
	cout << sizeof(str);

 结果为14  mess 4个字节  efghi 5个字节  \15 \t  \\ \n各一字节 注意末尾的\0

不主动设置大小,数组会自动在末尾补\0 

//要输出Anhui HFUT
	char str1[80] = "Anhui province";
	char str2[80] = "my HFUT";
	//strcpy(str1+6, str2+3);
	strcpy(str1 + 5, str2 + 2);
	cout << str1;

 strcpy(str1 + 5, str2 + 2)

str1 + 5表示str1[5]的地址  str2+2表示str2[2]的地址

将str2[2]及以后的内容复制到str1[5]及其以后

也可以用注释的第二种方法

d4309ad7c7f641bbb33f5eda9df4a1ef.png

声明函数指针:   数据类型(*函数指针名)(形参表)

指向一个函数,调用函数

利用定义的指针p,给如下定义的结构类型动态分配(用new运算符)20个struct 对象并使用 

struct student {
	char name[5];
	int ID;
	float grade;
};
struct student* p;
int main(void) {
	p = new struct student [2];
	if (p == NULL)
	{
		exit(1);
	}
	int i = 0;
	for (i = 0; i < 2; i++)
	{
		
			cin >> p[i].grade >> p[i].ID;
			cout << endl;
			cin.getline(p[i].name, 5);
	}
	
	cout << p[1].name<<endl << p[1].grade<<endl << p[1].ID;
	delete[]p;
	p = NULL;
	return 0;
}

int a = 1, b = 0, c;
    c = a - 1 && ++b;
    cout << a << "," << b << "," << c;

结果是1,0,0 a的值不会变 当a-1为假,条件判断立即结束,++b不再执行

ifstream inFile;

inFile.open("s.txt",ios::in)以只读的方式打开文件s.txt

 

算法的特征:有穷性、确定性、输入性、输出性、可行性

cout << 0x13 && 0x17;  结果是19,也就是16进制的0x13

e95bd02e8b624cea8a69c7069260d2c5.jpg

cin.get只读一个字符

 

 488342590e744fa9ac53870f4b932c85.jpg

 p=new student[20]

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值