这学期选了ACM课,但平时缺乏练习,不怎么刷题,因此期末考试成绩并不理想。考虑到之后的考研复试中包含机试,且计试可以算是非常重要的印象分,因此我打算寒假刷一下算法笔记,备战3月初的PAT甲级和3月末的CCF CSP认证考试,为后续考研复习数据结构等也算是打下一个良好的基础。
今日学习了算法笔记的章节2 C/C++快速入门与章节3 入门——简单模拟(1)的部分内容,本来打算略过章节2的部分,但是想到ACM课考试的时候,就曾经有一道题因缺乏对基础C语言知识的了解做不出来,觉得还是有必要学习一下。
章节3的内容今日还未完结,打算明天刷完之后再发完整的刷题日记。
1.int a,b=-1
是正确的语法
#define pi 3.14
格式scanf("格式控制",变量地址);
| int | %d |
| — | — |
| long long | %lld |
| double | %lf |
| char | %c |
| 字符串(char数组) | %s |
除了%c,scanf对其他格式符的输入是以空白符(即空格、换行等)为结束判断标志
%c可以读入空格和换行
%s读入以空格和换行为读入结束的标志
格式printf("格式控制",变量名称);
| int | %d |
| — | — |
| long long | %lld |
| double | %f |
| char | %c |
| 字符串(char数组) | %s |
实用的输出格式
c1=getchar();
getchar();
return (int)(x+0.5)
,浮点数四舍五入需先*10/100/1000再round再/10/100/1000memset(数组名,值,sizeof(数组名));
1.字符数组的初始化
char arr[2]={'h','e'};
char arr[]="hello";
,但以字符串方式赋值数组仅限于初始化'\0'
作为结束符,占用1 bit2.字符数组的输入输出
scanf("%s",str[i]);
printf("%s",str[i]);
'\0'
作为字符串的结束标记,并占用一个字符位'\0'
作为字符串的结尾输出'\0'
作为字符串的结束标记,并占用一个字符位'\0'
作为字符串的结尾输出3.特别提醒,如果不是使用scanf或gets方式输入数组,需要在每个字符串输入后,手动加入'\0'
,使得printf和puts能够正确识别字符串末尾,防止输出乱码
1.sscanf格式sscanf(str,"%d",&n)
,和scanf一样,从左往右传递元素
2.sprintf格式sprintf(str,"%d",n)
,和printf一样,从右往左传递元素
#include
#include
using namespace std;
int main(){
char str[50];
cin.getline(str,50);
int a,b,c;
if(sscanf(str,"%d is greater than %d",&a,&b)==2){
if(a>b) printf("Yes");
else printf("No");
}else{
if(sscanf(str,"%d is equal to %d plus %d",&a,&b,&c)==3){
if(a==(b+c)) printf("Yes");
else printf("No");
}else{
printf("???");
}
}
return 0;
}
#include
#include
using namespace std;
int main(){
char str[50];
int a,b,c,d,e,f;
scanf("%d %d %d %d %d %d",&a,&b,&c,&d,&e,&f);
sprintf(str,"%04d-%02d-%02d %02d:%02d:%02d",a,b,c,d,e,f);
puts(str);
return 0;
}
1.指针指向变量所在的位置
2.指针的定义int *p1,*p2;``int *p1,p2;
前者定义2个指针,后者定义1个指针
3.指针赋值int* a=&b;
,指针作为函数参数fun(int* a)
4.C++中的引用func(int &a)
1.结构体的定义与结构体变量的定义
结构体名 变量名
的方式定义struct student{
int age;
student* stu;
}Alice,Bob,stuList[100];
student Alice;
2.结构体的访问
student Alice;
student* Bob;
Alice.age;
Bob->age;/(*Bob).age
1.cin与cout在考试中并不推荐,容易超时,只有在必要的时候才会使用,如对于string的处理
2.读入一整行,针对char str[50]
数组,采用cin.getline(str,50)
;针对string
容器,采用getline(cin,str)
,getline可以读入空格,但是不读入空行,且属于自动忽略的类型,且它会自动忽略行尾的空格
(fabs((a-b))<1e-8)
判断相等
1.O(n^2)
的算法当n为100000的时候,会超出OJ系统的承受能力