首页 > 代码库 > 三个 编程题 :1. 回文 2. 将字符串t连接到字符串s的尾部

三个 编程题 :1. 回文 2. 将字符串t连接到字符串s的尾部

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
/*
编写一个函数,判断某个字符串是否为回文。
回文就是从左边开始读 和 从右边开始读 都是一样的,比如"abcba"
*/
 
#include <string.h>
#include <stdio.h>
int isHuiwen(char *str);
 
int main()
{
    printf("%d\n", isHuiwen("a"));
    return 0;
}
 
/*
 返回1代表是回文
 返回0代表不是回文
 */
int isHuiwen(char *str)
{
    // 1.定义一个指向变量left指向字符串的首字符
    char *left = str;
    // 2.定义一个指向变量right指向字符串的末字符
    char *right = str + strlen(str) - 1;
     
    while (left < right)
    {
        // 如果左边和右边的字符不一样
        if (*left++ != *right--)
        {
            return 0;
        }
    }
     
    return 1;
}
 
/*
编写一个函数void strlink(char s[], char t[])
 将字符串t连接到字符串s的尾部
*/
#include <stdio.h>
 
void strlink(char s[], char t[]);
 
int main()
{
    char s1[20] = "michael ";
    char s2[] = "jackson";
     
    strlink(s1, s2);
     
    printf("%s\n", s1);
     
    return 0;
}
 
void strlink(char s[], char t[])
{
    int i = 0;
     
    // 判断s[i]是否为字符串的尾部
    while ( s[i] != ‘\0‘ )
    {
        i++;
    }
     
    int j = 0;
    // 拷贝t的内容到s的后面
    while ( (s[i] = t[j]) != ‘\0‘ )
    {
        i++;
        j++;
    }
}
 
/*
 更加精简的写法,仅作为参考(会有警告信息)
void strlink2(char s[], char t[])
{
    int i = -1;
     
    // 判断s[i]是否为字符串的尾部
    while (s[++i]) ;
     
    int j = 0;
    // 拷贝t的内容到s的后面
    while (s[i++] = t[j++]) ;
}*/
 
/*
编写一个函数void strlink(char *s, char *t)
 将字符串t连接到字符串s的尾部
*/
#include <stdio.h>
 
void strlink(char *s, char *t);
 
int main()
{
    char s1[20] = "michael ";
    char s2[] = "jackson";
     
    strlink2(s1, s2);
     
    printf("%s\n", s1);
     
    return 0;
}
 
void strlink(char *s, char *t)
{
    // 判断s[i]是否为字符串的尾部
    while ( *s != ‘\0‘ )
    {
        s++;
    }
     
    // 拷贝t的内容到s的后面
    while ( (*s = *t) != ‘\0‘ )
    {
        s++;
        t++;
    }
}
 
 
 
/*
 更加精简的写法,仅作为参考(会有警告信息)
 void strlink2(char *s, char *t)
 {
     // 判断s[i]是否为字符串的尾部
     while (*s++);
      
     // 减回一次
     s--;
      
     // 拷贝t的内容到s的后面
     while ( *s++ = *t++ ) ;
 }*/