C语言 以下程序段的输出结果是多少

作者&投稿:太伊 (若有异议请与网页底部的电邮联系)
C语言 以下程序段的输出结果是多少??~

第一个是100 var 取b得地址 所以*var = b = 100 , 所以b = 110, 所以*var = 110
第二个,因为== 的优先级高于=的优先级,所以先执行 getchar == 'A', 输入A后,二者相等,返回1
所以ch = 1
p = a ,就是取a数组的第一个元素的地址,所以*p = a[0] = 5;

*p++ 这儿优先级相等,结合性为从右至左,且p++只在表达式结束后才自增, 所以就等于*p++ = a[0] = 5

同理和上面一样, ++会在表达式结束后自增,(*p)++ = a[0]++ = 5

我用x86 32位 Linux的GCC编译器编译
结果:
28 70
分析:
main()
{int x, i;
for(i=1; i<=100; i++) //变量i,1到100循环
{ x=i; //x被赋值 x=i
if(++X%2==0) //x先被加一 x=i+1 判断此时x的值是否被2整除
if(++X%3==0) //x先被加一 x=i+2 判断此时x的值是否被3整除
if(++X%7==0) //x先被加一 x=i+3 判断此时x的值是否被7整除
printf("%d ",X); //如果以上判断全通过,即i+1, i+2, i+3的值分别被2,3,7整除,则打印x(此时x的值等于i+3)
}
printf("
");
}

这个题主要考 “x++” 与 “++x”的区别
x++,先取出x的值,再x=x+1
++x,先x=x+1,再取出x的值(与(x=x+1)效果一致)

ch的值是(    65  )。

While(ch=getchar()==’A’);
5、int a[4]={5,3},*p;p=a;此时*p的值是(3      ),*p++的值是(      6     ),(*p)++的值是(     5    )。

这是编译器运行出来的结果。



printf输出:110

第一括号:1;

第二括号:5

第三括号:5

第四括号:5

最后的三个括号填的值是有歧义的,比如要是只是那个条件,然后分别问:

int a[4]={5,3},*p;p=a;此时*p的值是(      )

int a[4]={5,3},*p;p=a;此时*p++的值是(      )

int a[4]={5,3},*p;p=a;此时(*p)++的值是(      )

就应该是楼下的答案:5 5 5



110
1
5
5
5
注意++后置

110,1,
5,3.6


正阳县17349745120: C语言 以下程序段的输出结果是多少?? -
谏顾熊胆: 第一个是100 var 取b得地址 所以*var = b = 100 , 所以b = 110, 所以*var = 110 第二个,因为== 的优先级高于=的优先级,所以先执行 getchar == 'A', 输入A后,二者相等,返回1 所以ch = 1 p = a ,就是取a数组的第一个元素的地址,所以*p = a[0] = 5;*p++ 这儿优先级相等,结合性为从右至左,且p++只在表达式结束后才自增, 所以就等于*p++ = a[0] = 5 同理和上面一样, ++会在表达式结束后自增,(*p)++ = a[0]++ = 5

正阳县17349745120: 以下才C语言程序段的输出结果是? -
谏顾熊胆: 1.如果是printf("%s\n",a),应该是every 2.c=h 3.2 4.1 2

正阳县17349745120: c语言以下程序的输出结果是
谏顾熊胆: 6以下程序的输出结果是 ??? main() {int x=10,y=20,t=0; if(x==y)t=x;x=y;y=t; printf("%d,%d\n",x,y);} 输出结果为20,0 main() { int x=10,y=20,t=0; if(x==y) //x=10,y=20 此时x...

正阳县17349745120: C语言基础. 下列程序段的输出结果是 - ----. -
谏顾熊胆: 你将printf语句改成如下即可 printf("x=%f,y=%d",x,y); 既然x是float就应该用%f y是int就应该用%d

正阳县17349745120: C语言,以下程序的输出结果是? -
谏顾熊胆: 死循环啊,结果是:01234 省略 ·

正阳县17349745120: c语言中:以下程序的输出结果是什么:x=?,y=?,z=? -
谏顾熊胆: while(x++!=(y-=1)) 第一次循环,x = 3, y-1 = 5,符合条件,进入循环 { z++; z = 1 if(y<x) //y = 5,x = 4,因此不执行break break; } 第二次循环 while(x++!=(y-=1)) x = 4,y-1=4,两者相等了,因此不进入循环.循环结束,但是X++和y-=1依然生效. { z++; if(y<x) break; } 最后结果为x=5,y=4,z=1

正阳县17349745120: c语言 以下程序的输出的结果是 -
谏顾熊胆: static int x=1; 表示x是一个静态变量,它的值将被保存在静态区.通俗的说就是不论你调用incre();函数多少次,x只初始化一次,并且,其值是有保存的,即下次使用时是在上一次的基础上使用的. 循环时.i=1,调用一次incre();此时x=2,输出2. i=2,再调用一次incre();此时x并没有被再次复值,其值仍然是2,输出为2*3=6. i=3,退出循环. 所以答案为c.

正阳县17349745120: C语言以下程序的输出结果为( ) -
谏顾熊胆: 程序的功能是是将字符串str2连接到字符串str1的后面,并输出连接后的字符串str1因此输出结果为ComputerLanguage

正阳县17349745120: c语言 以下程序运行后的输出结果是? 请详细说明 -
谏顾熊胆: 运行结果:13715 过程:i = 1时, n[1] = n[0] * 2 + 1 运算完得到:n[] = {0,1,0,0,0} 打印输出 n[1] i = 2时, n[2] = n[1] * 2 + 1 运算完得到:n[] = {0,1,3,0,0} 打印输出 n[2] i = 3时, n[3] = n[2] * 2 + 1 运算完得到:n[] = {0,1,3,7,0} 打印输出 n[3] i = 4时, n[4] = n[3] * 2 + 1 运算完得到:n[] = {0,1,3,7,15} 打印输出 n[4] n[] = {0,0,0,0,0}; 与 n[5] = {0,0,0,0,0};是一个意思.

正阳县17349745120: C语言问题 以下程序的输出结果是# include main(){ int a=2,c=5; printf("a=%%d,b=%%d\n",a,c); }A) a=%2,b=%5 B) a=2,b=5 C) a=%%d,b=%%d D) a=%d,b=... -
谏顾熊胆:[答案] 这是一个优先集的问题 %%这个最终的结果是% 他比%d优先 所以显然a=%%d就等于a=%d. 因此显然选的是D

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网