<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[daobiying123的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/daobiying123</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; daobiying123]]></copyright><item><title><![CDATA[练习5-5，实现库函数strncpy,strncat,strncmp,它们最多对参数字符串中的前n个字符进行操作]]></title><link>https://blog.youkuaiyun.com/daobiying123/article/details/106263461</link><guid>https://blog.youkuaiyun.com/daobiying123/article/details/106263461</guid><author>daobiying123</author><pubDate>Thu, 21 May 2020 17:40:10 +0800</pubDate><description><![CDATA[C程序设计语言，练习5-5
测试结果与代码如下，有bug欢迎指正！

代码：
#include &lt;stdio.h&gt;

void strncpy(char *s,char *t,int n);
void strncat(char *s,char *t,int n);
int strncmp(char *s,char *t,int n);

int main()
{
	char s[100];
	char *t = "hello world!";
	int cmp;
	strncpy(s,t,5);]]></description><category></category></item><item><title><![CDATA[练习4-14，定义宏SWAP(t,x,y)以交换t类型的两个参数]]></title><link>https://blog.youkuaiyun.com/daobiying123/article/details/106216002</link><guid>https://blog.youkuaiyun.com/daobiying123/article/details/106216002</guid><author>daobiying123</author><pubDate>Tue, 19 May 2020 15:41:17 +0800</pubDate><description><![CDATA[C程序设计语言，练习4-14
#include &lt;stdio.h&gt;

#define swap(t,x,y) {t temp = x;x = y;y = temp;}

int main()
{
	char x = 'a';
	char y = 'b';
	swap(char,x,y);
	printf("%c%c\n",x,y);

	return 0;
}


]]></description><category></category></item><item><title><![CDATA[练习 4-13，编写一个递归版本的 reverse(s)函数，以将字符串s倒置]]></title><link>https://blog.youkuaiyun.com/daobiying123/article/details/106211204</link><guid>https://blog.youkuaiyun.com/daobiying123/article/details/106211204</guid><author>daobiying123</author><pubDate>Tue, 19 May 2020 11:43:36 +0800</pubDate><description><![CDATA[C程序设计语言，练习4-13
实现用倒置后的字符串替换原有的字符串。
测试结果与代码如下，有bug欢迎指正！

代码：
#include &lt;stdio.h&gt;
//定义两个外部变量分别用于取值与赋值
//定义为static型使外部变量仅限此源文件中的函数可用
static int sp1 = 0;
static int sp2 = 0;

void reverse(char *s);

int main()
{
	char s[100];
	printf("请输入待转换字符串:\n");
	sca]]></description><category></category></item><item><title><![CDATA[练习 4-12，运用 printd 函数的设计思想编写一个递归版本的 itoa 函数，即通过递归调用把整数转换为字符串]]></title><link>https://blog.youkuaiyun.com/daobiying123/article/details/106210482</link><guid>https://blog.youkuaiyun.com/daobiying123/article/details/106210482</guid><author>daobiying123</author><pubDate>Tue, 19 May 2020 11:18:21 +0800</pubDate><description><![CDATA[C程序设计语言，练习4-12
测试结果与代码如下，有bug欢迎指正！

代码：
#include &lt;stdio.h&gt;
//定义一个外部变量用来标识数组位置
//定义为static型使外部变量仅限此源文件中的函数可用
static int sp = 0;

void itoa(int n,char s[]);

int main()
{
	int n;
	char s[100];
	printf("请输入待转换整数:\n");
	scanf_s("%d",&amp;n,sizeof(int));
]]></description><category></category></item><item><title><![CDATA[练习4-7，编写一个函数ungets()，将整个字符串压回到输入中]]></title><link>https://blog.youkuaiyun.com/daobiying123/article/details/106209520</link><guid>https://blog.youkuaiyun.com/daobiying123/article/details/106209520</guid><author>daobiying123</author><pubDate>Tue, 19 May 2020 10:47:41 +0800</pubDate><description><![CDATA[C程序设计语言，练习4-7
测试结果与代码如下，有bug欢迎指正！

代码：
#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;

#define BUFSIZE 100
char buf[BUFSIZE];
int bufp = 0;

int getch(char s[],int p)
{
	return (p &gt; 0) ? s[--p] : getchar();
}

void ungetch(int c)
{
	if(bufp &gt;= BU]]></description><category></category></item><item><title><![CDATA[练习4-2，对atof函数进行扩充，使它可以处理形如123.456e-6的科学表示法，其中，浮点数后面可能会紧跟一个e或E以及一个指数（可能有正负号）]]></title><link>https://blog.youkuaiyun.com/daobiying123/article/details/106159713</link><guid>https://blog.youkuaiyun.com/daobiying123/article/details/106159713</guid><author>daobiying123</author><pubDate>Sat, 16 May 2020 15:22:03 +0800</pubDate><description><![CDATA[C程序设计语言，练习4-2
测试结果与代码如下，有bug欢迎指正！

代码：
#include &lt;stdio.h&gt;
#include &lt;string.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;ctype.h&gt;
#include &lt;math.h&gt;

double atof(char *s);

int main()
{
	char s[100];
	printf("输入带转换字符串：\n");
	scanf_s("%s",s,]]></description><category></category></item><item><title><![CDATA[练习3-6，修改 itoa 函数，使得该函数可以接收三个参数。其中，第三个参数为最小 字段宽度。为了保证转换后所得的结果至少具有第三个参数指定的最小宽度，在必要时应在 所得结果的左边填充一定的空格。]]></title><link>https://blog.youkuaiyun.com/daobiying123/article/details/106147221</link><guid>https://blog.youkuaiyun.com/daobiying123/article/details/106147221</guid><author>daobiying123</author><pubDate>Fri, 15 May 2020 18:04:17 +0800</pubDate><description><![CDATA[C程序设计语言，练习3-6
测试结果与代码如下，有bug欢迎指正！

代码：
#include &lt;stdio.h&gt;
#include &lt;string.h&gt;

void my_itoa(int n,char *s,int b);
void reverse(char *s);

int main()
{
	char s[100];
	int n,b;
	printf("输入带转换数：\n");
	scanf_s("%d",&amp;n,sizeof(int));
	printf("输入宽]]></description><category></category></item><item><title><![CDATA[练习3-5，编写函数itob(n, s, b)，将整数n转换为以b为底的数，并将转换结果以字符的形式保存到字符串s中。例如，itob(n, s, 16)把整数n格式化成16进制整数保存在s中。]]></title><link>https://blog.youkuaiyun.com/daobiying123/article/details/106146683</link><guid>https://blog.youkuaiyun.com/daobiying123/article/details/106146683</guid><author>daobiying123</author><pubDate>Fri, 15 May 2020 17:38:51 +0800</pubDate><description><![CDATA[C程序设计语言，练习3-5
测试结果与代码如下，有bug欢迎指正！

代码：
#include &lt;stdio.h&gt;
#include &lt;string.h&gt;
#include &lt;stdlib.h&gt;

void itob(int n,char *s,int b);
void reverse(char *s);

int main()
{
	char s[100];
	int n,b;
	printf("输入带转换数：\n");
	scanf_s("%d",&amp;n,siz]]></description><category></category></item><item><title><![CDATA[练习3-3，编写函数expand(s1, s2)，将字符串s1中类似于a-z一类的速记符号在字符串s2中扩展为等价的完整列表abc...xyz]]></title><link>https://blog.youkuaiyun.com/daobiying123/article/details/106145512</link><guid>https://blog.youkuaiyun.com/daobiying123/article/details/106145512</guid><author>daobiying123</author><pubDate>Fri, 15 May 2020 16:56:21 +0800</pubDate><description><![CDATA[C程序设计语言，练习3-3
测试结果与代码如下，有bug欢迎指正！

代码：
#include &lt;stdio.h&gt;
#include &lt;string.h&gt;
#include &lt;stdlib.h&gt;

void expand(char *s1,char*s2);

int main()
{
	char *s1;
	char *s2;
	s1 = (char*)malloc(100*sizeof(char));
	s2 = (char*)malloc(100*sizeof(ch]]></description><category></category></item><item><title><![CDATA[练习3-2，编写一个函数escape（s,t），将字符串t复制到字符串s中，并在复制过程中将换行符、制表符等不可见字符转换为\n、\t等相应的可见的转义字符序列。要求使用switch语句。]]></title><link>https://blog.youkuaiyun.com/daobiying123/article/details/106139477</link><guid>https://blog.youkuaiyun.com/daobiying123/article/details/106139477</guid><author>daobiying123</author><pubDate>Fri, 15 May 2020 12:34:12 +0800</pubDate><description><![CDATA[C程序设计语言，练习3-2
测试结果与代码如下，有bug欢迎指正！

代码：
#include &lt;stdio.h&gt;
#include &lt;string.h&gt;
#include &lt;stdlib.h&gt;

void escape(char *s,char *t);

int main()
{
	char *s;
	char *t;
	s = (char*)malloc(100*sizeof(char));
	t = (char*)malloc(100*sizeof(char));]]></description><category></category></item><item><title><![CDATA[练习2-9，在求对二的补码时，表达式x &= (x-1)可以删除x中最右边值为1的一个二进制位。请解释这样做的道理。用这一方法重写下面的bitcount函数，以加快其执行速度。]]></title><link>https://blog.youkuaiyun.com/daobiying123/article/details/106129682</link><guid>https://blog.youkuaiyun.com/daobiying123/article/details/106129682</guid><author>daobiying123</author><pubDate>Thu, 14 May 2020 21:57:24 +0800</pubDate><description><![CDATA[C程序设计语言，练习2-9
逐个删除x最右边值为1的二进制位，直至x的值为0.
测试结果与代码如下，有bug欢迎指正！

代码：
#include &lt;stdio.h&gt;

int bitcount(unsigned x);

int main()
{
	unsigned a;
	int i;
	for(i = 0; i &lt; 3; i++)
	{
		printf("输入一个十六进制数：");
		scanf_s("%X",&amp;a,sizeof(unsigned));
		printf(]]></description><category></category></item><item><title><![CDATA[练习2-8，编写一个函数rightrot(x,n)，该函数返回将x循环右移（即从最右端移除的位将从最左端移入）n（二进制）位后所得到的值。]]></title><link>https://blog.youkuaiyun.com/daobiying123/article/details/106129343</link><guid>https://blog.youkuaiyun.com/daobiying123/article/details/106129343</guid><author>daobiying123</author><pubDate>Thu, 14 May 2020 21:40:50 +0800</pubDate><description><![CDATA[C程序设计语言，练习2-8
测试结果与代码如下，有bug欢迎指正！

代码：
#include &lt;stdio.h&gt;

unsigned rightrot(unsigned x,int n);

int main()
{
	unsigned a;
	int n = 2;//循环右移n位
	scanf_s("%X",&amp;a,sizeof(unsigned));
	printf("%#X\n",rightrot(a,n));

	return 0;
}

unsigned rightrot(un]]></description><category></category></item><item><title><![CDATA[练习2-7 编写一个函数invert（x,p,n）,该函数返回对x执行下列操作后的结果：将x从第p位开始的n个（二进制）位求反（即1变成0,0变成1），x的其余各位保持不变。]]></title><link>https://blog.youkuaiyun.com/daobiying123/article/details/106123411</link><guid>https://blog.youkuaiyun.com/daobiying123/article/details/106123411</guid><author>daobiying123</author><pubDate>Thu, 14 May 2020 16:47:29 +0800</pubDate><description><![CDATA[C程序设计语言，练习2-7
把想要取反的位置1，其它位置0，然后进行异或运算即可。
测试结果与代码如下，有bug欢迎指正！

代码：
#include &lt;stdio.h&gt;

unsigned invert(unsigned x, int p, int n);

int main()
{
	int i;
	unsigned a;
	for(i = 0; i &lt; 3; i++)
	{
		printf("输入一个整数：");
		scanf_s("%X",&amp;a,sizeof(unsig]]></description><category></category></item><item><title><![CDATA[练习2-4，重新编写函数squeeze(s1,s2),将字符串s1中任何与字符串s2中字符匹配的字符都删除。]]></title><link>https://blog.youkuaiyun.com/daobiying123/article/details/106107953</link><guid>https://blog.youkuaiyun.com/daobiying123/article/details/106107953</guid><author>daobiying123</author><pubDate>Wed, 13 May 2020 22:08:47 +0800</pubDate><description><![CDATA[C程序设计语言，练习2-4
测试结果与代码如下，有bug欢迎指正！

代码：
#include &lt;stdio.h&gt;

void squeeze(char s1[],char s2[]);

int main()
{
	char s1[100],s2[100];
	printf("输入字符串1：");
	scanf_s("%s",s1,100);
	printf("输入字符串2：");
	scanf_s("%s",s2,100);

	squeeze(s1,s2);

	printf("%s\n"]]></description><category></category></item><item><title><![CDATA[练习2-3，编写函数htoi(s)，把由十六进制数字组成的字符串转换为与之等价的整型值]]></title><link>https://blog.youkuaiyun.com/daobiying123/article/details/106102459</link><guid>https://blog.youkuaiyun.com/daobiying123/article/details/106102459</guid><author>daobiying123</author><pubDate>Wed, 13 May 2020 17:16:15 +0800</pubDate><description><![CDATA[C程序设计语言，练习2-3
测试结果与代码如下，有bug欢迎指正！

代码：
#include &lt;stdio.h&gt;
#include &lt;math.h&gt;
//malloc()头文件
#include &lt;stdlib.h&gt;

int htoi(char *s);

int main()
{
	char *s;//保存输入的十六进制数
	int dec;//保存十进制数
	int i;
	//给指针分配空间
	s = (char*)malloc(10*sizeof(char))]]></description><category></category></item><item><title><![CDATA[练习1-23，编写一个程序，删除C语言程序中所有的注释语句]]></title><link>https://blog.youkuaiyun.com/daobiying123/article/details/106079168</link><guid>https://blog.youkuaiyun.com/daobiying123/article/details/106079168</guid><author>daobiying123</author><pubDate>Tue, 12 May 2020 16:28:41 +0800</pubDate><description><![CDATA[C程序设计语言，练习1-23
注意正确处理带引号的字符串与字符常量。
只需在之前练习的基础上修改getline()函数，注意注释后面的字符要先从输入缓存区中读出来再舍弃。
测试结果与代码如下，有bug欢迎指正！

代码：
#include &lt;stdio.h&gt;

#define MAXLEN 1000

int getline(char s[],int lim);
int copy(char from[],char to[],int len,int line_num);

int main()
{]]></description><category></category></item><item><title><![CDATA[练习1-21，编写程序entab，将空格串替换为最少数量的制表符和空格，但要保持单词之间的间隔不变。]]></title><link>https://blog.youkuaiyun.com/daobiying123/article/details/106076671</link><guid>https://blog.youkuaiyun.com/daobiying123/article/details/106076671</guid><author>daobiying123</author><pubDate>Tue, 12 May 2020 15:11:56 +0800</pubDate><description><![CDATA[C程序设计语言，练习1-21
依然在之前我写的练习17~练习20的基础上修改，这里需将getline()函数改写为entab()函数，为使结果更为直观，空格统一用星号替代。
思路：因为要保持字符之间的间隔不表，所以只有到达制表符终止位的空格串（星号串）才需要替换为’\t’
测试结果与代码如下，有bug欢迎指正！

结果中的空格均为单个制表符，实现了将空格串替换为最少数量的制表符和空格。
代码：
#include &lt;stdio.h&gt;

#define MAXLEN 1000

int entab(]]></description><category></category></item><item><title><![CDATA[练习1-20，编写程序detab，将输入中的制表符替换成适当数目的空格，使空格充满到下一个制表符终止的地方。]]></title><link>https://blog.youkuaiyun.com/daobiying123/article/details/106075431</link><guid>https://blog.youkuaiyun.com/daobiying123/article/details/106075431</guid><author>daobiying123</author><pubDate>Tue, 12 May 2020 14:20:59 +0800</pubDate><description><![CDATA[C程序设计语言，练习1-20
这里有一个知识点：制表符终止位为8的整数倍。
依然在之前练习的基础上修改，将getline()函数改写为detab()，当有’\t’输入时进行字符替换。
测试结果与代码如下，有bug欢迎指正！

代码：
#include &lt;stdio.h&gt;

#define MAXLEN 1000

int detab(char s[],int lim);
int copy(char from[],char to[],int len,int line_num);

int main]]></description><category></category></item><item><title><![CDATA[练习1-19 编写函数 reverse(s)，将字符串s中的字符顺序颠倒过来。]]></title><link>https://blog.youkuaiyun.com/daobiying123/article/details/106063402</link><guid>https://blog.youkuaiyun.com/daobiying123/article/details/106063402</guid><author>daobiying123</author><pubDate>Mon, 11 May 2020 21:45:15 +0800</pubDate><description><![CDATA[C程序设计语言，练习1-19
改写copy()函数即可实现（每行从后向前复制到c_out中）。
测试结果与代码如下，有bug欢迎指正！

代码：
#include &lt;stdio.h&gt;

#define MAXLEN 1000

int getline(char s[],int lim);
int reverse(char from[],char to[],int len,int line_num);

int main()
{
	int len;
	int line_num = 0;
	char]]></description><category></category></item><item><title><![CDATA[练习1-18 编写一个程序，删除每个输入行末尾的空格及制表符，并删除完全是空格的行]]></title><link>https://blog.youkuaiyun.com/daobiying123/article/details/106051016</link><guid>https://blog.youkuaiyun.com/daobiying123/article/details/106051016</guid><author>daobiying123</author><pubDate>Mon, 11 May 2020 11:52:47 +0800</pubDate><description><![CDATA[C程序设计语言，练习1-18
相比练习1-17，见https://blog.youkuaiyun.com/daobiying123/article/details/106049051
只需对main函数进行少量修改，即对每行输入都从后向前进行检测，直至检测到有效字符。
测试结果与代码如下，有bug欢迎指正！

代码：
#include &lt;stdio.h&gt;

#define MINLEN 10
#define MAXLEN 1000

int getline(char s[],int lim);
int co]]></description><category></category></item></channel></rss>