第一题 整数化成字符串
给定一个整数(有可能是负数),将整数变成字符串。函数已经声明好类似void change(int number, char s[])的形式。可以自己写用例测试。
#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>
void max_sub_huiwen(char input[], char output[])
{
int flag = 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;
}
}
int main(/*int argc, char **argv*/)
{
char input[50]="gabcdcbaef";
char output[50]={0};
printf("%s\n ",input);
max_sub_huiwen(input,output);
printf("%s\n ",output);
system("pause");
return 0;
}