1. 给定一个字符串,把字符串内的字母转换成该字母的下一个字母,a换成b,z换成a,Z换成A,如aBf转换成bCg,字符串内的其他字符不改变,给定函数,编写函数
void Stringchang(const char*inpu,char*output)
其中input是输入字符串,output是输出字符串
#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是输入的整型数字
#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[i]==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[]的长度,函数返回值为两个数组不同元素的个数。
#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;
}
判断一个数是不是回文数:
#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;
}
删掉重复的字符,只保留一个。
#include <stdio.h>
#include <string.h>
void changestr(const char *pIn,char *pOut)
{
char *r=pIn;
char *s=pIn;
*pOut++ = *pIn;
while(*++pIn!='\0')
{
if(*pIn != *r++)
*pOut++ = *pIn;
}
*pOut = '\0';
}
int main(/*int argc, char **argv*/)
{
char pIn[20]="goorooogllle";
char pOut[20];
changestr(pIn,pOut);
printf("%s ",pOut);
system("pause");
return 0;
}