【C编程练习】2013华为校园招聘机试题目题5:将一个int类型的数字转化为字符串,并判断有无重复字符串(长度应大于2)有返回1,无返回2
2012-09-12 19:27
519 查看
//ex1_function2.cpp // 源作者:曹玲玲 编于2012-09-12 //【题目】2013华为校园招聘机试题目题5:将一个int类型的数字转化为字符串,并判断有无重复字符串(长度应大于2)有返回1,无返回2 #include <stdio.h> #include <stdlib.h> #define MAX 200 int ItoAandRepeat(unsigned int theNum,char *s) { char Str[MAX]; char Repeat[MAX]; int interg,remainder,i=0,j,z=0,k=0,temp; //数字转换成字符串 remainder=theNum%10; interg=theNum/10; while(interg) { Str[i]=remainder+48; i++; remainder=interg%10; interg=interg/10; } Str[i]=remainder+48; i++; Str[i]='\0'; for(z=0,j=i-1;j>=0;j--,z++) { s[z]=Str[j]; } s[z]='\0'; printf("%d转换成字符串为:%s\n",theNum,s); //判断有无重复字符串 for(i=0;s[i]!='\0';i++) { //判断之前是否出现过该字符 for(j=0;j<i;j++) { //出现过,从此位置开始向后判断,有多少位重复 if(s[j]==s[i]) { z=i; z++; j++; temp=1;//第一次重复 while(s[j]==s[z]&&s[z]!='\0')//继续判断 { z++; j++; temp++; } if(temp>1)//重复字符数大于1 { for (k=0;k<temp;k++,i++) { Repeat[k]=s[i];//复制重复的字符串便于打印 } Repeat[k]='\0'; printf("%s有重复字符串,重复字符串为:%s\n",s,Repeat); return 1; } } } } return 2; } //测试主函数 void ItoAandRepeat_Main() { int number,temp1,re; char s[MAX]; printf("请输入一个整数!\n"); temp1=scanf("%d",&number); while(temp1==1) { re=ItoAandRepeat(number,s); printf("re=%d\n",re); printf("\n请输入下一个整数!\n"); temp1=scanf("%d",&number); } }
运行结果
【结果分析】
输入3334时,判断重复字符串,显示是有的,此时认为第二个3即存在于前一个“33”也存在于后一个“33”。
如果想避免此情况出现(不许与某个字符在两个子串中出现)修改上述代码中
while(s[j]==s[z]&&s[z]!='\0')//继续判断
{
z++;
j++;
temp++;
}
修改为
while(s[j]==s[z]&&s[z]!='\0'&&j<i)//继续判断
{
z++;
j++;
temp++;
}
即可
此时运行结果为
相关文章推荐
- 将一个int类型的数字转化为字符串,并判断有无重复字符串(长度应大于等于2)有返回1,无返回0
- 华为2013校园招聘上机笔试题-数字转化为字符串,并判断有无重复字符串
- 【C编程练习】华为2013校园招聘机试题目题4:删除一个字符串中出现次数最少的字符,函数原型为:char * delChar(char *s,int iLen)
- 【C编程练习】华为2013校园招聘机试题3:对源字符串中得字符串进行查找替换并返回动态申请空间的指针char* Fun(char*pSrc,char*pOldStr, char*pNewStr)
- 【C编程练习】2013华为校园招聘机试题9月10日题1:把整数转换成字符串 void ConvertIntToStr(int nVal, char* pStr);
- 【练习】写一个函数,它的原形是int continumax(char *outputstr,char *intputstr)功能:在字符串中找出连续最长的数字串,并把这个串的长度返回,
- 【C编程练习】2013华为校园招聘机试题9月10日题2:计算整数二进制表达式中0的个数 最左边1前面的0不考虑 void GenZeroNum(int nVal, int& nZeroNum);
- 【微软100题】写一个函数,它的原形是int continumax(char *outputstr,char *intputstr) 功能: 在字符串中找出连续最长的数字串,并把这个串的长度返回
- 【编程题目】在字符串中找出连续最长的数字串,并把这个串的长度返回
- 算法题目一:如果数组中数字重复最多的次数大于数组长度的一半,返回1,否则返回0
- 第25题: 写一个函数,它的原形是int continumax(char *outputstr,char *intputstr),在字符串中找出连续最长的数字串,并把这个串的长度返回
- 华为2013校园招聘机试题目题4:删除一个字符串中出现次数最少的字符
- js判断输入字符串长度(汉字算两个字符,字母数字算一个)
- 字符串包含一个或多个数字,编写函数把数字字符转化为整数并返回这个整数。如果字符串包含任何非数字字符,函数就返回零。
- 将一个数字字符串转换为数字(支持数字中间夹杂字母,但是受int型的限制,转化的长度很有限),如:"1234" -->1234
- 关于js正则表达式判断一个字符串是否是正确的有数字和小数点组成的金钱形式和 判读数值类型的正则表达式
- 给定一个长度为N的数组,其中每个元素的取值范围都是1到N。判断数组中是否有重复的数字。(原数组不必保留)
- java 一个int数组 长度为100 随机生成100个数 即1-100 将其插入进数组 插入的数字不能重复
- JS判断输入字符串长度实例代码(汉字算两个字符,字母数字算一个)
- 对于一个字符串,请设计一个高效算法,找到第一次重复出现的字符。 给定一个字符串(不一定全为字母)A及它的长度n。请返回第一个重复出现的字符。保证字符串中有重复字符,字符串的长度小于等于500。