C语言题目 1.下面程序的运行结果是( )

#include<stdio.h>
int main( )
{ int y=2,a=1;
while(y- -!=-1)
{ do{a * =y; a++;} while(y- -); }
printf(“%d,%d,a,y);
return 0
}

其中有不少小的错误,作为程序它是不能运行的。

#include<stdio.h>
int main( )
{ int y=2,a=1;
while(y--!=-1)
{ do{a *=y; a++;} while(y--); }
printf("%d,%d",a,y);
return 0;
}

运行后的输出是:

1,-2

分析运行过程:

y=2,a=1;

判断,为真,y变为1

进入do循环:

a=1*1=1; a++变为2

内循环判断y--为真,y变为0;

再次内循环:

a=2*0=0; a++变为1

内循环判断y--为假,y变为-1;

外循环判断为假,y变为-2;

所以,最后的输出是1,-2

温馨提示:内容为网友见解,仅供参考
第1个回答  2019-04-01
C语言中 -1<=i<1 这样的语句是无法达到你要的效果的,对于这个句子,C语言是这样处理的: (-1<=i)<1 (1) 这样的话,-1<=i为真,所以这个表达式的值为1,也就是说(1)这个表达式等价于(1<1)然后这个式子为假,所以不会进入该循环,所以i没有发生变化,也不会输出i,所以答案为-1 如果for循环写成这样:for (a=1,i=-1;-1<=i&&i<1;i++) 那么题主你的答案就对了。追问

什么东西啊!深刻表示不采纳

本回答被网友采纳
第2个回答  2019-04-02

#include<stdio.h>
int main(void)

     int y=2,a=1;
     while(y--!=-1)
   { 
    do{a*=y; a++;} 
    while(y--); 
    }

printf("%d,%d",a,y);
 system("pause");
return 0;
}

追问

我要的是过程

追答

你应该是不懂 while语句和do while 语句的用法。
++y 和 --y都是在 先进行自加或自减后,在进入while循环中判断。
y++和 y--是先进行while循环中判断后,在对y的值进行加减。
后面是我的思路你大概看下
while语句中的内容如果成立了,则执行while循环,不成立结束while循环,。y=2,一开始while不等于-1.所以循环,y自减为1.执行后面语句。a=1x1=1; ++后a=2。 y不等于0,所以要循环,y自减为0.后执行a=1x0=0.a自加为1.因为y=0所以不执行do{}里面的循环,y自减后y=-1.在执行whiel再循环重新判断-1等于-1所以不循环,y自减为-2.
最后输出a=1,y=-2

第3个回答  2019-04-03

第4个回答  2019-04-02
运行结果是:1,-2追问

为什么,过程可以写一下么,或者我做不出来的关键步骤,麻烦您了

你答案对了

请问,下面程序的运行结果是( ).#include <stdio.h> main() { int a...
初始化a = 1,b =10;do是先执行,所以a = 2 ,b = 9;while(b--<0),因为是后置--,所以先判断b<0,为假,所以退出循环。b再自减,b=8 所以 a=2,b=8

C语言 以下程序的运行结果为( ) void fun(int n) { if(n) fun(n-1...
先递归,再打印,当n为0的时候结束打印,但0还是会执行后续的输出 于是是从0打印到5 选c

C语言,以下程序运行的结果是什么,麻烦详细解释一下
{ int k;char c[2];}a;a.k=-7;printf("%d,%d\\n",a.c[0],a.c[1]);return 0;} 解释 :联合体共用存储空间。int型占4个字节,char型占一个字节,因此a的内存分布如下图 整型数-7的十六进制表示为0xfffffff9 char[0] = 0xf9 \/\/转为十进制-7 char[1] = 0xff \/\/转为十进制...

C语言中,下列程序执行后的输入结果是___ #define MA(x) x*(x-1) m...
define MAX(X) X,在编译时候,只做简单替换。比如说 在main()函数中,int x=MAX(a+b)*MAX(a+b),c编译器在编译的时候,将MAX替换,变成a+b*a+b。

C语言 分析下列程序的运行结果
1、输出为:1 if条件语句中,当()中的值为零时,条件为假,非零时条件为真;由于逻辑运算2&&3结果为1,故条件为真,程序执行a=1语句;最终输出为1 2、输出为:7 运行switch(1)时,将执行case(1)语句,并接着往下执行直至遇到break,或者整个switch语句结束 所以最终b=1+1+2+3=7 3、...

下列程序执行的结果是() a=1;b=2;c=3; while(a<b<c) { t=a;a=b;b=...
先说条件:a<b<c,注意:<的结合性自左向右,而a<b条件为真。然后说下C语言逻辑值的表示:真为1,假为0。所以a<b的值为1,于是a<b<c化为1<c即真。最后t=a;a=b;b=t;是实现两个数相互交换的典型,所以a=2,b=1,而c--结果为2 所以最后输出结果为2,1,2....

15.写出下面程序的运行结果___ #include <stdio.h> main() { int a...
1.a= b+ c 所以表达式值为非零,为真,执行printf ("###\\n");2.自增运算符后缀,所以先引用,后自增,m为2,m>2为假,然后m自增一值为3,执行else部分,m+2=5 7.注意是x=2 ,是=,赋值号,也就是x被赋值为2,表达式非零,为真执行y= y+2;8.i为10,所以到case 10部分i+=1;i值为11...

以下运行程序后的输出结果是#include<stdio.h>main(){int x=1,y=1...
首先指出程序中的三处错误,第一个是int m n中间应该有逗号,第二个是swtich拼写有错误,第三个是打印输入语句printf("x=%d,y=%d",x,y)有误。修正后程序的运行结果是:x=6,y=6。代码运行结果如下图所示:程序运行过程解析:1、完成变量的赋值,其中有x=1,y=1,m=1,n=1。2、执行第一...

C语言题目 分少是少,诚心请教,麻烦告诉下,看看自己选的是对的吗?望请...
1、c语言规定:在一个源程序中,main函数的位置 c A)必须在最开始 B)必须在系统调用的库函数的后面 C)可以任意 D)必须在最后 2、下面程序的运行结果是___d_。main(){struct cmplx {int x;int y;}cnum[2]={1,3,2,7};printf(”%d\n”,cnum[0].y\/cnum[0].x *cnum[l].x)...

请问下面代码的运行结果是什么呀?
这是一个打印九九乘法表的程序,你给的C语言程序有一些问题,改正后的程序和运行结果如下

相似回答