记录学习备考PAT甲级考试(春季3月13日)
仅仅是一个初步的学习笔记,比较凌乱不会有系统化整理,但是在3月初整理一份完整的笔记。
每天下午更新。
希望各位批评指出不足。
前序-C/C++入门
C/C++已经非常熟悉的语言了,重点记录一些细节
1.变量的类型
(1)整型(int):占用32bit,取值范围为-2的31次~2的31次-1
即绝对值在10的9次方
。
(2)长整型(long long):占用64bit,,取值范围为-2的63次~2的63次-1
,即绝对值在10的18次方
。
注意:当初值大于2的31次-1
时,要在初值后面添加LL,例如:
long long n = 1234567890123LL;
(3)浮点型(float和double):凡是用到浮点型的一律使用双精度double,有效精度15-16位。
(4)字符型(char):0-9,A-Z,a-z对应的ASCII码值是48-57,65-90,97-122。
字符串常量:C语言运用字符数组存储字符串,使用“%s”
输出
例:
#include <stdio.h>
using namespace std;
int main()
{
char str[20]="hello";
printf("%s",str);
}
2.强制类型转换
(新类型名)变量名
例:(int)n;
3.符号常量和const常量
(1)符号常量:#define 标识符 常量
例:#define pi 3.14 (无分号)
注:define还可以用来定义一些操作
例:#define ADD(a,b) ((a)+(b))
定义一个相加的ADD操作。
(2)const 常量:const 数据类型 变量名 = 变量 ;
例:const double pi = 3.14 ;
4.运算符
(1)三目运算符: ( A ?B :C ):表示A是否为真,若为真则结果为B,反之为C。
5.使用getchar和putchar输入/输出字符
getchar用于单个字符的输入,putchar用于单个字符的输出。
6.常用的math函数
(1)fabs(double X):对double类型去绝对值
#include <stdio.h>
#include <math.h>
using namespace std;
int main()
{
double a=-12.4;
double b=fabs(a);
printf("%0.1f",b);//输出12.4
return 0;
}
(2)floor(double X)和ceil(double X):向下取整和向上取整
floor往小了取,ceil往大了取。
(3)pow(double r,double p):幂运算
返回r的p次方。
(4)log(double X):对数运算
例:log(a):表示log以e为低,a的对数。
(5)round(double X):四舍五入运算。
冒泡排序:排n-1次。
7.数组
(1)memset函数:对数组中的每一个元素赋相同的值
memset (数组名,值,sizeof(数组名);
需要头文件:string.h
(2)用scanf和printf对字符数组输入输出
例:
#include <stdio.h>
#include <math.h>
using namespace std;
int main()
{
char str[10];
scanf("%s",str);
printf("%s",str);
}
(3)strlen:获取字符数组的个数。
头文件:string.h
例:
#include <stdio.h>
#include <math.h>
#include <string.h>
using namespace std;
int main()
{
char str[10];
int n;
scanf("%s",str);
n = strlen(str);
printf("%s",str);
return n;
}
-------------------------------------------------------------(一月十七日晚)
--------------------------------------(一月十八日晚拖:本人废物)
8.函数
基本语法格式:
返回类型 函数名称 (参数类型 参数){
函数主体
}
9.指针
再谈指针
(1)原理:计算机存储变量都会存放在内存中分配的一个空间,例如int型需要4Byte,即4个空间,对应的每个空间都有对应的地址,而计算机就是通过地址找到变量。
一个地址指向一个空间,也就是一个地址指向一个变量,在C语言中使用指针来表示内存地址,可以理解为指针就是变量的地址。
(2)基本定义:
&:取地址符,例如,int a,则&a就是a的地址。
*:指针定义符
例如:
int* p = &a;
其中 int表示指针变量类型,p是变量名,地址&a是赋值给p,而不是p。
#include"stdio.h"
#include"math.h"
int main(){
int a;
int* p=&a;
a=233;
printf("%d",*p);
return 0;
}
//输出233
//p保存的是地址,*p保存的是地址存放的元素
(3)数组与指针
数组名可以作为数组首地址使用,例如:
有数组a[10],其首地址为a或者&a[0],两种表示。
同理,a+i等价于&a[i];
10.结构体
(1)定义
struct Name{
//基本的数据类型
};
一种可以在结构体后面直接定义结构体变量
struct pat{
char name[10];
int id;
}a,*b;
//定义了pat类型的a和b两个结构体变量
或者按照基本数据类型定义
pat a;
pat *b;
(2)访问方式
a结构体访问方式如下
a.name
a.id
指针变量b元素访问:
(*p).name
(*P).id
或者
p->name
p->id
(3)结构体初始化
定义构造函数
struct pat{
char name[10];
int id;
pat(){};//默认的构造函数
pat(char _name,int _id){//定义构造函数进行初始化
name = _name;
id = _id;
}
}a[10];
11.黑盒多点测试
使用while…EOF型,例如:
#include"stdio.h"
#include"math.h"
int main(){
int a;
while(scanf("%d",&a) != EOF){
printf("%d",a);
}
return 0;
}
当读取文件到末端时,读取失败,scanf返回-1,而C语言中EOF代表-1。
-------------------------------------------------------一月十九日夜
今晚做的桥头排骨(doge)
--------------------------------------------------------------一月二十一日(晚)