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; }