在 switch 语句之后,程序比较字符。在这个阶段我已经调试并看到字符串的第一个字符是 111 'o' 而不仅仅是 'o',这导致我的程序失败。我该如何解决它或问题出在哪里?
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <cmath>
using namespace std;
int main(){
char sentence1[50];
char sentence2[50];
int m,n,k,l;
int i,j,substitution;
cout<<"Enter the first word:"<<endl;
cin>>sentence1;
cout<<"Enter the second word:"<<endl;
cin>>sentence2;
m = strlen(sentence1);
n = strlen(sentence2);
int cost[m+1][n+1];
bool a1,a2;
cost[0][0]=0;
for(i=1;i<m+1;i++){
cost[i][0]=cost[i-1][0]+2;
}
for(j=1;j<n+1;j++){
cost[0][j]=cost[0][j-1]+2;
}
for(i=1;i<m+1;i++){
for(j=1;j<n+1;j++){
switch (sentence1[i-1]){
case 'a':a1=true;
case 'u':a1=true;
case 'e':a1=true;
case 'o':a1=true;
case 'i':a1=true;
default:a1=false;
}
switch (sentence2[j-1]){
case 'a':a2=true;
case 'u':a2=true;
case 'e':a2=true;
case 'o':a2=true;
case 'i':a2=true;
default:a2=false;
}
if(sentence1[i-1]==sentence2[j-1]){substitution=0;
}
else if(a1==true && a2==false){substitution=4;}
else if(a1==false && a2==true){substitution=4;}
else if(a1==true && a2==true){substitution=3;}
else if(a1==false && a2==false){substitution=3;}
cost[i][j]=min(min(cost[i-1][j]+2,cost[i][j-1]+2),cost[i-1][j-1]+substitution);
}
}
for(i=0;i<m+1;i++){
for(j=0;j<n+1;j++){
cout<<cost[i][j]<<" ";
}
cout<<endl;
}
return 0;
}