学习笔记

第二维确定的二维数组的另一种定义方式

typedef int State[9];
const int MAXSTATE = 1000000;
State st[MAXSTATE];

算法竞赛入门第一章总结

输入指定位数的小数

//保留到小数点后一位
printf("%.1f\n", 8.0/5.0);

long long 的输入输出

因为很多机器long类型的大小和int相同
算法竞赛最常用的整数类型时int和long long,记住int的取值范围大致为2e9(2 ^ 31 -1),long long的取值范围大致为9e18 (2 ^ 63 -1)
不同平台的格式字符串可能不同,所以long long的输入输出最好采用c++的输入输出流

long long n;
scanf("%lld",&n);
printf("%lld",n);

double输入

double的数值范围大致为1e308,精度大致为15-16位,float精度大致为6位

double d;
scanf("%lf",&d);

整数输出位数的控制

//输出5位整数,前面不足补0。
printf("%05d",n);
//输出5位整数,前面不足补空格
printf("%5d",n);

表达式化简

不可以对浮点数执行等于和不等于的比较,分式比较最好化成整数比较

指定次数循环的简化代码

//n是需要循环的次数,最好不要在循环体内部使用n或者修改n的值
while(n--){
}

printf()、scanf()的变形体

**fprintf()、fscanf()**输入输出到文件,第一个参数是文件指针,后面的参数与printf()、scanf()相同。**sprintf()和sscanf()**分别从字符串输入输出,第一个参数是字符指针。

char s[20] = "hagongda";
char s1[20];
char s2[20];
//从字符串输入
sscanf(s, "%s", s1);
printf("%s\n", s1);
//输出到字符串
sprintf(s2, "%s", s1);
printf("%s\n", s2);

c语言数组的复制

memcpy(b,a,sizeof(a));把数组a复制给数组b,注意对任意类型的数组都可以使用,头文件为<string.h>

char s[20] = "hagongda";
char s1[20];
//字符串复制
memcpy(s1, s, sizeof(s));
printf("%s\n", s1);

int a[5] = { 0,1,2,3,4 };
int a1[5];
//输出到字符串
memcpy(a1, a, sizeof(a));
for (int i = 0; i < 5; i++) {
	printf("%d ", a1[i]);
}
printf("\n");

类似的函数还有memset()、memcmp(),用法类似,前者用于数组初始化,后者用于字符串或者数组的比较

char s[20] = "hagongda";
char s1[20];
char s2[20] = "hagongfa";
//字符串初始化
memset(s1, 'c', sizeof(char)*10);
s1[10] = '\0';
printf("%s\n", s1);
//字符串比较,从第一个不相同的字符开始比较
printf("compare front six char = %d\n", memcmp(s, s2, sizeof(char) * 6));
printf("compare all string = %d\n", strcmp(s, s2));

int a[5] = { 0,1,2,3,4 };
int a1[5];
int a2[5] = { 0,1,2,4,6 };
//整数初始化
memset(a1, 0, sizeof(a1));
for (int i = 0; i < 5; i++) {
	printf("%d ", a1[i]);
}
printf("\n");
//数组比较,从第一个不相同的整数开始计算
printf("compare front three integer = %d\n", memcmp(a, a2, sizeof(int)*3));
printf("compare all interger = %d\n", memcmp(a, a2, sizeof(a)));

//输出结果
cccccccccc
compare front six char = 0
compare all string = -1
0 0 0 0 0
compare front three integer = 0
compare all interger = -1

c语言读取单个字符

getchar()从标准输入读取单个字符、fgetc(FILE *stream)从流中读取单个字符;fgets(char *buf,maxn,FILE stream)从流中读取完整的一行,包括行末的换行符。到达文件末尾返回NULL。gets(char *s)从标准输入读取完整的一行,行末的换行替换为’\0’。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值