以下程序的输出结果是 main() { int a[4][4]={{1,3,5},{2,4,6},{3,5,7}}; printf("%d%d%d%d",a[0][3],a[1

2024-05-14

1. 以下程序的输出结果是 main() { int a[4][4]={{1,3,5},{2,4,6},{3,5,7}}; printf("%d%d%d%d",a[0][3],a[1

正确答案是:A
解析:在按题目中的语句对数组a[4][4]赋值后,数组中的各个元素值如下:
第一行:1,3,5,0
第二行:2,4,6,0
第三行:3,5,7,0
第四行:0,0,0,0
因此,输出的元素a[0][3]=0;a[1][2]=6;a[2][1]=5;a[3][0]=0。故选项为A。

以下程序的输出结果是 main() { int a[4][4]={{1,3,5},{2,4,6},{3,5,7}}; printf("%d%d%d%d",a[0][3],a[1

2. 有以下程序: main( ) { int a[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],*q=p-2; printf("%d\n",*p+*q); }


emmm,一楼的回答是对的。楼主看一下*q=p-2,你是不是把这个条件抄错了?习题上是不是*q=p+2
①*p=&a[3],所以*p=4(这个不解释了)
②A我们明确一个概念,就是a[10]这串位置是连续的。
   B假设i=*p(i为p所指的单元格的值)。*p=4,即i=&a[3]=4
   Cp-2即p所在的地址往前推2单元格;即i所指的值往前推2单元格,即i=&a[3]往前推2单元格,即&a[1]=2
综上所述4+2=6

3. main() { int a[]={8,2,9,4,1},*p; p=a; *(p+2)+=2; printf("%d %d",*p,*(p+2));} 求输出结果,详细解及思

楼主好!
 此题的完整写法是:
#include 
void main()
{
 int a[]={8,2,9,4,1},*p;
 p=a;
 *(p+2)+=2;
 printf("%d %d",*p,*(p+2));
}
输出的结果是8 11这两个数。
  首先你要知道指针的含义,和数组中数组名的作用。
 第一:你定义了一个指针p,并且把a的值赋予给p,这就相当于把一维数组a[5]的首地址赋予给哦指针p,因为数组名a就相当于数组的首地址。所以p指向数组a[5]的首元素,既p指向a[0],同理可以知道*p=a[0]=8;

 第二:p指向a[0],则*p=a[0],
   那么p+1指向a[1],则*(p+1)=a[1]
   依此推下去,
所以题目中的*(p+2)+=2;就相当于  a[2]+=2,也就相当于  a[2]=a[2]+2=9+2=11
这样数组中a[2]的值就变为11保存了起来。

综上,你最后输出是*p和*(p+2),就相当于数出a[0],a[2],所以为8,11.

 不知道楼主是否可以理解!
  嘿嘿

main() { int a[]={8,2,9,4,1},*p; p=a; *(p+2)+=2; printf("%d %d",*p,*(p+2));} 求输出结果,详细解及思

4. main(){int a[]={2,4,6,8,10},y=1,x,*p;p=a;printf("

答案是19
过程
x=0时,*(p+x)=*p=a[1]=4
所以y=1+4=5
x=1时,*(p+x)=*(p+1)=a[2]=6
所以y=5+6=11
x=2时,*(p+x)=*(p+2)=a[3]=8
所以y=11+8=19

5. 以下程序的输出结果是 main( ) { int a=12,b=12; printf("%d %d\n",--a,++b); }

程序输出的结果为a=11,b=13。
程序的执行过程:首先定义了a的值为12,b的值为12,然后执行我们的输出语句,我们输出的不是a和b的值,而是表达式“--a”和表达式“++b”的值,因为前缀的“++”和“--”都是先进行加一或者减一的操作,再输出。
所以说“--a”输出的结果为11,“++b”输出的结果为13。

扩展资料:
C语言的主要特点:
C语言是一种结构化语言,它有着清晰的层次,可按照模块的方式对程序进行编写,十分有利于程序的调试。
C语言的处理和表现能力都非常的强大,依靠非常全面的运算符和多样的数据类型,可以轻易完成各种数据结构的构建,通过指针类型更可对内存直接寻址以及对硬件进行直接操作。
1、简洁的语言,C语言包含的各种控制语句仅有9种,关键字也只有32 个,程序的编写要求不严格且以小写字母为主,对许多不必要的部分进行了精简。
2、具有结构化的控制语句,C语言是一种结构化的语言,提供的控制语句具有结构化特征,如for语句、if⋯else语句和switch语句等。可以用于实现函数的逻辑控制,方便面向过程的程序设计。
3、丰富的数据类型,C语言包含的数据类型广泛,不仅包含有传统的字符型、整型、浮点型、数组类型等数据类型,还具有其他编程语言所不具备的数据类型,其中以指针类型数据使用最为灵活,可以通过编程对各种数据结构进行计算。
4、丰富的运算符,C语言包含34个运算符,它将赋值、括号等均是作运算符来操作,使C程序的表达式类型和运算符类型均非常丰富。
5、代码具有较好的可移植性,C语言是面向过程的编程语言,用户只需要关注所被解决问题的本身,而不需要花费过多的精力去了解相关硬件,且针对不同的硬件环境。
在用C语言实现相同功能时的代码基本一致,不需或仅需进行少量改动便可完成移植,这就意味着,对于一台计算机编写的C程序可以在另一台计算机上轻松地运行,从而极大的减少了程序移植的工作强度。
“++”前缀自增、“--”前缀自减结合性为自左向右。
参考资料来源:百度百科-C语言

以下程序的输出结果是 main( ) { int a=12,b=12; printf("%d %d\n",--a,++b); }

6. 分析程序运算结果 main() { short int i=-4; printf("\n﹪d,﹪u,﹪x,﹪o \n",i,i,i,i); }

(1)补码是数据在计算机内部存放的一种格式,使用补码格式主要好处是可以将符号位和其它位统一处理,同时,减法也可按加法来处理(只如同代数,1-1 表示成1+(-1))。另外,两个用补码表示的数相加时,如果(符号位)有进位,则进位被舍弃。
(2)正数的补码就是它自己,负数的补码是对其自己逐位取反,但符号位(最高位)除外;然后整个数加1。
你可以复合一下你举的例子,不难理解上面2点

7. 以下程序的输出结果是 main() { int a=21,b=11; printf("%d\n",- -a+b,- -b+a); } 求解,万分感谢

输出结果:30
原理:
1.C语言的运行顺序大多都是自右向左(但是少数C语言编译软件的输出结果为31,它的运行顺序是自左向右,这里以VC++
6.0为例说明输出30的原因)。
2.先运行--b+a,根据运算顺序知道相当于(--b)+a,b先自减,即b=10,此表达式--b+a的值为31.
3.然后运行-
-a+b,相当于(--a)+b,a先自减,即a=20,此表达式-
-a+b的值20+10=30。
4.printf("%d\n",-
-a+b,-
-b+a);
输出第一个表达式的值,(printf函数输出顺序是自左向右)。

以下程序的输出结果是 main() { int a=21,b=11; printf("%d\n",- -a+b,- -b+a); } 求解,万分感谢

8. ​输出的结果是:int (*ptr)[5] = (int (*)[5])100; printf("%d",(int)( &(*(ptr + 1))[2]));

128.
int (*ptr)[5] = (int (*)[5])100; ——声明了一个指向有5个int元素的数组的指针,并初始化为十进制100,即ptr=100;ptr + 1就是100+(5*4)=120;*(ptr + 1)是将地址120中的数据取出,设为x(但要注意,x是长度为5的一维int数组的首元素地址);那么(*(ptr + 1))[2]就是x[2],即一维数组的第3个int元素;所以&(*(ptr + 1))[2]就是&x[2],即第3个元素的地址——前面已分析出x=120,x[2]的地址就是向后再移2个int长度即为128,所以&(*(ptr + 1))[2]是128;(int)( &(*(ptr + 1))[2])就好分析了,就是把128这个地址强制成int整数。最后,printf("%d",(int)( &(*(ptr + 1))[2]));以十进制形式输出为128!