永发信息网

for语句循环

答案:2  悬赏:40  手机版
解决时间 2021-04-04 20:54
  • 提问者网友:咪咪
  • 2021-04-04 05:41
若i和k都是int类型变量,有以下for语句:for(i=0,k=-1;k=1;k++)printf("*****\n");下面关于语句执行情况的叙述中正确的是(  )。

A.
循环体执行两次
B.
循环体执行一次
C.
循环体一次也不执行
D.
构成无限循环

参考答案给的D,为什么,
最佳答案
  • 五星知识达人网友:街头电车
  • 2021-04-04 06:34
因为k=1是一个赋值语句,永远为真。应改为k==-1
全部回答
  • 1楼网友:迟山
  • 2021-04-04 08:11
为什么这个循环的作用是5次后退出程序?不要说是因为i<=5之类的,我要的是详解,通俗点的解释。。 好。。我来给您煞笔式的解释。。 for 语句的功能。。 for( i = 1; i <= 5; i++),当执行到这里的时候,系统对 i 赋值,i = 1,不要问为什么会先赋值。。 然后执行中间的逻辑表达式,i <= 5,也就是 1 <= 5,表达式成立。。所以,执行循环体中的代码。。 也就是这一坨。。         printf("[1] select crisps \n");
    printf("[2] select popcorn \n");
    printf("[3] select chocolate \n");
    printf("[4] select cola \n");
    printf("[0] exit \n"); 
    printf("enter choice: ");
    scanf("%d", &choice);
    if(choice == 0) break; 
    switch (choice) {    
    case 1: price=3.0; break;
    case 2: price=2.5; break;
    case 3: price=4.0; break;
    case 4: price=3.5; break;
    default: price=0.0; break;
    }
    printf("price = %0.1f\n", price); 执行完这一坨之后,再执行 for 括号中的 i++ 语句,这时候 i=2。。 这样就执行了1次循环。。 接下来,跳到中间的逻辑表达式再比较。。(赋值语句不用执行了,那只是for循环开始的时候执行的,而且只执行一次),i <= 5,也就是 2 <= 5,表达式成立,所以,执行循环体中的代码。。 也就是这一坨。。         printf("[1] select crisps \n");
    printf("[2] select popcorn \n");
    printf("[3] select chocolate \n");
    printf("[4] select cola \n");
    printf("[0] exit \n"); 
    printf("enter choice: ");
    scanf("%d", &choice);
    if(choice == 0) break; 
    switch (choice) {    
    case 1: price=3.0; break;
    case 2: price=2.5; break;
    case 3: price=4.0; break;
    case 4: price=3.5; break;
    default: price=0.0; break;
    }
    printf("price = %0.1f\n", price); 执行完这一坨之后,再执行 for 括号中的 i++ 语句,这时候 i=3。。 这样就执行了2次循环。。 接下来,跳到中间的逻辑表达式再比较。。(赋值语句不用执行了,那只是for循环开始的时候执行的,而且只执行一次),i <= 5,也就是 3 <= 5,表达式成立,所以,执行循环体中的代码。。 也就是这一坨。。         printf("[1] select crisps \n");
    printf("[2] select popcorn \n");
    printf("[3] select chocolate \n");
    printf("[4] select cola \n");
    printf("[0] exit \n"); 
    printf("enter choice: ");
    scanf("%d", &choice);
    if(choice == 0) break; 
    switch (choice) {    
    case 1: price=3.0; break;
    case 2: price=2.5; break;
    case 3: price=4.0; break;
    case 4: price=3.5; break;
    default: price=0.0; break;
    }
    printf("price = %0.1f\n", price); 执行完这一坨之后,再执行 for 括号中的 i++ 语句,这时候 i=4。。 这样就执行了3次循环。。 接下来,跳到中间的逻辑表达式再比较。。(赋值语句不用执行了,那只是for循环开始的时候执行的,而且只执行一次),i <= 5,也就是 4 <= 5,表达式成立,所以,执行循环体中的代码。。 也就是这一坨。。         printf("[1] select crisps \n");
    printf("[2] select popcorn \n");
    printf("[3] select chocolate \n");
    printf("[4] select cola \n");
    printf("[0] exit \n"); 
    printf("enter choice: ");
    scanf("%d", &choice);
    if(choice == 0) break; 
    switch (choice) {    
    case 1: price=3.0; break;
    case 2: price=2.5; break;
    case 3: price=4.0; break;
    case 4: price=3.5; break;
    default: price=0.0; break;
    }
    printf("price = %0.1f\n", price); 执行完这一坨之后,再执行 for 括号中的 i++ 语句,这时候 i=5。。 这样就执行了4次循环。。 接下来,跳到中间的逻辑表达式再比较。。(赋值语句不用执行了,那只是for循环开始的时候执行的,而且只执行一次),i <= 5,也就是 5 <= 5,表达式成立,所以,执行循环体中的代码。。 也就是这一坨。。         printf("[1] select crisps \n");
    printf("[2] select popcorn \n");
    printf("[3] select chocolate \n");
    printf("[4] select cola \n");
    printf("[0] exit \n"); 
    printf("enter choice: ");
    scanf("%d", &choice);
    if(choice == 0) break; 
    switch (choice) {    
    case 1: price=3.0; break;
    case 2: price=2.5; break;
    case 3: price=4.0; break;
    case 4: price=3.5; break;
    default: price=0.0; break;
    }
    printf("price = %0.1f\n", price); 执行完这一坨之后,再执行 for 括号中的 i++ 语句,这时候 i=6。。 这样就执行了5次循环。。 接下来,跳到中间的逻辑表达式再比较。。(赋值语句不用执行了,那只是for循环开始的时候执行的,而且只执行一次),i <= 5,也就是 6 <= 5,表达式不成立,所以,for 循环结束。。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯