#CSP刷题记录 Day1
正在准备4.11和9月的csp考试,这篇帖子就作为平时看书做题的记录贴啦,本人是超级菜鸡www,应该有很多内容肥肠基础,欢迎和各位准备csp的童鞋一起友好交流哇。
1、10的9次方以内使用int型来存储
2、10的18次方以内使用long long int型来存储
3、遇到浮点型数据都用double来存储
3、A:65 a:97
4、定义常量可以用#define或者const
5、无穷大
6、
7、尽量使用复合赋值运算符
8、
9、注意scanf以%s读入时以空格与换行为结束的标志,而%c可以识别空行和换行并将其输入。getchar也可以识别空格和换行符。有时候多加一个getchar就是为了把末尾的换行符下吸收掉。gets识别换行符作为结束。使用scanf以及gets识别字符串会自动在后面补齐一个\0
10、printf的格式符和scanf基本一致,只有double变成了%lf
11、%md %mf %0md
12、getchar可以识别换行符
13、typedef用来取别名
14、实用的数学函数,见P38
15、如果数组大小较大,则需要将其定义在函数外面,因为函数内的局部变量来自系统栈,而函数外的全局变量来自静态存储区。
16、memset可以对数组中的每一个元素赋相同的值
//对二维数组以及多维数组是一样的
#include<stdio.h>
#include<sting.h>
memset(a,0,sizeof(a));
17string.h头文件:
//string.h头文件的使用
#include<stdio.h>
#include<sting.h>
int a;
char a[10],b[10],str[100];
memset(a,0,sizeof(a));
strlen(a);//获得字符数组的长度
strcmp(a,b);//比较两个字符数组的长度,如果a<b返回负数,否则返回正数,否则返回0
strcpy(a,b);//将b复制给a
strcat(a,b);//将b接到a后面
sscanf(str,"%d",&n);//将字符串str中的数写入n中
sprintf(str,"%d",n);//将n的数写入字符串str中
// 指针以及数组传参举例:
#iclude<stdio.h>
void swap(int *p1,int *p2)
{
int temp=*p1;
*p1=*p2;
*p2=temp;
}
//一维数组不需要填写长度,二维数组需要填写第二维长度,在实际调用时都只需要写数组名即可
void shuzu(int a[],int b[][5])
{
//balallalala
}
int main()
{
int a,b;
int *p1=&a,*p2=&b;
int line[10];
int mian[10][20];
shuzu(a,b);
swap(p1,p2);
return 0;
}
var foo = 'test';
//2.8结构体的使用
//结构体内可以只能定义自身类型的指针变量,不能定义自己本身
//e.g.1
struct studentInfo{
int id;
char name;
studentInfo * next;
}stu,*p;
//e.g.2结构体的初始化,使用构造函数(构造函数和结构体同名)
struct studentInfo{
int id;
char name;
//第一种方式
studentInfo(int _id,int_name){ id=_id;name=_name; }
//第二种方式
studentInfo(int _id,int_name):id(_id);name(_name) { }
};
var foo = 'test';
//2.9一些补充说明
//引入esp防止判断失误
//输入举例:
while(scanf("%d",&a)!=EOF)
{
//……
if(a==0&&b==0);break;
}
//或者
while(scanf("%d",&a)!=EOF,a||0)
{
//……
}
//或者字符串
while(scanf("%s",a)!=EOF)
{
//……
}
while(gets(str)!=NULL)
{
//……
}
呼呼呼~前二章的回顾终于结束了。