PAT乙级,C语言版,题解

记录用

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

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

题目原地址

(得分)(满分)	 

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)
1025

1026(15)(15)
1027(20)(20)
1028(19)(20)
1029(20)(20)
1030

1031(15)(15)
1032(20)(20)
1033(19)(20)
1034(20)(20)
1035

1036(15)(15)
1037(20)(20)
1038(20)(20)
1039(20)(20)
1040

1041(15)(15)
1042(20)(20)
1043(20)(20)
1044(20)(20)
1045

1046(15)(15)
1047(20)(20)
1048(20)(20)
1049(20)(20)
1050

1051(15)(15)
1052(20)(20)
1053(20)(20)
1054(15)(20)
1055

1056(15)(15)
1057(20)(20)
1058(20)(20)
1059(20)(20)
1060

这些是自己的话总结的,为了方便理解,有些不是很严谨,见谅。
1.scanf函数的用法
(1)scanf("%s",str);遇到空格即结束。 用scanf("%[^\n]",str);代表遇到回车键才终止
如果回车之后还需要输入数据,则加一个scanf("%c",&useless);用来接收回车符

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相反
}

5.isalpha(ch)//判断字符ch是否为字母,如果是则返回非零数字
6.tolower(ch)//将字符ch的字母改为小写字母,如果不是字母则不动

你可能感兴趣的:(PAT乙级,C语言版,题解)