C语言编程字符串操作Word格式文档下载.docx
- 文档编号:21297637
- 上传时间:2023-01-29
- 格式:DOCX
- 页数:28
- 大小:19.55KB
C语言编程字符串操作Word格式文档下载.docx
《C语言编程字符串操作Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《C语言编程字符串操作Word格式文档下载.docx(28页珍藏版)》请在冰豆网上搜索。
-'
}
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=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 编程 字符串 操作
![提示](https://static.bdocx.com/images/bang_tan.gif)