C语言编程字符串操作Word格式文档下载.docx

上传人:b****5 文档编号:21297637 上传时间:2023-01-29 格式:DOCX 页数:28 大小:19.55KB
下载 相关 举报
C语言编程字符串操作Word格式文档下载.docx_第1页
第1页 / 共28页
C语言编程字符串操作Word格式文档下载.docx_第2页
第2页 / 共28页
C语言编程字符串操作Word格式文档下载.docx_第3页
第3页 / 共28页
C语言编程字符串操作Word格式文档下载.docx_第4页
第4页 / 共28页
C语言编程字符串操作Word格式文档下载.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

C语言编程字符串操作Word格式文档下载.docx

《C语言编程字符串操作Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《C语言编程字符串操作Word格式文档下载.docx(28页珍藏版)》请在冰豆网上搜索。

C语言编程字符串操作Word格式文档下载.docx

-'

}

elseif(*(str+i)<

Z'

else

strcpy(str,"

error!

);

break;

}

puts(str);

return0;

}

//1000以内的水仙花数

#include<

#defineLEN1000

intmain()

inti,j,k;

intnum;

intfactor[LEN/2];

for(i=2;

LEN;

num=i;

k=0;

for(j=1;

j<

i/2+1;

j++)

if(i%j==0)

{

num-=j;

factor[k++]=j;

}

if(num==0)

printf("

%d=%d"

i,factor[0]);

for(j=1;

k;

printf("

+%d"

factor[j]);

\n"

//程序功能:

求任意两个整型数之间的素数

math.h>

intisprime(constintnum);

intnum1,num2;

inttemp,i;

%d%d"

&

num1,&

num2);

if(num1>

num2)

temp=num1;

num1=num2;

num2=num1;

for(i=num1+1;

num2;

if(isprime(i))

%d"

i);

printf("

intisprime(constintnum)

//判断是否为素数

inti;

if(num<

2)

return0;

elseif(num==2)

return1;

=sqrt(num);

if(num%i==0)

return0;

return1;

//字符串缩位

string.h>

#defineMAXLEN200

charstr1[MAXLEN];

charstr2[MAXLEN]="

inti=0,j=0;

intn=1;

intlen=strlen(str1);

gets(str1);

if(len)

while(*(str1+i+1))

if(*(str1+i)==*(str1+i+1))

++n;

else

{*(str2+j)=*(str1+i);

*(str2+j+1)=(char)(n+'

0'

j+=2;

n=1;

++i;

*(str2+j)=*(str1+i);

*(str2+j+1)=(char)(n+'

\n%s\n"

str2);

//普通字符串逆序

char*reverse(char*str);

//注意字符串常量和字符串变量是不同的

char*str1="

1234235"

charstr[100];

strcpy(str,str1);

puts(reverse(str));

char*reverse(char*str)

{

inti=0,j=0,ss=0;

chartemp;

ss=strlen(str);

for(i=0,j=ss-1;

j>

i;

++i,--j)

temp=str[i];

str[i]=str[j];

str[j]=temp;

returnstr;

//递归实现字符串逆序

voidreverse(char*str,intleft,intright);

*str2="

325334"

reverse(str,0,strlen(str)-1);

voidreverse(char*str,intleft,intright)

if(left>

=right)

return;

chart=str[left];

str[left]=str[right];

str[right]=t;

reverse(str,left+1,right-1);

谭浩强6.13扩展为高精度加法

#defineMAXLEN2000

#defineLIMIT9

voidadd(constchar*str1,constchar*str2,char*result);

voidnum2str(constlongintnum,char*str);

inta,n;

longintsum=0,t=0;

charresult[MAXLEN];

charnumstr[MAXLEN];

charnum[MAXLEN];

a,&

n);

if(a==0||n==0)

strcpy(result,"

0"

elseif(n<

LIMIT)

n;

t=t*10+a;

sum+=t;

MAXLEN-1)

LIMIT-1;

num2str(sum,numstr);

strcpy(result,numstr);

for(i=LIMIT;

=n;

for(j=0;

num[j]=(char)(a+'

num[j]='

\0'

add(num,numstr,result);

strcpy(numstr,result);

strlen(result);

//字符串逆序

result[i]=numstr[strlen(result)-i-1];

result[i]='

else

puts("

error\n"

puts(result);

voidadd(constchar*str1,constchar*str2,char*result)

//大数加法

charstr[MAXLEN];

strcpy(str,str2);

for(i=strlen(str);

strlen(str1);

str[i]='

str[i]='

result[i]='

result[i]=(char)((result[i]+str[i]+str1[i]-2*'

)%10+'

result[i+1]=(char)((result[i]+str[i]+str1[i]-2*'

)/10+'

if(result[i]!

result[i+1]='

while(result[i]=='

result[i]='

--i;

voidnum2str(constlongintnum,char*str)

//数字转化为字符串

longintnum1=num;

while(num1!

=0)

str[i]=(char)(num1%10+'

num1/=10;

++i;

//高精度加减法,考虑字符串加减法要设计’\0’,太麻烦了,转为数组

#defineMAXLEN500

{unsignedinti=0,j=0;

//函数声明

intmaxlength(constchar*a,constchar*b);

voidadd(constchar*num1,constchar*num2,char*result);

voidprint(constchar*result);

intispositive(constchar*str1,constchar*str2);

charstringa[MAXLEN],stringb[MAXLEN],stringc[MAXLEN+1]="

//注意赋初值

gets(stringa);

//输入a

gets(stringb);

//输入b

strlen(stringa);

if(((*stringa!

)&

(*stringa==0))||((*stringa=='

(*(stringa+1)==0)))

error,inputaagain:

gets(stringa);

i=0;

elseif(((*stringa!

(*(stringa+i)<

'

||*(stringa+i)>

9'

))||((*stringa=='

(i>

=1)&

)))

strlen(stringb);

if(((*stringb!

(*stringb==0))||((*stringb=='

(*(stringb+1)==0)))

gets(stringb);

elseif(((*stringb!

(*(stringb+i)<

||*(stringb+i)>

))||((*stringb=='

)))

add(stringa,stringb,stringc);

print(stringc);

voidadd(constchar*num1,constchar*num2,char*result)

intinta[MAXLEN]={0},intb[MAXLEN]={0},intc[MAXLEN+1]={0};

intflag[MAXLEN+1]={0};

char*str1=num1,*str2=num2,*temp;

//同为正

if(*str1!

*str2!

//字符串转为整型数组

for(i=0,j=strlen(str1)-1;

i++,j--)

*(inta+j)=*(str1+i)-'

for(i=0,j=strlen(str2)-1;

strlen(str2);

*(intb+j)=*(str2+i)-'

//数组模拟加法

for(i=0;

maxlength(str1,str2);

*(intc+i)=(*(inta+i)+*(intb+i)+*(flag+i))%10;

*(flag+i+1)=(*(inta+i)+*(intb+i)+*(flag+i))/10;

//有进位,保存进位;

无进位舍去无意义的0;

0+0=0;

if(*(flag+i))

*(intc+i)=*(flag+i);

i>

=0;

i--,j++)

*(result+j)=(char)(*(intc+i)+'

//一个为负

elseif((*str1=='

)||(*str1!

*str2=='

))

//保证第二个数为负

if(*str1=='

temp=str1;

str1=str2;

str2=temp;

for(i=1,j=strlen(str2)-2;

//数组模拟减法

if(ispositive(str1,str2))

for(i=0;

if((*(inta+i)-*(intb+i)+*(flag+i))>

{

*(intc+i)=(*(inta+i)-*(intb+i)+*(flag+i))%10;

}

else

*(intc+i)=(10+*(inta+i)-*(intb+i)+*(flag+i))%10;

*(flag+i+1)=-1;

}

//消除无意义的0

while(*(intc+i)==0)

--i;

for(j=0;

*(result+j)=(char)(*(intc+i)+'

if((*(intb+i)-*(inta+i)+*(flag+i))>

*(intc+i)=(*(intb+i)-*(inta+i)+*(flag+i))%10;

*(intc+i)=(10+*(intb+i)-*(inta+i)+*(flag+i))%10;

for(i=j;

0;

i--)

*(result+i)=*(result+i-1);

*result='

//同为负

for(i=1,j=strlen(str1)-2;

maxlength(str1,str2)-1;

if(*(flag+i))

for(i=j;

*(result+i)=*(result+i-1);

*result='

intmaxlength(constchar*a,constchar*b)

intx;

x=strlen(a)>

strlen(b)?

strlen(a):

strlen(b);

returnx;

voidprint(constchar*result)

unsignedinti=0;

printf("

%c"

*(result+i));

intispositive(constchar*str1,constchar*str2)

if(strlen(str1)>

strlen(str2))

elseif(strlen(str1)<

return(strcmp(str1,str2)?

1:

0);

//高精度加法(减法)法2

intispstv(constchar*str1,constchar*str2);

charnum1[MAXLEN-1],num2[MAXLEN-1],result[MAXLEN];

unsignedinti=0,flag=0;

//输入字符串,加容错设计,考虑输的是不是有效数字

while(flag==0)

{

gets(num1);

if(*num1=='

{

if(*(num1+1)=='

flag=0;

continue;

for(i=1;

strlen(num1);

if(*(num1+i)<

||*(num1+i)>

flag=0;

break;

if(i==strlen(num1))

flag=1;

if(*num1=='

}

flag=0;

while(flag=

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1