gpt4 book ai didi

c - Switch Case帮助C

转载 作者:太空宇宙 更新时间:2023-11-04 06:04:50 24 4
gpt4 key购买 nike

我正在尝试将字符串字母与另一组字母进行比较,检查 userword[k] 中的第一个字母与 lettertest[t] 中的所有字母,如果它们匹配,则将 lettertest[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
}
}
}
}

最佳答案

我认为您误解了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");
}

我不完全清楚你想做什么,但是当你写“如果他们匹配将 lettertest[t] 的匹配字母切换为 0,所以它不能再次匹配”,这听起来像是你的意思这个:

    if (userword[k] == letterstest[t]){
letterstest[t] = '\0';
}

编辑添加: 好吧,我我现在明白你想做什么了:

  • 您想确认 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 */

关于c - Switch Case帮助C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12430068/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com