求解C语言程序输出题,如图,谢谢。

求解程序输出题,如图,谢谢。希望能详细帮我诠释和讲解哈,再次感谢。
最新回答
南故归

2024-11-30 07:35:26

结果:a=-1
解析:本题目主要考了if-else语句,
#include<stdio.h>
void main(){
int a=100, x=10, y=20, ok1=5, ok2=0;
if(x<y) /*10<20满足条件,执行下边的*/
if(y!=10) /*20不等于10,满足条件,继续执行*/
if(!ok1) /*对5取反,那么是0,那么不执行下边,而执行else*/
a=1;
else /*执行这里*/
if(ok2) /*ok2是0,那么不执行了*/
a=10;
a=-1;/*执行这里,那么结果出来了*/
printf("a=%d",a); /*最终结果是 : a=-1*/
}
这个题目不难,希望对你有所帮助。
追问

真心有用。我想继续请教请教,还请多多相助。有几题:

1.

2.

3.

谢谢。

追答
第一题:
结果:3,1,-1,
解析:
当i=5,那么switch语句不执行,i--两次,i=3
当i=3,那么switch语句不执行,i--两次,i=1
当i=1,那么switch语句不执行,i--两次,i=-1,执行完毕
其实这个题目和switch语句一点关系都没有,不用理它。

第二题:
结果:a=16, b=60;
解析:本题目注意一点while(a=14),注意a=14,这个地方不是判断,而是直接赋值。
执行过程如下:
S1、a=10,y=0,执行循环后a=14(注意赋值语句),y=12;
S2、a=14+2=16,y=12,执行循环后a=14,y=16+12=28;
S3、a=16,y=28,执行循环后a=14,y=34;
S4、a=16,y=60,此时60>50,直接跳出循环,那么得到结果。
结果为:a=16, b=16

第三题:
结果为:x=12,y=4
解析:本题注意continue语句,它是直接跳过循环体后边的内容,然后进入下一次循环。所以执行过程如下:
S1、x=1,y=1, x%3==1满足,那么x=1+5=6,直接进入下一次循环;
S2、x=6,y=2,x对3取余数为0,不满足x%3==1,那么x=6+3=9,进入下一次循环;
S3、x=9,y=3,x对3取余数为0,不满足x%3==1,那么x=9+3=12,进入下一次循环;
S4、此时x=12>10,所以直接跳出循环。
综上所述,最终结果为:x=12,y=4
追问

记得去吃晚饭,辛苦啦。偶还有一题:

谢谢。

追答
#include<stdio.h>
main(){
    char c1,c2;
    int m,n,i;
    for(i=1;i<=3;i++){/*注意标点符号,上图中的写法是无法编译通过的*/
        c1=getchar();
        c2=getchar();
        m=c1-'0';
        n=m*10+(c2-'0');
        printf("%d\n",n);/*如果printf放到循环外边,那就只能打印最后一次输入的结果*/
    }
    
}

这个题目答案根据输入的字符来输出结果。

简单解析:本题目涉及到字符常量的问题,字符常量很简单,说白了就是C语言中的char类型的数据都会对应一个值,比如字符'0'的值为48。举个例子来解释这句话:

    

printf("%d\n",'c');/*打印的结果应该为48*/

如果理解了上边这点,那么本程序就很简单了,把左右字符都当做数字运算就OK了!

酒色清浅

2024-11-30 07:45:06

答案为-1,
#include<stdio.h>
void main(){
int a=100, x=10, y=20, ok1=5, ok2=0;
if(x<y) /*10<20满足条件,执行下边的*/
if(y!=10) /*20不等于10,满足条件,继续执行*/
if(!ok1) /*对5取反,那么是0,那么不执行下边,而执行else*/
a=1;
else /*执行这里*/
if(ok2) /*ok2是0,那么不执行了*/
a=10;
a=-1;/*执行这里,那么结果出来了*/
printf("a=%d",a); /*最终结果是 : a=-1*/
}
追问

谢谢。还想大神请教两道写程序题:

柠萌妹子

2024-11-30 07:44:44

输出为a=-1,将if语句的括号加上就一目了然了。
#include <STDIO.H>
void main()
{
int a = 100, x= 10, y = 20, ok1 = 5, ok2 = 0;
if(x < y)
{
if(y != 10)
{
if(!ok1)
{
a = 1;
}
else
{
if(ok2)
{
a = 10;
}
}
}
}
a = -1;
printf("a=%d", a);
}
浪菊怪哟

2024-11-30 07:41:24

输出:a=-1

if(x<y) //满足条件
if(y!=10) //满足条件
if(!ok1) //不满足条件,跳转至else
a = 1;
else
if(ok2) //不满足条件
a = 10;
a = -1;//执行
printf("%d",a);