PAT学习

这篇博客记录了作者备考PAT甲级考试的学习过程,主要涉及C/C++语言的基础知识,包括变量类型、强制类型转换、常量、运算符、输入/输出函数、数学函数、数组、函数、指针、结构体以及文件操作。作者强调了在编程中使用double类型进行浮点运算,并介绍了如何利用math库进行数值计算。此外,还讲解了指针的基本概念和使用,以及结构体的定义和访问方式。博客末尾提到了黑盒多点测试的实现方法。
摘要由CSDN通过智能技术生成

记录学习备考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)
--------------------------------------------------------------一月二十一日(晚)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值