学习总结--《算法笔记》(c语言版)

快速入门

摘自《算法笔记》,胡凡主编
1.%md,可以使不足m位的int形变量以m位进行对齐输出,其中高位用空格补齐;如果变量本身超过m位,则保持原样。

#include<stdio.h>
int main(){
	int a = 123, b = 3456789;
	printf("%5d\n", a);
	printf("%5d\n", b);
	return 0;
}

输出结果:

  123
3456789  

2.%0md,与上述不同的是不足m位时,用0补全,而非空格。
3.%.mf,让浮点数保留m位小数输出,采用“四舍六如五成双”规则。
4.输入、输出字符
getchar和putchar,在某些scanf函数使用不便的情况下使用,输入或输出单个字符。

#include<stdio.h>
int main(){
	char c1,c2,c3;
	c1 = getchar();
	getchar();
	c2 = getchar();
	c3 = getchar();
	putchar(c1);
	putchar(c2);
	putchar(c3);
	return 0;
}

若输入为:

abcd

则输出为

acd

当然也可以使用getsputs进行输入输出整个字符串,gets识别"\n"作为一行字符串的结束。
5.break和continue语句
区分:break跳出整个循环体;而continue只是跳出改循环体的本次轮回,进入下一次轮回;

#include<stdio.h>
int main(){
	int sum1 = 0, sum2 = 0;
	for(int i = 1; i <= 5; i++){
		if(i % 2 == 1) break;   //因为第一个数为1,直接跳出整个for循环,因此sum1结果为0
		sum1 += i;
	}
	for( i = 1; i <= 5; i++){
		if(i % 2 == 1) continue;
		sum2 += i;
	}
	printf("%d\n%d\n",sum1, sum2);
	return 0;
}

输出结果

0
6

6.指针变量中*表示取出地址中存放的数,&表示取该变量地址。
7.string.h头文件

strlen(字符数组)		//得到数组中第一个\0前的字符的个数
strcmp(字符数组1,字符数组2)		//按字典序排序
strcpy(字符数组1,字符数组2)		//把字符数组2赋值给字符数组1
strcat(字符数组1,字符数组2)		//把字符数组2接到字符数组1后面

8.sscanf(str, "%d", &n) //把字符数组str的内容以"%d"的形式写到n中
sprintf(str, "%d", n) //把n以"%d"的格式写到str字符数组str中
9.二位数组作为形参时,第二个方括号里面必须为一确定整数。
10.函数递归

#include<stdio.h>
int F(int n){
		if(n == 0) return 1;
		else return F(n - 1) * n;
	}
int main(){
	int n ;
	scanf("%d", &n);
	printf("%d",F(n));
	return 0;
}

11.引用&,并不是取地址的意思。引用不产生副本,只是给原变量起了一个别名,对引用变量的操作就是对原变量的操作。
关于指针的引用

void swap(int* &p1, int* &p2){
	int* temp = p1;
	p1 = p2;
	p2 = temp;
}

结构体struct

1.结构体里面可以定义除自身外的任何类型的数据类型,但可以定义自身类型的指针变量。
2.使用".“或”->"来访问结构体内的元素
3.关于结构体中的构造函数

struct stuInfo{
	int id;
	char gender;
	stuInfo(int id1, char gender2){
		id = id1;
		gender = gender2;
	}

	//或是这样表示构造函数
	stuInfo(int id1, char gender2) : id(id1), gender(gender1) {}
};

补充

1.定义常量const double PI = acos(-1.0);
2.宏定义函数,比如 #define F(a, b) ((a) > (b) )
3.时间复杂度O(1)<O(logn)<O(n)<O(n²)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值