|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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 ;
- }
- }
- }
复制代码
|
|