c语言由键盘任意输入二串字符,将此二串字符连接为一串字符。如:输入abcd和xyz,输出为abcdxyz(不允许使用任何字符串函数)
时间: 2023-06-10 10:04:36 浏览: 179
好的,您的问题是:如何实现将两个字符串连接为一串字符串的功能,且不使用任何字符串函数。
您可以使用指针来完成这个任务:
```
#include <stdio.h>
int main() {
char s1[100], s2[100], s[200];
int i, j;
// 读取两个字符串
printf("请输入两个字符串:\n");
scanf("%s%s", s1, s2);
// 拷贝第一个字符串到结果字符串中
i = 0;
while (s1[i] != '\0') {
s[i] = s1[i];
i++;
}
// 拷贝第二个字符串到结果字符串中
j = 0;
while (s2[j] != '\0') {
s[i] = s2[j];
i++;
j++;
}
// 在结果字符串末尾添加字符串结束符
s[i] = '\0';
// 输出结果字符串
printf("连接后的字符串为:%s\n", s);
return 0;
}
```
在这个程序中,我们首先声明三个字符数组:s1、s2、s。然后从键盘上读取两个字符串,并逐个字符地将它们拷贝到结果字符串 s 中。最后,在 s 的末尾添加字符串结束符 '\0',并输出结果字符串。
希望这个程序能够解决您的问题。
相关问题
由键盘任意输入两串字符,将此两串字符连接为一串字符。如:输入abcd和xyz,输出为abcdxyz的C语言程序
好的,你可以使用以下代码实现:
```c
#include <stdio.h>
#include <string.h>
int main()
{
char str1[100], str2[100], result[200];
printf("请输入第一个字符串: ");
scanf("%s", str1);
printf("请输入第二个字符串: ");
scanf("%s", str2);
strcpy(result, str1);
strcat(result, str2);
printf("连接后的字符串为: %s\n", result);
return 0;
}
```
输入两个字符串后,程序会使用 strcpy 函数将第一个字符串拷贝到结果字符串中,再使用 strcat 函数将第二个字符串追加到结果字符串中,最后输出结果字符串即可。
c语言计算两个字符串的最长公共子串
要计算两个字符串的最长公共子串,可以使用动态规划的方法来实现。首先,创建一个二维数组来存储两个字符串中每个字符的比较结果。然后,遍历两个字符串,如果当前字符相同,就将二维数组中对应位置的值设为1,表示这两个字符相同;如果当前字符不同,就将对应位置的值设为0。
接下来,遍历二维数组,找出值为1的最大连续子数组,就是最长的公共子串。最后,将这个最长公共子串输出即可。
C语言代码示例:
```c
#include <stdio.h>
#include <string.h>
// 计算两个字符串的最长公共子串
void longestCommonSubstring(char *str1, char *str2) {
int len1 = strlen(str1);
int len2 = strlen(str2);
int dp[len1+1][len2+1];
int maxLen = 0;
int endPos = 0;
memset(dp, 0, sizeof(dp));
for (int i = 1; i <= len1; i++) {
for (int j = 1; j <= len2; j++) {
if (str1[i-1] == str2[j-1]) {
dp[i][j] = dp[i-1][j-1] + 1;
if (dp[i][j] > maxLen) {
maxLen = dp[i][j];
endPos = i;
}
}
}
}
char result[maxLen+1];
memcpy(result, &str1[endPos - maxLen], maxLen);
result[maxLen] = '\0';
printf("最长公共子串为:%s\n", result);
}
int main() {
char str1[] = "abcdxyz";
char str2[] = "xyzabcd";
longestCommonSubstring(str1, str2);
return 0;
}
```
这样就可以用C语言来计算两个字符串的最长公共子串了。
阅读全文