求一个整型数字中有没有相同的部分,例如12389756123这个整型数字中相同的部分是123,相同的部分至少应该是2位数,如果有相同部分返回1,如果没有则返回0。方法是先将整型数字转换到数组中,再判断。函数为 int same(int num) 其中num是输入的整型数字
#include <stdio.h>
#include <string.h>
#define MAXSIZE 20
int same(int num){
char numChar[MAXSIZE];
int i = 0, j;
int len;
int temp;//暂时存储每一位上的数字
while(num > 0){
//numChar[]中由低到高一次存放低位至高位,与原来的顺寻相反,可以直接按反序判断
temp = num % 10;
num /= 10;
numChar[i] = temp + '0';
i++;
}
numChar[i] = '\0';
len = strlen(numChar);
printf("%s\n", numChar);
for(i = 0; i < len - 1; i++){
for(j = i + 1; j < len - 1; j++){
if(numChar[j] == numChar[i]){//出现第一个相等的字符
if(numChar[j + 1] == numChar[i + 1])
return 1;
}
}
}
return 0;
}
void main(){
int num = 123124;
printf("%d\n", num);
printf("result:\t%d\n", same(num));
getchar();
}
可以使用<stdlib>下的函数itoa()将int型转换成字符串(将9~15行改成下面的代码),注意要在前面加上#include <stdlib.h>
#include <stdlib.h>
itoa(num, numChar, 10);//字符顺序与数字顺序一致