1. 写一个将整数转换成字符串的函数itoa
解析:整数转化成字符串,可以采用加'0',然后再逆序,整数加'0'就会隐形转化为char类型的数。
#include <iostream>
#include <stdio.h>字符串函数编程题
using namespace std;
int main(void)
{
int num = 12345, j=0, i=0;
char temp[7], str[7];
while(num)
{
temp[i] = num%10 + '0';
i++;
num = num/10;
}
temp[i] = 0;
printf("temp = %s\n",temp);
i=i-1;
while(i>=0)
{
str[j] = temp[i];
j++;
i--;
}
str[j]=0;
printf("string = %s\n", str);
return 0;
}
2. 编程实现字符串数转化成整数的方法。
解析:可以采用减 '0' 再乘10累加的方法,字符串减 '0' 就会隐性转换为int类型的数
#include<iostream.h>
#include<stdio.h>
int main(void)
{
int num=12345, j=0, i=0, sum=0;
char temp[7]={'1', '2', '3', '4', '5', '\0'}, str[7];
while (temp[i])
{
sum=sum*10+(temp[i]-'0');
i++;
}
printf("sum=%d\n", sum)
return 0;
}
1)写出在母串中查子串出现次数的代码.
[cpp] view plaincopy
1 int count1(char* str,char* s)
2 {
3 char* s1;
4 char* s2;
5 int count = 0;
6 while(*str!='/0')
7 {
8 s1 = str;
9 s2 = s;
10 while(*s2 == *s1&&(*s2!='/0')&&(*s1!='0'))
11 {
12 s2++;
13 s1++;
14 }
15 if(*s2 == '/0')
16 count++;
17 str++;
18 }
19 return count;
20 }
2)查第一个匹配子串位置,如果返回的是s1长度len1表示没有到
[cpp] view plaincopy
21 size_t find(char* s1,char* s2)
22 {
23 size_t i=0;
24 size_t len1 = strlen(s1)
25 size_t len2 = strlen(s2);
26 if(len1-len2<0) return len1;
27 for(;i<len1-len2;i++)
28 {
29 size_t m = i;
30 for(size_t j=0;j<len2;j++)
31 {
32 if(s1[m]!=s2[j])
33 break;
34 m++;
35 }
36 if(j==len)
37 break;
38 }
39 return i<len1-len2?i:len1;
40 }
3)实现strcpy函数
[cpp] view plaincopy
41 char *strcpy(char *destination, const char *source)
42 {
43 assert(destination!=NULL&&source!=NULL);
44 char* target = destinaton;
45 while(*destinaton++=*source++);
46 return target ;
47 }
出现次数相当频繁
4)实现strcmp函数
4)实现strcmp函数
[cpp] view plaincopy
48 int strcmp11(char* l,char* r)
49 {
50 assert(l!=0&&r!=0);
51 while(*l == *r &&*l != '/0') l++,r++;
52 if(*l > *r)
53 return 1;
54 else if(*l == *r)
55 return 0;
56 return -1;
57 }
5) 实现字符串翻转
[cpp] view plaincopy
58 void reserve(char* str)
59 {
60 assert(str != NULL);
61 char * p1 = str;
62 char * p2 = str-1;
63 while(*++p2); //一般要求不能使用strlen
64 p2 -= 1;
65 while(p1<p2)
66 {
67 char c = *p1;
68 *p1++ = *p2;
69 *p2-- = c;
70 }
71 }
6)、用指针的方法,将字符串“ABCD1234efgh”前后对调显示
//不要用strlen求字符串长度,这样就没分了
代码如下:
[cpp] view plaincopy
//不要用strlen求字符串长度,这样就没分了
代码如下:
[cpp] view plaincopy
72 char str123[] = "ABCD1234efgh";
73 char * p1 = str123;
74 char * p2 = str123-1;
75 while(*++p2);
76 p2 -= 1;
77 while(p1<p2)
78 {
79 char c = *p1;
80 *p1++ = *p2;
81 *p2-- = c;
82 }
7) 给定字符串A和B,输出A和B中的最大公共子串。比如A="aocdfe" B="pmcdfa" 则输出"cdf"
[cpp] view plaincopy
83 #i nclude<stdio.h>
84 #i nclude<stdlib.h>
85 #i nclude<string.h>
86 char *commanstring(char shortstring[], char longstring[])
87 {
88 int i, j;
89 char *substring=malloc(256);
90 if(strstr(longstring, shortstring)!=NULL) //如果……,那么返回shortstring
91 return shortstring;
92 for(i=strlen(shortstring)-1;i>0; i--) //否则,开始循环计算
93 {
94 for(j=0; j<=strlen(shortstring)-i; j++)
95 {
96 memcpy(substring, &shortstring[j], i);
97 substring[i]='/0';
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论