我实际上是在尝试编写一些程序来检查两个字符串是否相互排列。我解释:
如果我考虑:
Eagle
和
Hdjoh
(我在上一个问题中使用了这两个示例)。
我得到一个排列,排列参数是 3。为什么?因为在字母表中:E + 3 = H,a + 3 = d 等。
我使用了 unsigned char,因为如果我在其中一个字符串中得到一个 z,我希望(例如)z + 3 = c。
我开始做什么:
#include <stdio.h>
#define N 20
int my_strlen(unsigned char *string){
int length;
for (length = 0; *string != '\0'; string++){
length++;
}
return(length);
}
int main()
{
unsigned char string1[N], string2[N];
int test=0, i=0, length1, length2;
scanf("%s", string1);
scanf("%s", string2);
length1=my_strlen(string1);
length2=my_strlen(string2);
if(length1==length2){
for(i=0; i<length1; i++){
if(string1[i]==string2[i]){
test=1;
}
else{
test=0;
}
}
printf("Test = %d", test);
}
else{
printf("Error");
}
return 0;
}
我刚刚开始考虑。所以目前我只是试着逐个字母地比较这两个字符串。
问题:如果我尝试比较Hello 和hello,或者Hello 和 Helqo 我得到 Test = 1。
所以有人可以告诉我这里出了什么问题吗?
非常感谢。
编辑 1:
#include <stdio.h>
#define N 20
int my_strlen(unsigned char *string){
int length;
for (length = 0; *string != '\0'; string++){
length++;
}
return(length);
}
int main()
{
unsigned char string1[N], string2[N];
int test=0, i=0, length1, length2;
scanf("%s", string1);
scanf("%s", string2);
length1=my_strlen(string1);
length2=my_strlen(string2);
if(length1==length2){
for(i=0; i<length1; i++){
if(string1[i]==string2[i]){
test=1;
}
else{
test=0;
break;
}
}
printf("Test = %d", test);
}
else{
printf("Error");
}
return 0;
}
现在是正确的。我会继续。
编辑 2 - 6.7.14:
我实际上是在工作和程序的“第二部分”。我正在寻找 d 并验证它是否是排列。没那么容易,所以我需要一些建议,我是否必须编写其他函数来执行此操作?或者只是处理我的这部分代码:
if(length1==length2){
for(i=0; i<length1; i++){
if(string1[i]==string2[i]){
test=1;
}
else{
test=0;
break;
}
}
printf("Test = %d", test);
}
else{
printf("Error");
}
return 0;
}
我暂时是这样写的:
if(length1==length2){
for(i=0; i<length1; i++){
for(d=0; d<255; d++){
if(string1[i]==string2[i] + d){
permutation=1;
}
else{
permutation=0;
break;
}
}
}
printf("\nPermutation = %d \nd = %d", permutation, d);
}
else{
printf("Not a permutation");
}
return 0;
}
(我知道这行不通,但我只是试过..)。
预先感谢您的帮助。
最佳答案
您只是打印出最后一个字符比较的结果。
for(i=0; i<length1; i++){
if(string1[i]==string2[i]){
test=1;
}
else{
test=0;
}
}
这每次都要经过比较每个字符和变化的测试。循环结束时,只输出最后一个字符比较。
关于检查两个字符串是否是 C 中的排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24088466/