当前位置:首页 > C语言算法
进制转换
程序-110进制转2进制#include
intdec,i=0,j,a[16];scanf(“%d”,&dec);do{
a[i]=dec%2;i++;dec=dec/2;}while(dec>=1);
for(j=i–1;j>=0;j--)printf(“%d”,a[j]);}
程序-210进制转2进制(递归法)#include
voiddec2bin(intx,intn);voidmain(){intdec;
printf(\number:\scanf(\&dec);
printf(\ofdecimalform:%d\\n\dec);dec2bin(dec,sizeof(int)*8);putchar('\\n');}
voiddec2bin(intx,intn){
if(n>0){
putchar('0'+((unsigned)(x&(1<<(n-1)))>>(n-1)));dec2bin(x,n-1);}}
程序-316进制转10进制#include
charhex[8],c,*p=hex;longintdec=0;
while(*p=='0')p++;//忽略开头的'0'字符while(c=*p++){
dec=dec*16;//dec乘16if(c>='0'&&c<='9')
dec+=c-'0';
elseif(c>='a'&&c<='f')
dec+=c-'a'+10;
}
elseif(c>='A'&&c<='F')
dec+=c-'A'+10;else{
printf(“dataerror”);exit(-1);}
printf(“%ld”,dec)
字符串1-字符串转换为数字main(){
chars[6];intn;get(s);
if(*s==‘-’)n=-chnum(s+1);elsen=chnum(s);printf(“%d\\n”,n);}
chnum(char*p){intnum=0,k,len,j;len=strlen(p);
for(;*p!=‘0’;p++){k=*p-’0’;j=(--len);while(j-->0){k=k*10;}num=num+k;}
return(num);}
字符串2-统计子串个数main(){
charstr[80],substr[80];intn;
gets(str);gets(substr);
printf(“%d\\n”,count(str,substr));}
count(char*str,char*substr){inti,j,k,num=0;
for(i=0;str[i]!=‘\\0’;i++)
for(j=i,k=0;substr[k]==str[j];k++,j++)
if(substr[k+1]==‘\\0’){num++;break;}return(num);}
字符串3-递归法字符串倒序main(){chars[80];
scanf(“%s”,s);invert(s);}
invert(char*a){if(!*a)return0;invert(a+1);
printf(“%c”,*a);}
字符串4-字符串过滤
要求:过滤掉字符串中比指定字符小的字符,在原串上完成,不得另创建一个新的字符串。main(){
charstr[80],c;
scanf(“%s”,str);scanf(“%c”,c);filter(str,c);puts(str);}
filter(char*p,charc){
inti,j;
for(i=j=0;*(p+i)!=‘\\0’;i++)
if(*(p+i)>=c){*(p+j)=*(p+i);j++;}*(p+j)=‘\\0’;}
字符串5-递归法数值转倒序字符串voidconvert(char*a,intn){inti;
if((i=n/10)!=0)convert(a+1,i);*a=n+’0’;}
main(){
intnumber;
charstr[10]=“”;
scanf(“%d”,&number);convert(str,number);puts(str);}
字符串6-递归法数值转字符串voidconvert(intn){inti;
}
main(){
intnumber;
scanf(“%d”,&number);
if(number<0){putchar(‘-’);number=-number;}convert(number);}
字符串7-判断回文#include
chars[80],*p1,*p2;intn;gets(s);n=strlen(s);p1=s;p2=s+n-1
while(p1 if(*p1!=*p2)break;else{p1+=;p2--;}} if(p1 字符串8-字符串中左右括号匹配检查#include printf(“d=%d”,d);} check(char*s){intl=0,r=0; while(*s!=‘\\0’){if(*s==‘(’)l++;elseif(*s==‘)’){r++; if(r>l)return0;}s++; if((i=n/10)!=0)convert(i);putchar(n+’0’);
共分享92篇相关文档