程序设计 完整c语言程序用来对从键盘上输入的两个字符串进行比较,然输出两个字符串中第一个不 相同字符的ASCI码之差
时间: 2024-05-08 15:16:07 浏览: 43
```c
#include <stdio.h>
#include <string.h>
int main() {
char str1[100], str2[100];
int i;
printf("请输入第一个字符串:");
scanf("%s", str1);
printf("请输入第二个字符串:");
scanf("%s", str2);
for (i = 0; i < strlen(str1) || i < strlen(str2); i++) {
if (str1[i] != str2[i]) {
printf("两个字符串中第一个不相同的字符的ASCI码之差为:%d\n", str1[i] - str2[i]);
return 0;
}
}
printf("两个字符串完全相同\n");
return 0;
}
```
相关问题
c语言设计一函数找出两个字符串中的最大公共子串。并利用此函数从键盘输入两个字符串, 输出这两个字符串的最大公共子串
在C语言中,你可以通过动态内存分配、字符数组比较和回溯的方式来设计一个函数来寻找两个字符串的最大公共子串。这里是一个简单的示例函数:
```c
#include <stdio.h>
#include <string.h>
// 函数声明
char* longest_common_substring(const char* str1, const char* str2);
int main() {
char str1[100], str2[100];
// 输入两个字符串
printf("请输入第一个字符串:");
fgets(str1, sizeof(str1), stdin); // 考虑到换行符,需去掉多余字符
str1[strlen(str1) - 1] = '\0'; // 去除末尾的换行符
printf("请输入第二个字符串:");
fgets(str2, sizeof(str2), stdin);
str2[strlen(str2) - 1] = '\0';
// 找出最大公共子串
char* max_substring = longest_common_substring(str1, str2);
if (max_substring != NULL) {
printf("两个字符串的最大公共子串是:%s\n", max_substring);
free(max_substring); // 释放动态内存
} else {
printf("没有找到共同子串。\n");
}
return 0;
}
// 实现最长公共子串查找的辅助函数
char* longest_common_substring(const char* str1, const char* str2) {
int len1 = strlen(str1);
int len2 = strlen(str2);
int dp[len1 + 1][len2 + 1]; // 动态规划表
int maxLength = 0; // 最大子串长度
int endIndex = 0; // 当前最长子串结束位置
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] > maxLength) {
maxLength = dp[i][j];
endIndex = i - 1;
}
}
}
}
// 如果找到了最大子串,构建结果字符串;否则返回NULL
if (maxLength > 0) {
char* result = (char*)malloc((maxLength + 1) * sizeof(char));
strncpy(result, str1 + endIndex - maxLength, maxLength);
result[maxLength] = '\0';
return result;
} else {
return NULL;
}
}
```
在这个程序中,`longest_common_substring`函数使用了动态规划的思想,计算了两个字符串每个位置的最长公共子串长度,并在最后返回找到的最大子串。
阅读全文