Rya*_*yan 0 c switch-statement
我试图检查字母对另一个字母的字母,检查用户字[k]中的第一个字母与letterstest [t]中的所有字母,如果它们匹配将匹配字母test [t]的字母与0匹配,那么它不能是再次匹配.我感到困惑的地方是在switch(){以及究竟会起作用的地方.有没有案例:什么可以切换字符串的字母?
for (k = 0; k<wordsize; k++){
for(t=0; t<8, t++){
if (userword[k] != letterstest[t])
return 0;
if (userword[k] == letterstest[t]){
switch (letterstest[t]){
//unsure what case would work here
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我觉得你误解了switch是什么.switch是一个选择结构,如if/ else.例如,这两个代码片段(通常)是等效的:
if(a == 0)
printf("%s\n", "zero");
else if(a == 1)
printf("%s\n", "one");
else if(a == 2)
printf("%s\n", "two");
else
printf("%s\n", "invalid");
switch(a)
{
case 0:
printf("%s\n", "zero");
break;
case 1:
printf("%s\n", "one");
break;
case 2:
printf("%s\n", "two");
break;
default:
printf("%s\n", "invalid");
}
Run Code Online (Sandbox Code Playgroud)
我不完全清楚你要做什么,但当你写"如果他们匹配切换匹配字母的字母[t]与0,所以它不能再次匹配",听起来你的意思是:
if (userword[k] == letterstest[t]){
letterstest[t] = '\0';
}
Run Code Online (Sandbox Code Playgroud)
编辑补充说:好的,我想我现在明白你要做的是:
userword[0]和userword[wordsize-1]介于两者之间会出现letterstest[0]和letterstest[7].userword[0]和之间多次出现userword[wordsize-1],那么它必须至少出现在letterstest[0]和之间letterstest[7].那就是-之间的字符letterstest[0],并letterstest[7]只能算一次.letterstest[0]和letterstest[7],只要最后的答案是正确的; 也就是说,您不需要保留内容letterstest.'\0'不会出现在userword[0]和之间的任何地方userword[wordsize-1],因此可以用作"虚拟"值,意思是"不匹配".那是对的吗?
如果是这样,那么你可以写:
for(k = 0; k < wordsize; k++) {
for(t = 0; t < 8; t++) {
if(userword[k] == letterstest[t]) {
letterstest[t] = '\0'; /* don't let letterstest[t] count again */
break; /* O.K., we've matched userword[k], we can move on */
}
}
if(t == 8) /* we reached letterstest[8] without finding a match */
return 0;
}
return 1; /* we found a match for each character */
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
125 次 |
| 最近记录: |