我正在尝试创建一个switch语句,它将一个单词输入一个数组,然后通过switch语句抛出每个字母,并根据它所在的字母为每个字母分配一个点,并给出该单词的最终点值,然后我似乎无法使arrays部分正确。 任何帮助,将不胜感激!
int main(){ int letter_points = 0; char word[7]; int word_length = 7; int i; printf("Enter a Wordn"); scanf("%s", word); for(i = 0; i < word_length; i++){ switch(word){ //1 point case 'A': case 'E': case 'I': case 'L': case 'N': case 'O': case 'R': case 'S': case 'T': case 'U': letter_points++; break; //2 points case 'D': case 'G': letter_points += 2; break; //3 points case 'B': case 'C': case 'M': case 'P': letter_points += 3; break; //4 points case 'F': case 'H': case 'V': case 'W': case 'Y': letter_points += 4; break; //5 points case 'K': letter_points += 5; break; //8 points case 'J': case 'X': letter_points += 8; break; //10 points case 'Q': case 'Z': letter_points += 10; break; } } printf("%dn", letter_points); return; }
试试这个
switch(word[i]){
在switch语句中。 就目前而言,即使您在数组的范围内进行迭代,也不会测试数组中的每个元素。 话虽如此,我会在另一个答案中采用Kerrek SB建议的方法。 这更整洁,更紧凑。
拥有查找数组可能会更快:
int const letter_score[26] = { 1, 2, 1, 3, ..., 10 }; /* key: ABCDZ */ score += letter_score[c - 'A']; // or "toupper(word[i]) - 'A'"
警告:这需要一种编码,其中大写字母是连续排列的,例如Unicode或ASCII。
变量word
是一个数组,但您想要switch
每个字符。 因此,您需要:
switch(word[i])
在C中,您不能在switch
使用数组(以及case
表达式)。 此外,传递给switch()
类型和每种case
指定的类型必须匹配。 所以你能做的最多就是打开一个角色。 你几乎把它弄好了,除了你把整个arrays都传递给了开关。 使用index来引用字符。 例如:
switch (word[i]) { ... }
你有word作为size7的数组,你不能打开数组,你必须在数组的每个字符上swicth所以使用:switch(word [i])
以上就是c/c++开发分享使用数组在C中创建switch语句?相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/573624.html