第一题 整数化成字符串
给定一个整数(有可能是负数),将整数变成字符串。函数已经声明好类似void change(int number, char s[])的形式。可以自己写用例测试。
- #include<stdio.h>
- #include<string.h>
- voidchange(intnumber,chars[])
- {
- intm;
- inti;
- chartmp[50];
- if(number>0)
- {
- m=0;
- while(number>0)
- {
- tmp[m]=number%10+'0';
- number=number/10;
- m++;
- }
- tmp[m]='\0';
- for(i=0;i<m;i++)
- {
- s[m-1-i]=tmp[i];
- }
- s[m]='\0';
- }
- elseif(number<0)
- {
- number=-number;
- m=0;
- while(number>0)
- {
- tmp[m]=number%10+'0';
- number=number/10;
- m++;
- }
- tmp[m]='\0';
- for(i=0;i<m;i++)
- {
- s[m-i]=tmp[i];
- }
- s[0]='-';
- s[m+1]='\0';
- }
- else
- {
- s[0]='0';
- s[1]='\0';
- }
- }
- intmain(/*intargc,char**argv*/)
- {
- intnumber=-7782347;
- chars[50]={0};
- change(number,s);
- printf("%s\n",s);
- system("pause");
- return0;
- }
#include <stdio.h>
#include <string.h>
void change(int number, char s[])
{
int m;
int i;
char tmp[50];
if(number>0)
{
m=0;
while(number>0)
{
tmp[m]=number%10+'0';
number=number/10;
m++;
}
tmp[m]='\0';
for(i=0;i<m;i++)
{
s[m-1-i]=tmp[i];
}
s[m]='\0';
}
else if(number<0)
{
number=-number;
m=0;
while(number>0)
{
tmp[m]=number%10+'0';
number=number/10;
m++;
}
tmp[m]='\0';
for(i=0;i<m;i++)
{
s[m-i]=tmp[i];
}
s[0]='-';
s[m+1]='\0';
}
else
{
s[0]='0';
s[1]='\0';
}
}
int main(/*int argc, char **argv*/)
{
int number=-7782347;
char s[50]={0};
change(number,s);
printf("%s\n ",s);
system("pause");
return 0;
}
给定一个字符串,寻找它的一个最大子串,该子串是回文。例如给定用例字符串”gabcdcbaef”,那么最大回文字串是”abcdcba”。函数声明为void huiwen(char input[], int len, char output[])。
- #include<stdio.h>
- #include<stdlib.h>
- #include<string.h>
- voidmax_sub_huiwen(charinput[],charoutput[])
- {
- intflag=1;
- char*p=input,*q=input;
- char*p_end;
- char*begin,*end;//判断回文串用到
- while(*q)
- q++;
- q--;//q指向末尾最后一个字符
- p_end=q;
- //printf("last=%c",*q);
- while(p<p_end)
- {
- while(1)
- {
- while((*p!=*q)&&(p<q))
- q--;
- if(p==q)
- break;
- if(p<q)//判断是不是回文串
- {
- begin=p;
- end=q;
- while(begin<end)
- if(*begin++!=*end--)
- {
- flag=0;
- break;
- }
- if(flag==1)
- {
- while(p<=q)
- *output++=*p++;
- *output='\0';
- return;
- }
- }
- q--;
- }
- p++;
- q=p_end;
- }
- }
- intmain(/*intargc,char**argv*/)
- {
- charinput[50]="gabcdcbaef";
- charoutput[50]={0};
- printf("%s\n",input);
- max_sub_huiwen(input,output);
- printf("%s\n",output);
- system("pause");
- return0;
- }