ファーウェイ試験問題(5)
5361 ワード
第1題整数化文字列
負の数の可能性のある整数を指定し、整数を文字列にします.関数はvoid change(int number,char s[])のような形式で宣言されています.自分で用例テストを書くことができます.
[cpp] view plain copy print ?
#include #include
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 {
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
{ 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 ",s);
system("pause"); return 0;
}
文字列を指定し、その最大のサブストリングを探します.このサブストリングは回文です.例えば、所与の使用例文字列「gabcdcbaef」の場合、最大文字列は「abcdcba」である.関数はvoid huiwen(char input[],int len,char output[])として宣言されます.
[cpp] view plain copy print ?
#include #include
#include
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
{ while(1)
{ while((*p != *q) && (p if(p == q)
break; if(p begin = p;
end = q; while(begin
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 ",input);
max_sub_huiwen(input,output); printf("%s ",output);
system("pause"); return 0;
}
負の数の可能性のある整数を指定し、整数を文字列にします.関数はvoid change(int number,char s[])のような形式で宣言されています.自分で用例テストを書くことができます.
[cpp] view plain copy print ?
#include
{
int i;
if(number>0)
m=0;
{
number=number/10;
}
for(i=0;i
s[m-1-i]=tmp[i];
s[m]='\0';
else if(number<0)
number=-number;
while(number>0)
tmp[m]=number%10+'0';
m++;
tmp[m]='\0';
{
}
s[m+1]='\0';
else
s[0]='0';
}
}
{
char s[50]={0};
printf("%s ",s);
system("pause");
}
#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
",s);
system("pause");
return 0;
}
文字列を指定し、その最大のサブストリングを探します.このサブストリングは回文です.例えば、所与の使用例文字列「gabcdcbaef」の場合、最大文字列は「abcdcba」である.関数はvoid huiwen(char input[],int len,char output[])として宣言されます.
[cpp] view plain copy print ?
#include
#include
void max_sub_huiwen(char input[], char output[])
int flag = 1;
char *p_end;
while(*q)
q--;//qは末尾の最後の文字を指す
//printf("last =%c",*q);
{
{
q--;
break;
かどうかを判断する
{
end = q;
if(*begin++ != *end--)
flag = 0;
}
{
*output++ = *p++;
return;
q--;
p++;
}
}
{
char output[50]={0};
max_sub_huiwen(input,output);
system("pause");
}