humanint 2016-11-11 09:33 采纳率: 100%
浏览 2747

c语言switch中分号(;)和冒号(:)

今天看c primer plus,看到这样一个程序
// vowels.c -- uses multiple labels
#include
int main(void)
{
char ch;
int a_ct, e_ct, i_ct, o_ct, u_ct;

a_ct = e_ct = i_ct = o_ct = u_ct = 0;

printf("Enter some text; enter # to quit.\n");
while ((ch = getchar()) != '#')
{
    switch (ch)
    {
        case 'a' :
        case 'A' :  a_ct++;
            break;
        case 'e' :
        case 'E' :  e_ct++;
            break;
        case 'i' :
        case 'I' :  i_ct++;
            break;
        case 'o' :
        case 'O' :  o_ct++;
            break;
        case 'u' :
        case 'U' :  u_ct++;
            break;
        default :   break;
    }                    // end of switch
}                        // while loop end
printf("number of vowels:   A    E    I    O    U\n");
printf("                 %4d %4d %4d %4d %4d\n",
       a_ct, e_ct, i_ct, o_ct, u_ct);

return 0;

}
我照着这个输入进visual studio2015community,无法运行,提示我把所有case中的第二个标签的(:)全改成(;)
也就是把
switch (ch)
{
case 'a' :
case 'A' : a_ct++;
break;
case 'e' :
case 'E' : e_ct++;
break;
case 'i' :
case 'I' : i_ct++;
break;
case 'o' :
case 'O' : o_ct++;
break;
case 'u' :
case 'U' : u_ct++;
改成
switch (ch)
{
case'a':
'A'; a_ct++;
break;
case'e':
'E'; e_ct++;
break;
case'i':
'I'; i_ct++;
break;
case'o':
'O'; o_ct++;
break;
case'u':
'U'; u_ct++;
break;
改了之后就可以完美编译调试,
我找到书上的源代码(也就是这个问题最上面那段代码),编译完美通过了,但是调试就出现这个
图片说明
难道是书上印错了吗,还是visual studio的问题?

  • 写回答

5条回答 默认 最新

  • Zedee 2016-11-11 09:41
    关注

    你这样改完应该是不能“完美”调试的,输入大写字母时应该得不到正确结果吧
    可以试试改成这样

     witch (ch)
        {
            case 'a' :
                            a_ct ++;
                            break;
            case 'A' :  
                            a_ct++;
                break;
    
                            下略
    
    评论

报告相同问题?

悬赏问题

  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮