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函数
[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
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) 给定字符串AB,输出AB中的最大公共子串。比如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小时内删除。