|  | 
 
| 
各位鱼油好:
x
马上注册,结交更多好友,享用更多功能^_^您需要 登录 才可以下载或查看,没有账号?立即注册  我想实现的是当输入一个负数,啥都不做。
 当输入一个正数的时候,从这个正数本身开始打印,让它递减一,直到变成0。
 编译是通过了,但是无法运行。
 我猜测是作用域的问题:switch语句对n进行判断,结果又在switch语句中对n进行操作。希望得到鱼油更权威的解答,谢谢亲。
 代码:
 
 复制代码#include <stdio.h>
#include <stdlib.h>
int main(void)
{
    int n;
    printf("please input an integer :");   scanf("%d",&n);
   switch(n >= 0)
    {
        case 0 : printf("error");   break;
        case 1 : {do{printf("%3d",n);
                              n--;
                              }while(n >= 0);
                       }
                       break;
    }
    return 0;
}
 
 本帖最后由 jackz007 于 2019-3-7 18:37 编辑 
     不是变量作用域的问题,而是 switch() ... case 语句的用法和逻辑粗了问题 
 复制代码#include <stdio.h>
#include <stdlib.h>
int main(void)
{
        int n                                     ;
        printf("please input an integer :")       ;
        scanf("%d" , & n)                         ;
        if(n >= 0) {                                // 原语句 switch(n >= 0) 用法错误,判断 n 值应该添加 if 条件判断 
                switch(n) {                         // 原语句 switch(n >= 0) 用法错误 
                case 0 : 
                        printf("error")           ;
                        break                     ;
                default :                           // 原语句 case 1 : 不符合楼主意图
                        do {
                                printf("%3d" , n) ;
                                n --              ;
                        } while(n >= 0)           ;
                        break                     ;
                }
        }
}
 | 
 |