PAT的心得记录

自学c语言所带啦的隐患之一就是:接触面不够广,基础不够扎实,并且学习的深度也不够,因此在学长学姐的推荐下接触了Pat,接触后一发不可收拾。虽然题目非常的不友善(真的难的),学长学姐们也不“友善(卧槽,他们怎么全都会QAQ),也一度想过放弃算法,然鹅还是咬咬牙,毕竟选择是我做的,而且完成题目,当看到一列红色的“答案正确”,真的有成就感。
下面就记录一些新的见解(后悔写博客太晚了,之前的一些心得感受没有及时记录下来)

——————————————————————————————————————————————

  • ***pat1054(求平均值)?**这是一道需要字符串处理的题目,由于学的不扎实,偷偷去看’陈大佬‘的博客,果然有收获,发现了两个功能较为强大的函数sscanf()和sprintf(),关于这两个函数,我就简单做一个概括和总结(实在是班门弄斧,有兴趣的百度吧)

(1)sscanf()函数
sscanf函数原型为int sscanf(const char *str, const char *format, …)。将参数str的字符串根据参数format字符串来转换并格式化数据,转换后的结果存于对应的参数内


#include<stdio.h>
int main()
{
    const char *s = "http://www.baidu.com:1234";
    char protocol[32] = { 0 };
    char host[128] = { 0 };
    char port[8] = { 0 };
    sscanf(s,"%[^:]://%[^:]:%[1-9]",protocol,host,port);
 
    printf("protocol: %s\n",protocol);
    printf("host: %s\n",host);
    printf("port: %s\n",port);
}

通过运行这段代码,你可以简单理解sscanf()大致流程是读取一段字符串,然后根据你所需要的结果进行操作,得到所需要的结果存放在给定的参数里。
(2)sprintf()函数
sprintf函数原型:int sprintf(char *buffer, const char *format, [argument]…)
①buffer:是char类型的指针,指向写入的字符串指针;
②format:格式化字符串,即在程序中想要的格式;
③argument:可选参数,可以为任意类型的数据;
可以格式化数字字符串和连接字符

#include<stdio.h>
int main()
{

	char buffer[10];
	char *a = "1234";
	char *b = "5678";
	sprintf(buffer, "%s%s", a, b);
	printf("%s\n", buffer);
	return 0;
}

——————————————————————————————————————————————

pat1060(爱丁顿数)
这个25分的题目虽然不怎么复杂,但是让我了解了qsort函数

qsort编译器函数库自带的快速排序函数。使用qsort()排序并用 bsearch()搜索是一个比较常用的组合,使用方便快捷。
  qsort 的函数原型是void qsort(voidbase,size_t num,size_t width,int(__cdeclcompare)(const void*,const void*));
  各参数:
  1 待排序数组首地址
  2 数组中待排序元素数量
  3 各元素的占用空间大小
  4 指向函数的指针
  
  其中base是排序的一个集合数组,
  num是这个数组元素的个数,
  width是一个元素的大小,
  comp是一个比较函数。其中comp函数应写为:

  
  int comp(const void*a,const void*b)
  {return *(int*)a-*(int*)b;}
 // 上面是由小到大排序
  {return *(int*)-*(int*)b;}
 //  下面是由大到小排序

  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值