|
1. 给定一个字符串,把字符串内的字母转换成该字母的下一个字母,a换成b,z换成a,Z换成A,如aBf转换成bCg,字符串内的其他字符不改变,给定函数,编写函数
void Stringchang(const char*inpu,char*output)
其中input是输入字符串,output是输出字符串
[cpp] view plaincopyprint?
- #include<stdio.h>
#include<string.h>
voidStringchange(constchar*input,char*output)
- {
- while(*input)
- {
- if(*input>='a'&&*input<='y'||*input>='A'&&*input<='Y')
- {
- *output=*input+1;
- output++;
- input++;
- }
- elseif(*input=='z'||*input=='Z')
- {
- *output=*input-25;
- output++;
- input++;
- }
- else
- {
- *output=*input;
- output++;
- input++;
- }
- }
- *output='\0';
- }
intmain(/*intargc,char**argv*/)
- {
- constcharinput[20]="zzzzZZZZabcABC";
- charoutput[20];
- Stringchange(input,output);
- printf("outputis%s",output);
- system("pause");
- return0;
- }
#include <stdio.h>
#include <string.h>
void Stringchange(const char* input,char* output)
{
while(*input)
{
if(*input>='a'&& *input<= 'y' || *input>='A' && *input<= 'Y')
{
* output = *input+1;
output++;
input++;
}
else if(*input == 'z' || *input == 'Z')
{
* output = *input-25;
output++;
input++;
}
else
{
* output = *input;
output++;
input++;
}
}
*output = '\0';
}
int main(/*int argc, char **argv*/)
{
const char input[20]="zzzzZZZZabcABC";
char output[20];
Stringchange(input,output);
printf("output is %s",output);
system("pause");
return 0;
}
2. 求一个整型数字中有没有相同的部分,例如12389756123这个整型数字中相同的部分是123,相同的部分至少应该是2位数,如果有相同部分返回1,如果没有则返回0。方法是先将整型数字转换到数组中,再判断。
函数为 int same(int num)
其中num是输入的整型数字
[cpp] view plaincopyprint?
- #include<stdio.h>
#include<string.h>
intsame(intnum)
- {
- inttmp[20];
- intm=0;
- inti,j;
- while(num>0)
- {
- tmp[m]=num%10;
- num/=10;
- m++;
- }
- for(i=0;i<m-3;i++)
- for(j=i+2;j<m-1;j++)
- if(tmp==tmp[j]&&tmp[i+1]==tmp[j+1])
- return1;
- return0;
- }
intmain(/*intargc,char**argv*/)
- {
- intret;
- ret=same(173654123);
- printf("retis%d",ret);
- system("pause");
- return0;
- }
#include <stdio.h>
#include <string.h>
int same(int num)
{
int tmp[20];
int m=0;
int i,j;
while(num>0)
{
tmp[m]=num%10;
num/=10;
m++;
}
for(i=0;i<m-3;i++)
for(j=i+2;j<m-1;j++)
if(tmp==tmp[j] && tmp[i+1]==tmp[j+1])
return 1;
return 0;
}
int main(/*int argc, char **argv*/)
{
int ret;
ret=same(173654123);
printf("ret is %d",ret);
system("pause");
return 0;
}
1.从两个数组的最后一个元素比较两个数组中不同元素的个数,如有array1[5]={77,21,1,3,5},
array2[3]={1,3,5},从array1[4]与array2[2]比较开始,到array1[2]与array[0]比较结束。这样得出它们不同的元素个数为0,若array1[6]={77,21,1,3,5,7},那么他们不同的元素为3。
函数原型为 int compare_array( int len1, int array1[], int len2, int
array2[] );
其中,len1与len2分别为数组array1[]和array2[]的长度,函数返回值为两个数组不同元素的个数。
[cpp] view plaincopyprint?
- #include<stdio.h>
#include<string.h>
intcompare_array(intlen1,intarray1[],intlen2,intarray2[])
- {
- inti=0;
- intcnt=0;
- printf("helloincompare_array\n");
- while(len1-1-i>=0&&len2-1-i>=0)
- {
- if(array1[len1-1-i]!=array2[len2-1-i])
- cnt++;
- i++;
- }
- returncnt;
- }
intmain(/*intargc,char**argv*/)
- {
- intret;
- intarray1[5]={77,21,1,3,5};
- intarray2[4]={1,3,5,7};
- printf("hello\n");
- ret=compare_array(5,array1,4,array2);
- printf("retis%d",ret);
- system("pause");
- return0;
- }
#include <stdio.h>
#include <string.h>
int compare_array( int len1, int array1[], int len2, int array2[] )
{
int i=0;
int cnt=0;
printf("hello in compare_array\n");
while (len1-1-i>=0 && len2-1-i>=0)
{
if(array1[len1-1-i]!=array2[len2-1-i])
cnt++;
i++;
}
return cnt;
}
int main(/*int argc, char **argv*/)
{
int ret;
int array1[5]={77,21,1,3,5};
int array2[4]={1,3,5,7};
printf("hello\n");
ret=compare_array(5,array1,4,array2);
printf("ret is %d",ret);
system("pause");
return 0;
}
判断一个数是不是回文数:
[cpp] view plaincopyprint?
- #include<stdio.h>
#include<string.h>
inthuiwen(longnum)
- {
- inttmp[50];
- intm=0;
- intbegin;
- intend;
- while(num>0)
- {
- tmp[m]=num%10;
- num/=10;
- m++;
- }
- begin=0;
- end=m-1;
- while(begin<end)
- {
- if(tmp[begin++]!=tmp[end--])
- return0;
- }
- return1;
- }
intmain(/*intargc,char**argv*/)
- {
- intret;
- longnum=1234554321;
- ret=huiwen(num);
- if(ret==0)
- printf("nothuiwen\n");
- elseif(ret==1)
- printf("huiwen\n");
- system("pause");
- return0;
- }
#include <stdio.h>
#include <string.h>
int huiwen(long num)
{
int tmp[50];
int m=0;
int begin;
int end;
while(num>0)
{
tmp[m]=num%10;
num/=10;
m++;
}
begin = 0;
end= m-1;
while(begin<end)
{
if(tmp[begin++]!=tmp[end--])
return 0;
}
return 1;
}
int main(/*int argc, char **argv*/)
{
int ret;
long num=1234554321;
ret = huiwen(num);
if(ret == 0)
printf("not huiwen\n");
else if(ret == 1)
printf("huiwen\n");
system("pause");
return 0;
}
删掉重复的字符,只保留一个。
[cpp] view plaincopyprint?
- #include<stdio.h>
#include<string.h>
voidchangestr(constchar*pIn,char*pOut)
- {
- char*r=pIn;
- char*s=pIn;
- *pOut++=*pIn;
- while(*++pIn!='\0')
- {
- if(*pIn!=*r++)
- *pOut++=*pIn;
- }
- *pOut='\0';
- }
intmain(/*intargc,char**argv*/)
- {
- charpIn[20]="goorooogllle";
- charpOut[20];
- changestr(pIn,pOut);
- printf("%s",pOut);
- system("pause");
- return0;
- }
|
|