PAT乙级,C语言版,题解

Ilona ·
更新时间:2024-09-20
· 935 次阅读

由于本人非科班出身,刷题时遇到许多麻烦,发现也几乎没有专门用C语言整理的PAT乙级答案,故写此总结希望能帮助一些像我一样刚开始遇到困难的初学者。不过本人水平有限,有的题会得不了满分,也希望大佬能帮助本人指出错误。

详细思路有时间再写吧,代码都是自己手动敲的,如果有疑问可以评论或者私信我

本文末有个别函数及原理简单补充。

题目原地址
(注意:的时候把中文注释删掉,不然可能报错或扣分)

(得分)(满分)

1001(15)(15)
1002(20)(20)
1003(20)(20)
1004(20)(20)
1005(25)(25)

1006(15)(15)
1007(18)(20)
1008(20)(20)
1009(20)(20)
1010(25)(25)

1011(15)(15)
1012(19)(20)
1013(19)(20)
1014(18)(20)
1015(25)(25)

1016(15)(15)
1017(18)(20)
1018(18)(20)
1019(13)(20)
1020

1021(15)(15)
1022(20)(20)
1023(20)(20)
1024(20)(20)

这些是自己的话总结的,为了方便理解,有些不是很严谨,见谅。
1.scanf函数的用法
(1)scanf("%s",str);遇到空格即结束。 用scanf("%[^\n]",str);代表遇到回车键才终止

2.sprintf函数用法
简单记法:char a[100]; int b=99; sprintf(a,"C://SD%d.sd32",b);
将数组a进行了以上操作后a=="C://SD99.sd32"
也就是把sprintf()中双引号部分都赋值给了a,每个字符保存到一个a[i]中,如果双引号中有输入输出控制符,例如%d,那么要在后面加上这些数

3.char类型都是以ASCII码储存的,可以对照查表
例如char a='1';char b='!';printf("%c,%d,%c,%d",a,a,b,b); 最后输出结果应该是1 49 ! 33 因为在ASCII码中,字符‘1’(注意数字1和字符’1’是两个概念)对应的编号是49,字符’!'对应的编号是33
故可以把char类型当做int类型来用,但是要查找符号对应的数字编号,例如char a=7; int b=3; b=a-48; printf("%d",b);最后输出的是7,b=a-'0'也是一样效果。不清楚的可以查一下ASCII码。

4.qsort函数用法
函数原型:void qsort(void *base,size_t num,size_t width,int (*compare)(const void*,const void*))
qsort 函数一共有四个参数,第一个参数是数组的首地址,第二个参数是数组的元素个数,第三个参数是每个元素的字节数,第四个参数是一个指向函数的指针,表示调用的比较函数的函数名。
假如要对一个整型数组排序的话,比较函数应该写成以下形式:

int fun(const void *a1,const void *a2) { int *b1=( int *)a1; int *b2=( int *)a2; if (b1<b2) return -1; //ruturn -1代表a1排在a2前面,即b1排在b2前面,即升序 if (b1==b2) return 0; else return 1;//return 1代表a1排在a2后面,与-1相反 }
作者:3大道至简,戒躁3



pat C语言

需要 登录 后方可回复, 如果你还没有账号请 注册新账号