C程序设计语言 第二版 新版 第三章 自用

本文深入探讨了C语言中常见的算法实现,包括二分查找、字符串转义与还原、字符范围扩展、整数转字符串等实用功能。通过具体代码示例,详细解析了每种算法的工作原理及其实现细节。

3-1
#include<stdio.h>
int main()
{
return 0;
}
int binsearch(int x,int v[],int n)
{
int low,heigh,mid;
low=0;
heigh=n-1;
mid=(low+heigh)/2;
while(low<=heigh &&x!=v[mid])
{
if(x<v[mid]) heigh=mid-1;
else low = mid+1;
mid=(low+heigh)/2;
}
if(x==v[mid])
return mid;
else
return -1;
}

3-2
#include<stdio.h>
int main()
{
return 0;
}
void escape(char s[],char t[])
{
int i,j;
for(i=j=0;t[i]!='\0';i++)
{
switch(t[i]){
case '\n':
{s[j++]='\\';s[j++]='n';break;}
case '\t':
{s[j++]='\\';s[j++]='t';break;}
default:
{s[j++]=t[i];break;}
}
}
s[j]='\0';

}
void unsecape(char s[],char t[])
{
int i,j;
for(i=j=0;t[i]!='\0';i++)
{
switch(t[i]){
case '\\':
switch(t[++i]){
case 'n':
s[j++]='\n';break;
case 't':
s[j++]='\t';break;
default:
s[j++]='\\';s[j++]=t[i];break;
}
default:
s[j++]=t[i];break;
}
}
s[j]='\0';
}
3-3
#include<stdio.h>
int main()
{
printf("yes");
return 0;
}
void expand(char s1[],char s2[])
{
char c;
int i,j;
i=j=0;
while((c=s1[i++])!='\0')
{
if(s1[i]=='-'&& s1[i+1]>c)
{
i++;
while(c<s1[i])
s2[j++]=c++;
}
else s2[j++]=c;
}
s2[j]='\0';
}
3-4
#include<stdio.h>
#define abx(x) ((x)<0? -(x):(x))
int main()
{
printf("yes");
return 0;
}
void itoa(int n,char s[])
{
int i,sign;
sign=n;
i=0;
do{
s[i++]=abx(n%10) +'0';
}while((n/=10)!=0);
if(sign <0)
s[i++]='-';
s[i]='\0';
//reverse(s);
}
3-5
#include<stdio.h>
int main()
{
printf("yes");
return 0;
}
void itoa(int n,char s[],int b)
{
int i,j,sign;
if((sign=n)<0) n=-n;
i=0;
do
{
j=n%b;
s[i++]=(j<=9)? j+'0':j+'a'-10;
}while((n/=b)>0);
if(sign<0) s[i++]='-';
s[i]='\0';
//reverse(s);
}
3-6
#include<stdio.h>
#define abx(x) ((x)<0? -(x):(x))
int main()
{
printf("yes");
return 0;
}
void itoa(int n,char s[],int w)
{
int i,sign;
sign=n;
i=0;
do{
s[i++]=abx(n%10) +'0';
}while((n/=10)!=0);
if(sign <0)
s[i++]='-';
while(w>=i)
s[i++]=' ';
s[i]='\0';
//reverse(s);
}

转载于:https://www.cnblogs.com/changgf/p/10872893.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值